]> git.proxmox.com Git - mirror_edk2.git/blob - IntelFrameworkModulePkg/Csm/LegacyBiosDxe/Ipf/IpfThunk.i
IntelFrameworkModulePkg: Add Compatibility Support Module (CSM) drivers
[mirror_edk2.git] / IntelFrameworkModulePkg / Csm / LegacyBiosDxe / Ipf / IpfThunk.i
1 //// @file
2 //
3 // Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
4 //
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
10 //
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.
13 //
14 ////
15
16 #define NUM_REAL_GDT_ENTRIES 3
17 #define LOW_STACK_SIZE (8*1024) // 8k?
18
19 //
20 // Low memory Thunk Structure
21 //
22 #define Code 0
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
42
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
54
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
66
67 #define InterruptRedirectionCode EfiToLegacy16BootTableEnd
68 #define PciHandler InterruptRedirectionCode + 32
69
70
71 //
72 // Register Sets (16 Bit)
73 //
74
75 #define AX 0
76 #define BX 2
77 #define CX 4
78 #define DX 6
79 #define SI 8
80 #define DI 10
81 #define Flags 12
82 #define ES 14
83 #define CS 16
84 #define SS 18
85 #define DS 20
86 #define BP 22
87
88
89