summaryrefslogtreecommitdiffstats
path: root/src/arch/x86/include/librm.h
diff options
context:
space:
mode:
authorMichael Brown2016-02-19 01:56:20 +0100
committerMichael Brown2016-02-19 02:01:27 +0100
commit6eb1c927a3e245dd571507e86bbde8e8a29f582b (patch)
tree0117f6a9f7c96babf8ae7fa497ccb422bfcaea61 /src/arch/x86/include/librm.h
parent[librm] Provide an abstraction wrapper for prot_call (diff)
downloadipxe-6eb1c927a3e245dd571507e86bbde8e8a29f582b.tar.gz
ipxe-6eb1c927a3e245dd571507e86bbde8e8a29f582b.tar.xz
ipxe-6eb1c927a3e245dd571507e86bbde8e8a29f582b.zip
[librm] Transition to protected mode within init_librm()
Long-mode operation will require page tables, which are too large to sensibly fit in our .data16 segment in base memory. Add a portion of init_librm() running in 32-bit protected mode to provide access to high memory. Use this portion of init_librm() to initialise the .textdata variables "virt_offset", "text16", and "data16", eliminating the redundant (re)initialisation currently performed on every mode transition as part of real_to_prot(). Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/arch/x86/include/librm.h')
-rw-r--r--src/arch/x86/include/librm.h5
1 files changed, 1 insertions, 4 deletions
diff --git a/src/arch/x86/include/librm.h b/src/arch/x86/include/librm.h
index 2786027a..97461640 100644
--- a/src/arch/x86/include/librm.h
+++ b/src/arch/x86/include/librm.h
@@ -14,10 +14,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
#define PHYSICAL_DS 0x20
#define REAL_CS 0x28
#define REAL_DS 0x30
-#if 0
-#define LONG_CS 0x38
-#define LONG_DS 0x40
-#endif
+#define P2R_DS 0x38
#ifdef ASSEMBLY