diff options
authorAvi Kivity <>2009-12-20 12:28:51 +0200
committerAvi Kivity <>2009-12-20 12:28:51 +0200
commit210cd710b3bd36ca3c10e68b976f22319438f5ce (patch)
tree1031d5445f5513a414a7fa570d7a2b7f964428ea /pc-bios
parentMerge commit '686a3c3dc235df2492e754423799d1abe4f6d9e2' into stable-0.12-merge (diff)
parentMake sure to enable dirty tracking of VBE vram mapping (diff)
Merge commit '3c547d7bb7889182d5bcecbb3edea4c71774c6a3' into stable-0.12-merge
* commit '3c547d7bb7889182d5bcecbb3edea4c71774c6a3': (23 commits) Make sure to enable dirty tracking of VBE vram mapping vmware: setup PCI BAR 2 for FIFO as per vmware spec qdev: improve property error reporting. fix vga names in default_list usb-host: check mon before using it. usb-net: use qdev for -usbdevice Check rom_load_all() return value. defaults: update device_list[] defaults: split default_drive monitor: Catch printing to non-existent monitor monitor: Avoid readline functions in QMP monitor: do_balloon(): Check for errors monitor: Use 'device' in eject QDict: Fix size update qdev: Improve uni-north device names Avoid permanently disabled QEMU monitor when UNIX migration fails Fix loading of ELF multiboot kernels Revert "Rename DriveInfo.onerror to on_write_error" (fix mismerge) qemu-io: Fix memory leak Fix thinko in linuxboot.S ... Conflicts: hw/vga.c Signed-off-by: Avi Kivity <>
Diffstat (limited to 'pc-bios')
1 files changed, 8 insertions, 12 deletions
diff --git a/pc-bios/optionrom/linuxboot.S b/pc-bios/optionrom/linuxboot.S
index 7f3b1b269..c4c9109b6 100644
--- a/pc-bios/optionrom/linuxboot.S
+++ b/pc-bios/optionrom/linuxboot.S
@@ -79,24 +79,20 @@ copy_kernel:
mode, so let's get into 32 bit mode, write the kernel and jump
back again. */
- /* Set DS to SS+SP - 0x10, so we can write our GDT descriptor there */
- mov %ss, %eax
- shl $4, %eax
- add %esp, %eax
- sub $0x10, %eax
- shr $4, %eax
+ /* Reserve space on the stack for our GDT descriptor. */
+ mov %esp, %ebp
+ sub $16, %esp
/* Now create the GDT descriptor */
+ movw $((3 * 8) - 1), -16(%bp)
mov %cs, %eax
shl $4, %eax
- movw $((3 * 8) - 1), %bx
- movw %bx, %gs:0
- movl $gdt, %ebx
- add %eax, %ebx
- movl %ebx, %gs:2
+ addl $gdt, %ebx
+ movl %ebx, -14(%bp)
/* And load the GDT */
- data32 lgdt %gs:0
+ data32 lgdt -16(%bp)
+ mov %ebp, %esp
/* Get us to protected mode now */
mov $1, %eax