aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorH. Peter Anvin <hpa@zytor.com>2010-01-22 17:42:11 -0800
committerH. Peter Anvin <hpa@zytor.com>2010-01-22 17:42:11 -0800
commitaab6f6014b1719db0254f108d89bb0b6750c822a (patch)
treeb0866b2b6bae03e9e83ff843793ddf24123dbd8a
parent2219c1192672effd3d8ad878aba93b543608c9f4 (diff)
downloadsyslinux.git-aab6f6014b1719db0254f108d89bb0b6750c822a.tar.gz
syslinux.git-aab6f6014b1719db0254f108d89bb0b6750c822a.tar.xz
syslinux.git-aab6f6014b1719db0254f108d89bb0b6750c822a.zip
Add support for "vga=current"
"vga=current" is a user-friendly synonym for "vga=0x0f04". Signed-off-by: H. Peter Anvin <hpa@zytor.com>
-rw-r--r--com32/lib/syslinux/load_linux.c3
-rw-r--r--core/runkernel.inc11
2 files changed, 10 insertions, 4 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/runkernel.inc b/core/runkernel.inc
index c437d72d..f6ede382 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