git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@4998 6f19259b-4bc3-4df7-8a09-765794883524
		
			
				
	
	
		
			80 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			80 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
| #/**@file
 | |
| # IDT vector entry.
 | |
| #
 | |
| # Copyright (c) 2007 - 2008, 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.
 | |
| #
 | |
| #**/
 | |
| 
 | |
|     .text
 | |
|     .code32
 | |
| 
 | |
| 
 | |
|     .align  8
 | |
|     .globl  ASM_PFX(AsmGetVectorTemplatInfo)
 | |
|     .globl 	ASM_PFX(AsmVectorFixup)
 | |
| /*
 | |
| ;
 | |
| ;-----------------------------------------------------------------------
 | |
| ;  Template of IDT Vector Handlers. 
 | |
| ;
 | |
| ;-----------------------------------------------------------------------
 | |
| */
 | |
| @VectorTemplateBase:
 | |
|         pushl %eax
 | |
|         .byte 0x6a    #  push #VectorNum
 | |
| @VectorNum:
 | |
|         .byte 0
 | |
|         movl  CommonInterruptEntry, %eax
 | |
|         jmp   *%eax
 | |
| @VectorTemplateEnd:
 | |
| 
 | |
| 
 | |
| ASM_PFX(AsmGetVectorTemplatInfo):
 | |
|         movl  4(%esp), %ecx
 | |
|         movl  $@VectorTemplateBase, (%ecx)
 | |
|         movl  $(@VectorTemplateEnd - @VectorTemplateBase), %eax
 | |
|         ret
 | |
| 
 | |
| ASM_PFX(AsmVectorFixup):
 | |
|         movl  8(%esp), %eax
 | |
|         movl  4(%esp), %ecx
 | |
|         movb  %al, (@VectorNum - @VectorTemplateBase)(%ecx)
 | |
|         ret
 | |
| 
 | |
| /*
 | |
| ; 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: 
 | |
|         cli
 | |
| @@:
 | |
|         jmp   @@
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 |