Home | History | Annotate | Download | only in Ia32
      1 ;------------------------------------------------------------------------------
      2 ;
      3 ; Copyright (c) 2014, Intel Corporation. All rights reserved.<BR>
      4 ; This program and the accompanying materials
      5 ; are licensed and made available under the terms and conditions of the BSD License
      6 ; which accompanies this distribution.  The full text of the license may be found at
      7 ; http://opensource.org/licenses/bsd-license.php.
      8 ;
      9 ; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
     10 ; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
     11 ;
     12 ; Abstract:
     13 ;
     14 ;  Reset Vector Data structure
     15 ;  This structure is located at 0xFFFFFFC0
     16 ;
     17 ;------------------------------------------------------------------------------
     18 
     19     .model  tiny
     20     .686p
     21     .stack  0h
     22     .code
     23 
     24 ;
     25 ; The layout of this file is fixed. The build tool makes assumption of the layout.
     26 ;
     27 
     28     ORG     0h
     29 ;
     30 ; Reserved
     31 ;
     32 ReservedData         DD 0eeeeeeeeh, 0eeeeeeeeh
     33 
     34     ORG     10h
     35 ;
     36 ; This is located at 0xFFFFFFD0h
     37 ;
     38     mov     di, "AP"
     39     jmp     ApStartup
     40 
     41     ORG     20h
     42 ;
     43 ; Pointer to the entry point of the PEI core
     44 ; It is located at 0xFFFFFFE0, and is fixed up by some build tool
     45 ; So if the value 8..1 appears in the final FD image, tool failure occurs.
     46 ;
     47 PeiCoreEntryPoint       DD      12345678h
     48 
     49 ;
     50 ; This is the handler for all kinds of exceptions. Since it's for debugging
     51 ; purpose only, nothing except a deadloop would be done here. Developers could
     52 ; analyze the cause of the exception if a debugger had been attached.
     53 ;
     54 InterruptHandler    PROC
     55     jmp     $
     56     iret
     57 InterruptHandler    ENDP
     58 
     59     ORG     30h
     60 ;
     61 ; For IA32, the reset vector must be at 0xFFFFFFF0, i.e., 4G-16 byte
     62 ; Execution starts here upon power-on/platform-reset.
     63 ;
     64 ResetHandler:
     65     nop
     66     nop
     67 
     68 ApStartup:
     69     ;
     70     ; Jmp Rel16 instruction
     71     ; Use machine code directly in case of the assembler optimization
     72     ; SEC entry point relatvie address will be fixed up by some build tool.
     73     ;
     74     ; Typically, SEC entry point is the function _ModuleEntryPoint() defined in
     75     ; SecEntry.asm
     76     ;
     77     DB      0e9h
     78     DW      -3
     79 
     80 
     81     ORG     38h
     82 ;
     83 ; Ap reset vector segment address is at 0xFFFFFFF8
     84 ; This will be fixed up by some build tool,
     85 ; so if the value 1..8 appears in the final FD image,
     86 ; tool failure occurs
     87 ;
     88 ApSegAddress    dd      12345678h
     89 
     90     ORG     3ch
     91 ;
     92 ; BFV Base is at 0xFFFFFFFC
     93 ; This will be fixed up by some build tool,
     94 ; so if the value 1..8 appears in the final FD image,
     95 ; tool failure occurs.
     96 ;
     97 BfvBase     DD      12345678h
     98 
     99 ;
    100 ; Nothing can go here, otherwise the layout of this file would change.
    101 ;
    102 
    103     END
    104