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; 32ReservedData 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; 47PeiCoreEntryPoint 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; 54InterruptHandler PROC 55 jmp $ 56 iret 57InterruptHandler 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; 64ResetHandler: 65 nop 66 nop 67 68ApStartup: 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; 88ApSegAddress 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; 97BfvBase DD 12345678h 98 99; 100; Nothing can go here, otherwise the layout of this file would change. 101; 102 103 END 104