[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Minios-devel] [UNIKRAFT PATCH v2 01/18] plat/kvm: Place early boot code to the start of the image (x86)
Hey,thanks for the review. I screwed up the patch subject as well, it is just a single patch (not part of 18). Sorry for this. Thanks, Simon On 13.06.2018 12:49, Yuri Volchkov wrote: Sorry, I screwed up my previous email :) This is how it supposed to look like: Reviewed-by: Yuri Volchkov <yuri.volchkov@xxxxxxxxx> Simon Kuenzer <simon.kuenzer@xxxxxxxxx> writes:Places early boot code (e.g., 64bit mode switch) and data (e.g., GDT) to the start of the image. This avoids general protection faults that were caused whenever the linker placed such items to addresses that were not accessible while the mode switch to 64bit and address space setup was not finished. Signed-off-by: Simon Kuenzer <simon.kuenzer@xxxxxxxxx> --- plat/kvm/x86/entry64.S | 21 ++++++++++++--------- plat/kvm/x86/link64.ld | 3 ++- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/plat/kvm/x86/entry64.S b/plat/kvm/x86/entry64.S index bda7d40..1a10359 100644 --- a/plat/kvm/x86/entry64.S +++ b/plat/kvm/x86/entry64.S @@ -30,24 +30,24 @@ #include <x86/cpu_defs.h> #include <kvm-x86/multiboot_defs.h>-#define ENTRY(x) .text; .globl x; .type x,%function; x:+#define ENTRY(x) .globl x; .type x,%function; x: #define END(x) .size x, . - x#define MYMULTIBOOT_FLAGS \(MULTIBOOT_PAGE_ALIGN | MULTIBOOT_MEMORY_INFO | MULTIBOOT_AOUT_KLUDGE)-.section .data.multiboot+.section .data.boot.align 4_multiboot_header: .long MULTIBOOT_HEADER_MAGIC .long MYMULTIBOOT_FLAGS -.long -(MULTIBOOT_HEADER_MAGIC+MYMULTIBOOT_FLAGS) -.long _multiboot_header -.long 0x100000 -.long _edata -.long _end -.long _libkvmplat_start32 +.long -(MULTIBOOT_HEADER_MAGIC+MYMULTIBOOT_FLAGS) /* checksum */ +.long _multiboot_header /* header addr */ +.long 0x100000 /* load addr */ +.long _edata /* load end addr */ +.long _end /* bss end addr */ +.long _libkvmplat_start32 /* entry addr */.section .bss @@ -63,6 +63,7 @@ bootstack:* we've switched to long mode. */ .code32 +.section .text.bootENTRY(_libkvmplat_start32)cld @@ -139,7 +140,7 @@ END(_libkvmplat_start32) * Uuuyea, exceptions. */-.data+.section .data.boot .align 64 gdt64: .quad 0x0000000000000000 @@ -165,6 +166,7 @@ mxcsr_ptr: #include "pagetable.S".code64+.section .text.bootENTRY(_libkvmplat_start64)movq $bootstack, %rsp @@ -192,6 +194,7 @@ ENTRY(_libkvmplat_start64) hlt END(_libkvmplat_start64)+.textENTRY(_libkvmplat_newstack) movq %rdi, %rsp movq %rdx, %rdi diff --git a/plat/kvm/x86/link64.ld b/plat/kvm/x86/link64.ld index d1bfa73..60b5d21 100644 --- a/plat/kvm/x86/link64.ld +++ b/plat/kvm/x86/link64.ld @@ -33,7 +33,8 @@ SECTIONS .text : { /* prevent linker gc from removing multiboot header */ - KEEP (*(.data.multiboot)) + KEEP (*(.data.boot)) + *(.text.boot)*(.text)*(.text.*) -- 2.7.4 _______________________________________________ Minios-devel mailing list Minios-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/minios-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |