3 // Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
5 // This program and the accompanying materials
6 // are licensed and made available under the terms and conditions
7 // of the BSD License which accompanies this distribution. The
8 // full text of the license may be found at
9 // http://opensource.org/licenses/bsd-license.php
11 // THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
12 // WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
16 #define NUM_REAL_GDT_ENTRIES 3
17 #define LOW_STACK_SIZE (8*1024) // 8k?
20 // Low memory Thunk Structure
23 #define LowReverseThunkStart Code + 4096
24 #define GdtDesc LowReverseThunkStart + 4
25 #define IdtDesc GdtDesc + 6
26 #define FlatSs IdtDesc + 6
27 #define FlatEsp FlatSs + 4
28 #define LowCodeSelector FlatEsp + 4
29 #define LowDataSelector LowCodeSelector + 4
30 #define LowStack LowDataSelector + 4
31 #define RealModeIdtDesc LowStack + 4
32 #define RealModeGdt RealModeIdtDesc + 6
33 #define RealModeGdtDesc RealModeGdt + (8 * NUM_REAL_GDT_ENTRIES)
34 #define RevRealDs RealModeGdtDesc + 6
35 #define RevRealSs RevRealDs + 2
36 #define RevRealEsp RevRealSs + 2
37 #define RevRealIdtDesc RevRealEsp + 4
38 #define RevFlatDataSelector RevRealIdtDesc + 6
39 #define RevFlatStack RevFlatDataSelector + 2
40 #define Stack RevFlatStack + 4
41 #define RevThunkStack Stack + LOW_STACK_SIZE
43 #define EfiToLegacy16InitTable RevThunkStack + LOW_STACK_SIZE
44 #define InitTableBiosLessThan1MB EfiToLegacy16InitTable
45 #define InitTableHiPmmMemory InitTableBiosLessThan1MB + 4
46 #define InitTablePmmMemorySizeInBytes InitTableHiPmmMemory + 4
47 #define InitTableReverseThunkCallSegment InitTablePmmMemorySizeInBytes + 4
48 #define InitTableReverseThunkCallOffset InitTableReverseThunkCallSegment + 2
49 #define InitTableNumberE820Entries InitTableReverseThunkCallOffset + 2
50 #define InitTableOsMemoryAbove1Mb InitTableNumberE820Entries + 4
51 #define InitTableThunkStart InitTableOsMemoryAbove1Mb + 4
52 #define InitTableThunkSizeInBytes InitTableThunkStart + 4
53 #define InitTable16InitTableEnd InitTableThunkSizeInBytes + 4
55 #define EfiToLegacy16BootTable InitTable16InitTableEnd
56 #define BootTableBiosLessThan1MB EfiToLegacy16BootTable
57 #define BootTableHiPmmMemory BootTableBiosLessThan1MB + 4
58 #define BootTablePmmMemorySizeInBytes BootTableHiPmmMemory + 4
59 #define BootTableReverseThunkCallSegment BootTablePmmMemorySizeInBytes + 4
60 #define BootTableReverseThunkCallOffset BootTableReverseThunkCallSegment + 2
61 #define BootTableNumberE820Entries BootTableReverseThunkCallOffset + 2
62 #define BootTableOsMemoryAbove1Mb BootTableNumberE820Entries + 4
63 #define BootTableThunkStart BootTableOsMemoryAbove1Mb + 4
64 #define BootTableThunkSizeInBytes BootTableThunkStart + 4
65 #define EfiToLegacy16BootTableEnd BootTableThunkSizeInBytes + 4
67 #define InterruptRedirectionCode EfiToLegacy16BootTableEnd
68 #define PciHandler InterruptRedirectionCode + 32
72 // Register Sets (16 Bit)