[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v2 3/5] 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> --- CC: Jan Beulich <JBeulich@xxxxxxxx> CC: Wei Liu <wl@xxxxxxx> CC: Roger Pau Monné <roger.pau@xxxxxxxxxx> --- 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 -- 2.11.0 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |