; Abstract:\r
;\r
; Reset Vector Data structure\r
-; This structure is located at 0xFFFFFFC0\r
+; This structure is located at 0xFFFFF000\r
;\r
;------------------------------------------------------------------------------\r
\r
;\r
\r
ORG 0h\r
+\r
+;\r
+; 0xFFFFF000\r
+;\r
+; We enter here with CS:IP = 0xFF00:0x0000. Do a far-jump to change CS to 0xF000\r
+; and IP to ApStartup.\r
+;\r
+ApVector:\r
+ mov di, "AP"\r
+ jmp 0xF000:0xF000+ApStartup\r
+\r
+ TIMES 0xFC0-($-$$) nop\r
+\r
+;\r
+; This should be at 0xFFFFFFC0\r
+;\r
+\r
;\r
; Reserved\r
;\r
ReservedData: DD 0eeeeeeeeh, 0eeeeeeeeh\r
\r
- TIMES 0x10-($-$$) DB 0\r
+ TIMES 0xFD0-($-$$) nop\r
;\r
-; This is located at 0xFFFFFFD0h\r
+; This is located at 0xFFFFFFD0\r
;\r
mov di, "PA"\r
jmp ApStartup\r
\r
- TIMES 0x20-($-$$) DB 0\r
+ TIMES 0xFE0-($-$$) nop\r
;\r
; Pointer to the entry point of the PEI core\r
; It is located at 0xFFFFFFE0, and is fixed up by some build tool\r
jmp $\r
iret\r
\r
- TIMES 0x30-($-$$) DB 0\r
+ TIMES 0xFF0-($-$$) nop\r
;\r
; For IA32, the reset vector must be at 0xFFFFFFF0, i.e., 4G-16 byte\r
; Execution starts here upon power-on/platform-reset.\r
DW -3\r
\r
\r
- TIMES 0x38-($-$$) DB 0\r
+ TIMES 0xFF8-($-$$) nop\r
;\r
; Ap reset vector segment address is at 0xFFFFFFF8\r
; This will be fixed up by some build tool,\r
;\r
ApSegAddress: dd 12345678h\r
\r
- TIMES 0x3c-($-$$) DB 0\r
+ TIMES 0xFFC-($-$$) nop\r
;\r
; BFV Base is at 0xFFFFFFFC\r
; This will be fixed up by some build tool,\r