mirror of
https://gitlab.alpinelinux.org/alpine/aports.git
synced 2026-01-18 07:02:29 +01:00
* Backport xen_pvh patches from grub master branch * Adds grub-i386-xen_pvh.bin to the grub-xenhost package
87 lines
2.0 KiB
Diff
87 lines
2.0 KiB
Diff
From da39673d5d194e66c9ad70ad4de4e90ee69f0886 Mon Sep 17 00:00:00 2001
|
|
From: Juergen Gross <jgross@suse.com>
|
|
Date: Fri, 7 Dec 2018 13:11:38 +0100
|
|
Subject: [PATCH 10/20] 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>
|
|
(cherry picked from commit 1a4d83af2fc1eb0a0951775a2b86860ab074c699)
|
|
---
|
|
grub-core/kern/i386/xen/startup_pvh.S | 52 +++++++++++++++++++++++++++
|
|
1 file changed, 52 insertions(+)
|
|
|
|
diff --git a/grub-core/kern/i386/xen/startup_pvh.S b/grub-core/kern/i386/xen/startup_pvh.S
|
|
index 69b8fdcca..363c31858 100644
|
|
--- a/grub-core/kern/i386/xen/startup_pvh.S
|
|
+++ b/grub-core/kern/i386/xen/startup_pvh.S
|
|
@@ -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):
|
|
--
|
|
2.21.0
|
|
|