xen: Add PVH boot entry code
Add the code for the Xen PVH mode boot entry. Signed-off-by: Juergen Gross <jgross@suse.com> Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com> Tested-by: Hans van Kranenburg <hans@knorrie.org>
This commit is contained in:
parent
0b3e4eb2d2
commit
1a4d83af2f
1 changed files with 52 additions and 0 deletions
|
@ -19,11 +19,63 @@
|
||||||
|
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
#include <grub/symbol.h>
|
#include <grub/symbol.h>
|
||||||
|
#include <grub/machine/memory.h>
|
||||||
|
|
||||||
.file "startup_pvh.S"
|
.file "startup_pvh.S"
|
||||||
.text
|
.text
|
||||||
|
.globl start, _start
|
||||||
|
.code32
|
||||||
|
|
||||||
|
start:
|
||||||
|
_start:
|
||||||
|
cld
|
||||||
|
lgdt gdtdesc
|
||||||
|
ljmp $GRUB_MEMORY_MACHINE_PROT_MODE_CSEG, $1f
|
||||||
|
1:
|
||||||
|
movl $GRUB_MEMORY_MACHINE_PROT_MODE_DSEG, %eax
|
||||||
|
mov %eax, %ds
|
||||||
|
mov %eax, %es
|
||||||
|
mov %eax, %fs
|
||||||
|
mov %eax, %gs
|
||||||
|
mov %eax, %ss
|
||||||
|
leal LOCAL(stack_end), %esp
|
||||||
|
|
||||||
|
/* Save address of start info structure. */
|
||||||
|
mov %ebx, pvh_start_info
|
||||||
|
call EXT_C(grub_main)
|
||||||
|
/* Doesn't return. */
|
||||||
|
|
||||||
|
.p2align 3
|
||||||
|
gdt:
|
||||||
|
.word 0, 0
|
||||||
|
.byte 0, 0, 0, 0
|
||||||
|
|
||||||
|
/* -- code segment --
|
||||||
|
* base = 0x00000000, limit = 0xFFFFF (4 KiB Granularity), present
|
||||||
|
* type = 32bit code execute/read, DPL = 0
|
||||||
|
*/
|
||||||
|
.word 0xFFFF, 0
|
||||||
|
.byte 0, 0x9A, 0xCF, 0
|
||||||
|
|
||||||
|
/* -- data segment --
|
||||||
|
* base = 0x00000000, limit 0xFFFFF (4 KiB Granularity), present
|
||||||
|
* type = 32 bit data read/write, DPL = 0
|
||||||
|
*/
|
||||||
|
.word 0xFFFF, 0
|
||||||
|
.byte 0, 0x92, 0xCF, 0
|
||||||
|
|
||||||
|
.p2align 3
|
||||||
|
/* this is the GDT descriptor */
|
||||||
|
gdtdesc:
|
||||||
|
.word 0x17 /* limit */
|
||||||
|
.long gdt /* addr */
|
||||||
|
|
||||||
|
.p2align 2
|
||||||
/* Saved pointer to start info structure. */
|
/* Saved pointer to start info structure. */
|
||||||
.globl pvh_start_info
|
.globl pvh_start_info
|
||||||
pvh_start_info:
|
pvh_start_info:
|
||||||
.long 0
|
.long 0
|
||||||
|
|
||||||
|
.bss
|
||||||
|
.space GRUB_MEMORY_MACHINE_PROT_STACK_SIZE
|
||||||
|
LOCAL(stack_end):
|
||||||
|
|
Loading…
Reference in a new issue