ChangeSet 1.1712, 2005/06/10 09:25:44+01:00, kaf24@xxxxxxxxxxxxxxxxxxxx
Move saved_upcall_mask in cpu_user_regs to CS+4 rather than CS+2 on
x86/64.
Signed-off-by: Keir Fraser <keir@xxxxxxxxxxxxx>
arch/x86/x86_64/entry.S | 2 +-
include/public/arch-x86_64.h | 14 +++++++-------
2 files changed, 8 insertions(+), 8 deletions(-)
diff -Nru a/xen/arch/x86/x86_64/entry.S b/xen/arch/x86/x86_64/entry.S
--- a/xen/arch/x86/x86_64/entry.S 2005-06-10 05:02:49 -04:00
+++ b/xen/arch/x86/x86_64/entry.S 2005-06-10 05:02:49 -04:00
@@ -316,7 +316,7 @@
testb $TBF_INTERRUPT,%cl
setnz VCPUINFO_upcall_mask(%rax)# TBF_INTERRUPT -> clear upcall mask
popq %rax
- shll $16,%eax # Bits 16-23: saved_upcall_mask
+ shlq $32,%rax # Bits 32-39: saved_upcall_mask
movw UREGS_cs+8(%rsp),%ax # Bits 0-15: CS
FLT5: movq %rax,8(%rsi) # CS/saved_upcall_mask
movq UREGS_rip+8(%rsp),%rax
diff -Nru a/xen/include/public/arch-x86_64.h b/xen/include/public/arch-x86_64.h
--- a/xen/include/public/arch-x86_64.h 2005-06-10 05:02:49 -04:00
+++ b/xen/include/public/arch-x86_64.h 2005-06-10 05:02:49 -04:00
@@ -153,16 +153,16 @@
u32 error_code; /* private */
u32 entry_vector; /* private */
union { u64 rip, eip; };
- u16 cs;
+ u16 cs, _pad0[1];
u8 saved_upcall_mask;
- u8 _pad0[5];
+ u8 _pad1[3];
union { u64 rflags, eflags; };
union { u64 rsp, esp; };
- u16 ss, _pad1[3];
- u16 es, _pad2[3];
- u16 ds, _pad3[3];
- u16 fs, _pad4[3]; /* Non-zero => takes precedence over fs_base. */
- u16 gs, _pad5[3]; /* Non-zero => takes precedence over gs_base_user. */
+ u16 ss, _pad2[3];
+ u16 es, _pad3[3];
+ u16 ds, _pad4[3];
+ u16 fs, _pad5[3]; /* Non-zero => takes precedence over fs_base. */
+ u16 gs, _pad6[3]; /* Non-zero => takes precedence over gs_base_user. */
} cpu_user_regs_t;
typedef u64 tsc_timestamp_t; /* RDTSC timestamp */
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|