git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10420 6f19259b-4bc3-4df7-8a09-765794883524
		
			
				
	
	
		
			89 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			NASM
		
	
	
	
	
	
			
		
		
	
	
			89 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			NASM
		
	
	
	
	
	
;/** @file
 | 
						|
;  
 | 
						|
;    IDT vector entry.
 | 
						|
;  
 | 
						|
;  Copyright (c) 2007 - 2008, Intel Corporation. All rights reserved.<BR>
 | 
						|
;  This program and the accompanying materials
 | 
						|
;  are licensed and made available under the terms and conditions of the BSD License
 | 
						|
;  which accompanies this distribution.  The full text of the license may be found at
 | 
						|
;  http://opensource.org/licenses/bsd-license.php
 | 
						|
;  
 | 
						|
;  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
 | 
						|
;  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 | 
						|
;  
 | 
						|
;**/
 | 
						|
 | 
						|
    .686p
 | 
						|
    .model  flat,C
 | 
						|
    .code
 | 
						|
 | 
						|
;
 | 
						|
;------------------------------------------------------------------------------
 | 
						|
;  Generic IDT Vector Handlers for the Host. 
 | 
						|
;
 | 
						|
;------------------------------------------------------------------------------
 | 
						|
 | 
						|
ALIGN   8
 | 
						|
PUBLIC  AsmGetVectorTemplatInfo
 | 
						|
PUBLIC  AsmVectorFixup
 | 
						|
 | 
						|
PUBLIC  AsmVectorFixup
 | 
						|
 | 
						|
@VectorTemplateBase:
 | 
						|
        push  eax
 | 
						|
        db    6ah       ; push #VectorNumber
 | 
						|
@VectorNum:
 | 
						|
        db    0
 | 
						|
        mov   eax, CommonInterruptEntry
 | 
						|
        jmp   eax
 | 
						|
@VectorTemplateEnd:
 | 
						|
 | 
						|
 | 
						|
AsmGetVectorTemplatInfo PROC
 | 
						|
        mov   ecx, [esp + 4]
 | 
						|
        mov   [ecx], @VectorTemplateBase
 | 
						|
        mov   eax, (@VectorTemplateEnd - @VectorTemplateBase)
 | 
						|
        ret
 | 
						|
AsmGetVectorTemplatInfo ENDP
 | 
						|
 | 
						|
 | 
						|
AsmVectorFixup PROC
 | 
						|
        mov   eax, dword ptr [esp + 8]
 | 
						|
        mov   ecx, [esp + 4]
 | 
						|
        mov   [ecx + (@VectorNum - @VectorTemplateBase)], al
 | 
						|
        ret
 | 
						|
AsmVectorFixup ENDP
 | 
						|
 | 
						|
 | 
						|
;---------------------------------------;
 | 
						|
; CommonInterruptEntry                  ;
 | 
						|
;---------------------------------------;
 | 
						|
; The follow algorithm is used for the common interrupt routine.
 | 
						|
 | 
						|
;
 | 
						|
; +---------------------+ <-- 16-byte aligned ensured by processor
 | 
						|
; +    Old SS           +
 | 
						|
; +---------------------+
 | 
						|
; +    Old RSP          +
 | 
						|
; +---------------------+
 | 
						|
; +    RFlags           +
 | 
						|
; +---------------------+
 | 
						|
; +    CS               +
 | 
						|
; +---------------------+
 | 
						|
; +    RIP              +
 | 
						|
; +---------------------+
 | 
						|
; +    Error Code       +
 | 
						|
; +---------------------+
 | 
						|
; +    Vector Number    +
 | 
						|
; +---------------------+
 | 
						|
 | 
						|
CommonInterruptEntry PROC 
 | 
						|
  cli
 | 
						|
 
 | 
						|
  jmp $
 | 
						|
CommonInterruptEntry ENDP
 | 
						|
 | 
						|
END
 | 
						|
 | 
						|
 |