|
[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 |