diff options
author | H. Peter Anvin <hpa@zytor.com> | 2010-01-24 16:29:44 -0800 |
---|---|---|
committer | H. Peter Anvin <hpa@zytor.com> | 2010-01-24 16:29:44 -0800 |
commit | 2f75bbc83c94b5aed67e89244ffba3fde9e347bb (patch) | |
tree | df93011e2f6954906e69121db2d1a726d67740cb | |
parent | 95e6215b6f1d31eebdb1ddeb4c13007c5af30c23 (diff) | |
parent | aab6f6014b1719db0254f108d89bb0b6750c822a (diff) | |
download | syslinux-2f75bbc83c94b5aed67e89244ffba3fde9e347bb.tar.gz |
Merge commit 'origin/master' into fsc
-rw-r--r-- | com32/lib/syslinux/load_linux.c | 3 | ||||
-rw-r--r-- | core/bootsect.inc | 6 | ||||
-rw-r--r-- | core/runkernel.inc | 16 |
3 files changed, 20 insertions, 5 deletions
diff --git a/com32/lib/syslinux/load_linux.c b/com32/lib/syslinux/load_linux.c index db985163..df793625 100644 --- a/com32/lib/syslinux/load_linux.c +++ b/com32/lib/syslinux/load_linux.c @@ -253,6 +253,9 @@ int syslinux_boot_linux(void *kernel_buf, size_t kernel_size, case 'n': /* "normal" */ video_mode = 0xffff; break; + case 'c': /* "current" */ + video_mode = 0x0f04; + break; default: video_mode = strtoul(arg, NULL, 0); break; diff --git a/core/bootsect.inc b/core/bootsect.inc index 23b4fdb4..b8102cd5 100644 --- a/core/bootsect.inc +++ b/core/bootsect.inc @@ -120,6 +120,12 @@ replace_bootstrap: ; Prepare for shutting down ; call vgaclearmode + +; +; We jump here when loading a kernel image, so that we don't reset +; the screen mode in "quiet" mode +; +replace_bootstrap_noclearmode: call cleanup_hardware ; diff --git a/core/runkernel.inc b/core/runkernel.inc index 68ab9fac..568b9658 100644 --- a/core/runkernel.inc +++ b/core/runkernel.inc @@ -138,15 +138,18 @@ parse_cmdline: jmp .next_opt opt_vga: - mov eax,[es:di-1] + mov ax,[es:di-1] mov bx,-1 - cmp eax,'=nor' ; vga=normal + cmp ax,'=nor' ; vga=normal je .vc0 dec bx ; bx <- -2 - cmp eax,'=ext' ; vga=ext + cmp ax,'=ext' ; vga=ext je .vc0 dec bx ; bx <- -3 - cmp eax,'=ask' ; vga=ask + cmp ax,'=ask' ; vga=ask + je .vc0 + mov bx,0x0f04 ; bx <- 0x0f04 (current mode) + cmp ax,'=cur' ; vga=current je .vc0 call parseint_esdi ; vga=<number> jc .skip ; Not an integer @@ -454,7 +457,10 @@ setup_move: ; BX points to the final real mode segment, and will be loaded ; into DS. - jmp replace_bootstrap + + test byte [QuietBoot],01h ; Don't clear the mode if quiet + jz replace_bootstrap + jmp replace_bootstrap_noclearmode run_linux_kernel: ; |