[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen staging] x86/boot: Drop explicit %fs uses
commit 9f27372677a68206d511de88ede22c53369a4ff7 Author: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> AuthorDate: Thu Jan 9 14:06:08 2020 +0000 Commit: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> CommitDate: Wed Jan 22 19:03:18 2020 +0000 x86/boot: Drop explicit %fs uses The trampoline relocation code uses %fs for accessing Xen, and this comes with an arbitrary 16M limitation. We could adjust the limit, but the boot code is a confusing mix of %ds/%esi-based and %fs-based accesses, and the use of %fs is longer to encode, and incurs an address generation overhead. Rewrite the logic to use %ds, for better consistency with the surrounding code, and a marginal performance improvement. Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> Reviewed-by: Jan Beulich <jbeulich@xxxxxxxx> --- xen/arch/x86/boot/head.S | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/xen/arch/x86/boot/head.S b/xen/arch/x86/boot/head.S index 0137ee99a4..1deeae2f2a 100644 --- a/xen/arch/x86/boot/head.S +++ b/xen/arch/x86/boot/head.S @@ -718,23 +718,27 @@ trampoline_setup: mov %edx, sym_esi(l2_bootmap) /* Apply relocations to bootstrap trampoline. */ - mov sym_fs(trampoline_phys),%edx - mov $sym_offs(__trampoline_rel_start),%edi + mov sym_esi(trampoline_phys), %edx + lea sym_esi(__trampoline_rel_start), %edi + lea sym_esi(__trampoline_rel_stop), %ecx 1: - mov %fs:(%edi),%eax - add %edx,%fs:(%edi,%eax) + mov (%edi), %eax + add %edx, (%edi, %eax) add $4,%edi - cmp $sym_offs(__trampoline_rel_stop),%edi + + cmp %ecx, %edi jb 1b /* Patch in the trampoline segment. */ shr $4,%edx - mov $sym_offs(__trampoline_seg_start),%edi + lea sym_esi(__trampoline_seg_start), %edi + lea sym_esi(__trampoline_seg_stop), %ecx 1: - mov %fs:(%edi),%eax - mov %dx,%fs:(%edi,%eax) + mov (%edi), %eax + mov %dx, (%edi, %eax) add $4,%edi - cmp $sym_offs(__trampoline_seg_stop),%edi + + cmp %ecx, %edi jb 1b /* Do not parse command line on EFI platform here. */ @@ -760,9 +764,9 @@ trampoline_setup: push %eax /* Copy bootstrap trampoline to low memory, below 1MB. */ - mov $sym_offs(trampoline_start),%esi + lea sym_esi(trampoline_start), %esi mov $((trampoline_end - trampoline_start) / 4),%ecx - rep movsl %fs:(%esi),%es:(%edi) + rep movsl /* Jump into the relocated trampoline. */ lret -- generated by git-patchbot for /home/xen/git/xen.git#staging _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |