* use memory 0x8c000-0x90000 to avoid trampling the area above
0x90000 -- some bootloaders may leave droppings in that region
* reserve 2kB for vga mode table -- limit of 128 VESA modes could
overflow the original 1kB allocation
* remove unnecessary alignment of trampoline GDT
mov $trampoline_end - trampoline_start,%ecx
rep movsb
- mov $0x98000,%esp
+ mov $0x90000,%esp
call cmdline_parse_early
/* Jump into the relocated trampoline. */
idt_48: .word 0, 0, 0 # base = limit = 0
gdt_48: .word 6*8-1
.long bootsym_phys(trampoline_gdt)
- .align 8
trampoline_gdt:
/* 0x0000: unused */
.quad 0x0000000000000000
#include "video.h"
-/* Scratch space layout. */
-#define modelist (0x3000)
-#define vesa_glob_info (modelist + 1024)
-#define vesa_mode_info (vesa_glob_info + 1024)
+/* Scratch space layout: +0x3000 to +0x4000. */
+#define modelist (0x3000) /* 2kB (256 entries) */
+#define vesa_glob_info (modelist + 0x800) /* 1kB */
+#define vesa_mode_info (vesa_glob_info + 0x400) /* 1kB */
/* Retrieve Extended Display Identification Data. */
#define CONFIG_FIRMWARE_EDID
#define CONFIG_DMA_BITSIZE 32
-#define BOOT_TRAMPOLINE 0x94000
+#define BOOT_TRAMPOLINE 0x8c000
#define bootsym_phys(sym) \
(((unsigned long)&(sym)-(unsigned long)&trampoline_start)+BOOT_TRAMPOLINE)
#define bootsym(sym) \