mirror of
https://github.com/xcat2/xNBA.git
synced 2024-11-22 01:21:45 +00:00
[lkrnprefix] Make real-mode setup code relocatable
The bzImage boot protocol allows the real-mode code to be loaded at any segment within base memory. (The fact that both iPXE and recent versions of Syslinux will load the real-mode code at 1000:0000 is a coincidence; it is not guaranteed by the specification.) Fix by making the code relocatable. Reported-by: Andrew Stuart <andrew@shopcusa.com> Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
parent
a8f037a275
commit
f747a00c54
@ -1,6 +1,5 @@
|
||||
FILE_LICENCE ( GPL_ANY )
|
||||
|
||||
#define BZI_RM_SEGMENT 0x1000
|
||||
#define BZI_LOAD_HIGH_ADDR 0x100000
|
||||
|
||||
.text
|
||||
@ -61,7 +60,7 @@ version:
|
||||
realmode_swtch:
|
||||
.long 0
|
||||
start_sys:
|
||||
.word BZI_RM_SEGMENT
|
||||
.word 0
|
||||
kernel_version:
|
||||
.word version_string - 0x200
|
||||
type_of_loader:
|
||||
@ -114,7 +113,9 @@ version_string:
|
||||
|
||||
setup:
|
||||
/* Fix up code segment */
|
||||
ljmp $BZI_RM_SEGMENT, $1f
|
||||
pushw %ds
|
||||
pushw $1f
|
||||
lret
|
||||
1:
|
||||
/* Set up stack just below 0x7c00 and clear direction flag */
|
||||
xorw %ax, %ax
|
||||
|
Loading…
Reference in New Issue
Block a user