windows-nt/Source/XPSP1/NT/base/boot/startrom/i386/memmap.h
2020-09-26 16:20:57 +08:00

83 lines
2.8 KiB
C

//
// The following memory address definitions apply to
// indentity mapped objects for the x86 environment.
//
#define RM_PROTECT_BASE_VA 0x000000
#define RM_PROTECT_BASE_PA 0x000000
#define RM_PROTECT_SIZE 0x001000
#define RM_PROTECT_ATTRIBUTES PAGE_ROSP
#define BPB_BASE_VA 0x007000
#define BPB_BASE_PA 0x007000
#define BPB_SIZE 0x001000
#define BPB_ATTRIBUTES PAGE_ROSP
#define SU_MODULE_BASE_VA 0x020000
#define SU_MODULE_BASE_PA 0x020000
#define SU_MODULE_SIZE 0x020000
#define SU_MODULE_ATTRIBUTES PAGE_RWSP
#define LOADER_BASE_VA 0x040000
#define LOADER_BASE_PA 0x040000
#define LOADER_SIZE 0x020000
#define LOADER_ATTRIBUTES PAGE_RWSP
#define SYSTEM_STRUCTS_BASE_VA 0x80420000
#define SYSTEM_STRUCTS_BASE_PA 0x00017000
#define SYSTEM_STRUCTS_SIZE 0x002000
#define SYSTEM_STRUCTS_ATTRIBUTES PAGE_RWSP + PAGE_PERSIST
#define PAGE_TABLE_AREA_BASE_VA 0x00099000
#define PAGE_TABLE_AREA_BASE_PA 0x00099000
#define PAGE_TABLE_AREA_SIZE 0x002000
#define PAGE_TABLE_AREA_ATTRIBUTES PAGE_RWSP + PAGE_PERSIST
#define LDR_STACK_BASE_VA 0x09b000
#define LDR_STACK_BASE_PA 0x09b000
#define LDR_STACK_SIZE 0x001000
#define LDR_STACK_ATTRIBUTES PAGE_RWSP
#define LDR_STACK_POINTER 0x09bffe // in su.inc also
#define VIDEO_BUFFER_BASE_VA 0x0B8000
#define VIDEO_BUFFER_BASE_PA 0x0B8000
#define VIDEO_BUFFER_SIZE 0x004000
#define VIDEO_BUFFER_ATTRIBUTES PAGE_RWSP
#define HYPER_PAGE_DIRECTORY 0xC0300C00
#define HYPER_SPACE_BEGIN 0xC0000000 // points to 1st page table
#define HYPER_SPACE_SIZE 0x8000L
#define HYPER_SPACE_ENTRY 768
#define PAGE_TABLE1_ADDRESS 0xC0000000L
#define PD_PHYSICAL_ADDRESS PAGE_TABLE_AREA_BASE_PA // in su.inc also.
#define PT_PHYSICAL_ADDRESS PAGE_TABLE_AREA_BASE_PA + PAGE_SIZE
#define VIDEO_ENTRY 0xB8
/*
Switching to Realmode
~~~~~~~~~~~~~~~~~~~~~
When switching to realmode "sp" will be initialized to
0xfffe and (ss) will be set to the base of the SU module's
data segment. This has several effects.
1) The stack will remain withing the 0x20000 - 0x3ffff range
reserved for the original SU module and loader image prior to
relocation, and since the loader will already have been relocated
it is no longer necessary to preserve this area.
2) This will preserve the SU module's small model character which
requires that offsets can be used interchangably through (ss) or (ds).
3) This allows for the maximum stack size for small model apps (which is
what the SU module is). Bios calls should not be tromping on any
data or code while in realmode.
*/