# HG changeset patch
# User kfraser@xxxxxxxxxxxxxxxxxxxxx
# Date 1182262199 -3600
# Node ID 07688f8f53943cb51c965fa91923b1c4a3e87d0f
# Parent 8eaee9ef472f79af6a288a99c296dbc70510ba68
x86: Re-introduce VIDEO_CURRENT_MODE into video.S video-mode-setting
code, and make visible at the command line via 'vga=current'.
Signed-off-by: Keir Fraser <keir@xxxxxxxxxxxxx>
---
docs/src/user.tex | 1 +
xen/arch/x86/boot/cmdline.S | 17 ++++++++++++++++-
xen/arch/x86/boot/video.S | 2 ++
xen/arch/x86/boot/video.h | 9 +++++----
xen/drivers/video/vga.c | 3 +++
5 files changed, 27 insertions(+), 5 deletions(-)
diff -r 8eaee9ef472f -r 07688f8f5394 docs/src/user.tex
--- a/docs/src/user.tex Tue Jun 19 15:03:55 2007 +0100
+++ b/docs/src/user.tex Tue Jun 19 15:09:59 2007 +0100
@@ -3178,6 +3178,7 @@ editing \path{grub.conf}.
\begin{description}
\item[ ask ] Display a vga menu allowing manual selection of video
mode.
+ \item[ current ] Use existing vga mode without modification.
\item[ text-$<$mode$>$ ] Select text-mode resolution, where mode is
one of 80x25, 80x28, 80x30, 80x34, 80x43, 80x50, 80x60.
\item[ gfx-$<$mode$>$ ] Select VESA graphics mode
diff -r 8eaee9ef472f -r 07688f8f5394 xen/arch/x86/boot/cmdline.S
--- a/xen/arch/x86/boot/cmdline.S Tue Jun 19 15:03:55 2007 +0100
+++ b/xen/arch/x86/boot/cmdline.S Tue Jun 19 15:09:59 2007 +0100
@@ -297,7 +297,7 @@ 1: lodsw
call .Lstr_prefix
add $8,%esp
test %eax,%eax
- jnz .Lcmdline_exit
+ jnz .Lparse_vga_current
/* We have 'vga=mode-<mode>'. */
add $5,%ebx
@@ -305,6 +305,19 @@ 1: lodsw
call .Latoi
add $4,%esp
mov %ax,bootsym_phys(boot_vid_mode)
+ jmp .Lcmdline_exit
+
+.Lparse_vga_current:
+ /* Check for 'vga=current'. */
+ push %ebx
+ pushl $sym_phys(.Lvga_current)
+ call .Lstr_prefix
+ add $8,%esp
+ test %eax,%eax
+ jnz .Lcmdline_exit
+
+ /* We have 'vga=current'. */
+ movw $VIDEO_CURRENT_MODE,bootsym_phys(boot_vid_mode)
.Lcmdline_exit:
popa
@@ -328,6 +341,8 @@ 1: lodsw
.asciz "gfx-"
.Lvga_mode:
.asciz "mode-"
+.Lvga_current:
+ .asciz "current"
.Lno_rm_opt:
.asciz "no-real-mode"
.Ledid_opt:
diff -r 8eaee9ef472f -r 07688f8f5394 xen/arch/x86/boot/video.S
--- a/xen/arch/x86/boot/video.S Tue Jun 19 15:03:55 2007 +0100
+++ b/xen/arch/x86/boot/video.S Tue Jun 19 15:09:59 2007 +0100
@@ -530,6 +530,7 @@ spec_inits:
.word bootsym(set_8pixel)
.word bootsym(set_80x43)
.word bootsym(set_80x28)
+ .word bootsym(set_current)
.word bootsym(set_80x30)
.word bootsym(set_80x34)
.word bootsym(set_80x60)
@@ -575,6 +576,7 @@ set14: movw $0x1111, %ax
movb $0x01, %ah # Define cursor scan lines 11-12
movw $0x0b0c, %cx
int $0x10
+set_current:
stc
ret
diff -r 8eaee9ef472f -r 07688f8f5394 xen/arch/x86/boot/video.h
--- a/xen/arch/x86/boot/video.h Tue Jun 19 15:03:55 2007 +0100
+++ b/xen/arch/x86/boot/video.h Tue Jun 19 15:09:59 2007 +0100
@@ -16,10 +16,11 @@
#define VIDEO_80x50 0x0f01
#define VIDEO_80x43 0x0f02
#define VIDEO_80x28 0x0f03
-#define VIDEO_80x30 0x0f04
-#define VIDEO_80x34 0x0f05
-#define VIDEO_80x60 0x0f06
-#define VIDEO_LAST_SPECIAL 0x0f07
+#define VIDEO_CURRENT_MODE 0x0f04
+#define VIDEO_80x30 0x0f05
+#define VIDEO_80x34 0x0f06
+#define VIDEO_80x60 0x0f07
+#define VIDEO_LAST_SPECIAL 0x0f08
#define ASK_VGA 0xfffd
#define VIDEO_VESA_BY_SIZE 0xffff
diff -r 8eaee9ef472f -r 07688f8f5394 xen/drivers/video/vga.c
--- a/xen/drivers/video/vga.c Tue Jun 19 15:03:55 2007 +0100
+++ b/xen/drivers/video/vga.c Tue Jun 19 15:09:59 2007 +0100
@@ -32,6 +32,9 @@ static unsigned char *video;
*
* 'vga=ask':
* display a vga menu of available modes
+ *
+ * 'vga=current':
+ * use the current vga mode without modification
*
* 'vga=text-80x<rows>':
* text mode, where <rows> is one of {25,28,30,34,43,50,60}
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|