diff options
author | Keir Fraser <keir@xensource.com> | 2007-06-10 15:58:08 +0100 |
---|---|---|
committer | Keir Fraser <keir@xensource.com> | 2007-06-10 15:58:08 +0100 |
commit | 08f2039517e1c3b178e167153e6b10ec53966a8b (patch) | |
tree | d141a39d6a87fab61b7b30da8f25231a0525f755 /xen/arch/x86/boot/trampoline.S | |
parent | 0da9d71b9c5e5c3dde20e246989fb942476aee8b (diff) | |
download | xen-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.S | 11 |
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" |