diff options
| author | H. Peter Anvin <hpa@zytor.com> | 2009-04-13 20:06:00 -0700 |
|---|---|---|
| committer | H. Peter Anvin <hpa@zytor.com> | 2009-04-13 20:06:00 -0700 |
| commit | bcd83930da11aa59feeea0a403052b2511f469a4 (patch) | |
| tree | 73512185baaf4f628d78681dffd0a2ff9f5586e5 /core/comboot.inc | |
| parent | dae8d6496ecd8afefc5e0bd6543c97f24282804f (diff) | |
| download | syslinux-bcd83930da11aa59feeea0a403052b2511f469a4.tar.gz | |
com32: use xfer_buf_seg as the bounce buffer
We cannot realistically realign comboot_seg without breaking com16
modules (which have the DOS-derived assumption that they own the rest
of low memory.) However, we can use xfer_buf_seg as the com32 bounce
buffer, which allows us to retain the benefit of a 64K-aligned buffer.
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Diffstat (limited to 'core/comboot.inc')
| -rw-r--r-- | core/comboot.inc | 17 |
1 files changed, 5 insertions, 12 deletions
diff --git a/core/comboot.inc b/core/comboot.inc index 724af5f9..c169414f 100644 --- a/core/comboot.inc +++ b/core/comboot.inc @@ -777,17 +777,14 @@ comapi_runkernel: mov [Kernel_EAX],eax ; It's not just possible, but quite likely, that ES:BX - ; points into real_mode_seg, so we need to exercise some - ; special care here... use xfer_buf_seg as an intermediary + ; points into real_mode_seg or xfer_buf_seg, so we + ; need to exercise some special care here... use + ; trackbuf as an intermediary push ds - push es - mov ax,xfer_buf_seg mov ds,P_ES mov si,P_BX - mov es,ax - xor di,di + mov di,trackbuf call strcpy - pop es pop ds %if IS_PXELINUX @@ -799,18 +796,14 @@ comapi_runkernel: .finish: ; Copy the command line into its proper place - push ds push es - mov ax,xfer_buf_seg mov dx,real_mode_seg - mov ds,ax mov es,dx - xor si,si + mov si,trackbuf mov di,cmd_line_here call strcpy mov byte [es:di-1],' ' ; Simulate APPEND pop es - pop ds mov [CmdLinePtr],di mov word [CmdOptPtr],zero_string jmp kernel_good_saved |
