git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@3966 6f19259b-4bc3-4df7-8a09-765794883524
		
			
				
	
	
		
			96 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			NASM
		
	
	
	
	
	
			
		
		
	
	
			96 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			NASM
		
	
	
	
	
	
| ;-------------------------------------------------------------------------------
 | |
| ;
 | |
| ; Copyright (c) 2007, Intel Corporation
 | |
| ; All rights reserved. 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.
 | |
| ;
 | |
| ;
 | |
| ; Module Name:
 | |
| ;
 | |
| ;   IdtVectorAsm.asm
 | |
| ; 
 | |
| ; Abstract:
 | |
| ; 
 | |
| ;
 | |
| ;-------------------------------------------------------------------------------
 | |
| 
 | |
| 
 | |
|     .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
 | |
| 
 | |
| 
 |