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 <grub/symbol.h>
|
||||
#include <grub/machine/memory.h>
|
||||
|
||||
.file "startup_pvh.S"
|
||||
.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. */
|
||||
.globl pvh_start_info
|
||||
pvh_start_info:
|
||||
.long 0
|
||||
|
||||
.bss
|
||||
.space GRUB_MEMORY_MACHINE_PROT_STACK_SIZE
|
||||
LOCAL(stack_end):
|
||||
|
|
Loading…
Reference in a new issue