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