git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@4998 6f19259b-4bc3-4df7-8a09-765794883524
		
			
				
	
	
		
			88 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			NASM
		
	
	
	
	
	
			
		
		
	
	
			88 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			NASM
		
	
	
	
	
	
| ;/** @file
 | |
| ;    IDT vector entry.
 | |
| ;  
 | |
| ;  Copyright (c) 2007 - 2008, Intel Corporation. <BR>
 | |
| ;  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.
 | |
| ;  
 | |
| ;**/
 | |
| 
 | |
|     .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
 | |
| 
 | |
| 
 |