| Submitter | Alexander Graf |
|---|---|
| Date | Nov. 17, 2009, 4:49 p.m. |
| Message ID | <1258476556-32472-1-git-send-email-agraf@suse.de> |
| Download | mbox | patch |
| Permalink | /patch/38660/ |
| State | New |
| Headers | show |
Comments
Alexander Graf wrote: > While trying to run -kernel with -bios pc-bios/pcbios.bin, I realized > that I was actually writing data to %es, but only set up %ds to a 32-bit > segment we want to write to. > > So at the end of the day the data hasn't actually been copied. Oops. > > So here's a fix to set ES instead of DS, which makes -kernel work with > BOCHS bios again (and actually makes the code do the correct thing)! > ping
On 11/30/2009 02:10 PM, Alexander Graf wrote: > Alexander Graf wrote: >> While trying to run -kernel with -bios pc-bios/pcbios.bin, I realized >> that I was actually writing data to %es, but only set up %ds to a 32-bit >> segment we want to write to. >> >> So at the end of the day the data hasn't actually been copied. Oops. >> >> So here's a fix to set ES instead of DS, which makes -kernel work with >> BOCHS bios again (and actually makes the code do the correct thing)! >> > > ping ACK Paolo
Patch
diff --git a/pc-bios/optionrom/linuxboot.S b/pc-bios/optionrom/linuxboot.S index 08c1ca6..ecd9cf2 100644 --- a/pc-bios/optionrom/linuxboot.S +++ b/pc-bios/optionrom/linuxboot.S @@ -102,11 +102,11 @@ copy_kernel: mov $1, %eax mov %eax, %cr0 - /* So we can set DS to a 32-bit segment */ + /* So we can set ES to a 32-bit segment */ mov $0x10, %eax - mov %eax, %ds + mov %eax, %es - /* We're now running in 16-bit CS, but 32-bit DS! */ + /* We're now running in 16-bit CS, but 32-bit ES! */ /* Load kernel and initrd */ read_fw_blob(FW_CFG_KERNEL) @@ -118,9 +118,9 @@ copy_kernel: mov $0, %eax mov %eax, %cr0 - /* DS = CS */ + /* ES = CS */ mov %cs, %ax - mov %ax, %ds + mov %ax, %es jmp boot_kernel
While trying to run -kernel with -bios pc-bios/pcbios.bin, I realized that I was actually writing data to %es, but only set up %ds to a 32-bit segment we want to write to. So at the end of the day the data hasn't actually been copied. Oops. So here's a fix to set ES instead of DS, which makes -kernel work with BOCHS bios again (and actually makes the code do the correct thing)! Signed-off-by: Alexander Graf <agraf@suse.de> --- pc-bios/optionrom/linuxboot.S | 10 +++++----- 1 files changed, 5 insertions(+), 5 deletions(-)