aboutsummaryrefslogtreecommitdiffstats
path: root/xen/arch/x86/boot/trampoline.S
diff options
context:
space:
mode:
authorKeir Fraser <keir@xensource.com>2007-06-10 15:58:08 +0100
committerKeir Fraser <keir@xensource.com>2007-06-10 15:58:08 +0100
commit08f2039517e1c3b178e167153e6b10ec53966a8b (patch)
treed141a39d6a87fab61b7b30da8f25231a0525f755 /xen/arch/x86/boot/trampoline.S
parent0da9d71b9c5e5c3dde20e246989fb942476aee8b (diff)
downloadxen-08f2039517e1c3b178e167153e6b10ec53966a8b.tar.gz
xen-08f2039517e1c3b178e167153e6b10ec53966a8b.tar.bz2
xen-08f2039517e1c3b178e167153e6b10ec53966a8b.zip
x86: Allow selection of graphical video modes during boot.
The 'vga=' boot option is extended as follows: ---------- 'vga=<mode-specifier>[,keep]' where <mode-specifier> is one of: 'vga=ask': display a vga menu of available modes 'vga=text-80x<rows>': text mode, where <rows> is one of {25,28,30,34,43,50,60} 'vga=gfx-<width>x<height>x<depth>': graphics mode, e.g., vga=gfx-1024x768x16 'vga=mode-<mode>: specifies a mode as specified in 'vga=ask' menu (NB. menu modes are displayed in hex, so mode numbers here must be prefixed with '0x' (e.g., 'vga=mode-0x0318')) The option 'keep' causes Xen to continue to print to the VGA console even after domain 0 starts to boot. The default behaviour is to relinquish control of the console to domain 0. ---------- Signed-off-by: Keir Fraser <keir@xensource.com>
Diffstat (limited to 'xen/arch/x86/boot/trampoline.S')
-rw-r--r--xen/arch/x86/boot/trampoline.S11
1 files changed, 10 insertions, 1 deletions
diff --git a/xen/arch/x86/boot/trampoline.S b/xen/arch/x86/boot/trampoline.S
index 3f90993951..ed63518b40 100644
--- a/xen/arch/x86/boot/trampoline.S
+++ b/xen/arch/x86/boot/trampoline.S
@@ -6,7 +6,6 @@
.globl trampoline_realmode_entry
trampoline_realmode_entry:
- nop # We use this byte as a progress flag
movb $0xA5,bootsym(trampoline_cpu_started)
cld
cli
@@ -117,6 +116,9 @@ high_start:
.code32
trampoline_boot_cpu_entry:
+ cmpb $0,bootsym_phys(skip_realmode)
+ jnz .Lskip_realmode
+
/* Load pseudo-real-mode segments. */
mov $BOOT_PSEUDORM_DS,%eax
mov %eax,%ds
@@ -148,8 +150,10 @@ trampoline_boot_cpu_entry:
/*
* Do real-mode work:
* 1. Get memory map.
+ * 2. Set video mode.
*/
call get_memory_map
+ call video
/* Disable irqs before returning to protected mode. */
cli
@@ -170,12 +174,17 @@ trampoline_boot_cpu_entry:
mov %eax,%gs
mov %eax,%ss
+.Lskip_realmode:
/* EBX == 0 indicates we are the BP (Boot Processor). */
xor %ebx,%ebx
/* Jump to the common bootstrap entry point. */
jmp trampoline_protmode_entry
+skip_realmode:
+ .byte 0
+
rm_idt: .word 256*4-1, 0, 0
#include "mem.S"
+#include "video.S"