summaryrefslogtreecommitdiffstats
path: root/IntelFsp2Pkg/FspSecCore/Vtf0/Ia16/ResetVec.asm16
blob: f25de0206a5f118418cbb070a1643b4ceefa3de2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
;; @file
;  Reset Vector Data structure
;  This structure is located at 0xFFFFFFC0
;
; Copyright (c) 2014, Intel Corporation. All rights reserved.<BR>
; SPDX-License-Identifier: BSD-2-Clause-Patent
;
;;

BITS    16


;
; The layout of this file is fixed. The build tool makes assumption of the layout.
;

ORG     0x0
;
; Reserved
;
ReservedData:         DD 0eeeeeeeeh, 0eeeeeeeeh

 ;  ORG     0x10
 TIMES 0x10-($-$$) DB 0
;
; This is located at 0xFFFFFFD0h
;
    mov     di, "AP"
    jmp     ApStartup

 ;   ORG     0x20

 TIMES 0x20-($-$$) DB 0

; Pointer to the entry point of the PEI core
; It is located at 0xFFFFFFE0, and is fixed up by some build tool
; So if the value 8..1 appears in the final FD image, tool failure occurs.
;
PeiCoreEntryPoint:       DD      0x12345678

;
; This is the handler for all kinds of exceptions. Since it's for debugging
; purpose only, nothing except a deadloop would be done here. Developers could
; analyze the cause of the exception if a debugger had been attached.
;
InterruptHandler:
    jmp     $
    iret

  ;  ORG     0x30
 TIMES 0x30-($-$$) DB 0
;
; For IA32, the reset vector must be at 0xFFFFFFF0, i.e., 4G-16 byte
; Execution starts here upon power-on/platform-reset.
;
ResetHandler:
    nop
    nop

ApStartup:
    ;
    ; Jmp Rel16 instruction
    ; Use machine code directly in case of the assembler optimization
    ; SEC entry point relatvie address will be fixed up by some build tool.
    ;
    ; Typically, SEC entry point is the function _ModuleEntryPoint() defined in
    ; SecEntry.asm
    ;
    DB      0x0e9
    DW      -3

  ; ORG     0x38

 TIMES 0x38-($-$$) DB 0
;
; Ap reset vector segment address is at 0xFFFFFFF8
; This will be fixed up by some build tool,
; so if the value 1..8 appears in the final FD image,
; tool failure occurs
;
ApSegAddress:    dd      0x12345678

 ;   ORG     0x3c
 TIMES 0x3c-($-$$) DB 0
;
; BFV Base is at 0xFFFFFFFC
; This will be fixed up by some build tool,
; so if the value 1..8 appears in the final FD image,
; tool failure occurs.
;
BfvBase:     DD      0x12345678

;
; Nothing can go here, otherwise the layout of this file would change.
;

   ; END