//// @file | |
// | |
// Copyright (c) 2006, Intel Corporation. All rights reserved.<BR> | |
// | |
// This program and the accompanying materials | |
// are licensed and made available under the terms and conditions | |
// of the BSD License which accompanies this distribution. The | |
// full text of the license may be found at | |
// http://opensource.org/licenses/bsd-license.php | |
// | |
// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, | |
// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. | |
// | |
//// | |
#define NUM_REAL_GDT_ENTRIES 3 | |
#define LOW_STACK_SIZE (8*1024) // 8k? | |
// | |
// Low memory Thunk Structure | |
// | |
#define Code 0 | |
#define LowReverseThunkStart Code + 4096 | |
#define GdtDesc LowReverseThunkStart + 4 | |
#define IdtDesc GdtDesc + 6 | |
#define FlatSs IdtDesc + 6 | |
#define FlatEsp FlatSs + 4 | |
#define LowCodeSelector FlatEsp + 4 | |
#define LowDataSelector LowCodeSelector + 4 | |
#define LowStack LowDataSelector + 4 | |
#define RealModeIdtDesc LowStack + 4 | |
#define RealModeGdt RealModeIdtDesc + 6 | |
#define RealModeGdtDesc RealModeGdt + (8 * NUM_REAL_GDT_ENTRIES) | |
#define RevRealDs RealModeGdtDesc + 6 | |
#define RevRealSs RevRealDs + 2 | |
#define RevRealEsp RevRealSs + 2 | |
#define RevRealIdtDesc RevRealEsp + 4 | |
#define RevFlatDataSelector RevRealIdtDesc + 6 | |
#define RevFlatStack RevFlatDataSelector + 2 | |
#define Stack RevFlatStack + 4 | |
#define RevThunkStack Stack + LOW_STACK_SIZE | |
#define EfiToLegacy16InitTable RevThunkStack + LOW_STACK_SIZE | |
#define InitTableBiosLessThan1MB EfiToLegacy16InitTable | |
#define InitTableHiPmmMemory InitTableBiosLessThan1MB + 4 | |
#define InitTablePmmMemorySizeInBytes InitTableHiPmmMemory + 4 | |
#define InitTableReverseThunkCallSegment InitTablePmmMemorySizeInBytes + 4 | |
#define InitTableReverseThunkCallOffset InitTableReverseThunkCallSegment + 2 | |
#define InitTableNumberE820Entries InitTableReverseThunkCallOffset + 2 | |
#define InitTableOsMemoryAbove1Mb InitTableNumberE820Entries + 4 | |
#define InitTableThunkStart InitTableOsMemoryAbove1Mb + 4 | |
#define InitTableThunkSizeInBytes InitTableThunkStart + 4 | |
#define InitTable16InitTableEnd InitTableThunkSizeInBytes + 4 | |
#define EfiToLegacy16BootTable InitTable16InitTableEnd | |
#define BootTableBiosLessThan1MB EfiToLegacy16BootTable | |
#define BootTableHiPmmMemory BootTableBiosLessThan1MB + 4 | |
#define BootTablePmmMemorySizeInBytes BootTableHiPmmMemory + 4 | |
#define BootTableReverseThunkCallSegment BootTablePmmMemorySizeInBytes + 4 | |
#define BootTableReverseThunkCallOffset BootTableReverseThunkCallSegment + 2 | |
#define BootTableNumberE820Entries BootTableReverseThunkCallOffset + 2 | |
#define BootTableOsMemoryAbove1Mb BootTableNumberE820Entries + 4 | |
#define BootTableThunkStart BootTableOsMemoryAbove1Mb + 4 | |
#define BootTableThunkSizeInBytes BootTableThunkStart + 4 | |
#define EfiToLegacy16BootTableEnd BootTableThunkSizeInBytes + 4 | |
#define InterruptRedirectionCode EfiToLegacy16BootTableEnd | |
#define PciHandler InterruptRedirectionCode + 32 | |
// | |
// Register Sets (16 Bit) | |
// | |
#define AX 0 | |
#define BX 2 | |
#define CX 4 | |
#define DX 6 | |
#define SI 8 | |
#define DI 10 | |
#define Flags 12 | |
#define ES 14 | |
#define CS 16 | |
#define SS 18 | |
#define DS 20 | |
#define BP 22 | |