direct-io.hg

changeset 5417:a69d16375a5a

bitkeeper revision 1.1705.1.7 (42a94e88EO8US-LmAPxu7rbUmKFdUg)

Move saved_upcall_mask in cpu_user_regs to CS+4 rather than CS+2 on
x86/64.
Signed-off-by: Keir Fraser <keir@xensource.com>
author kaf24@firebug.cl.cam.ac.uk
date Fri Jun 10 08:25:44 2005 +0000 (2005-06-10)
parents 792adee9258f
children 5e0480247269
files xen/arch/x86/x86_64/entry.S xen/include/public/arch-x86_64.h
line diff
     1.1 --- a/xen/arch/x86/x86_64/entry.S	Fri Jun 10 08:14:33 2005 +0000
     1.2 +++ b/xen/arch/x86/x86_64/entry.S	Fri Jun 10 08:25:44 2005 +0000
     1.3 @@ -316,7 +316,7 @@ FLT4:   movq  %rax,16(%rsi)             
     1.4          testb $TBF_INTERRUPT,%cl
     1.5          setnz VCPUINFO_upcall_mask(%rax)# TBF_INTERRUPT -> clear upcall mask
     1.6          popq  %rax
     1.7 -        shll  $16,%eax                  # Bits 16-23: saved_upcall_mask
     1.8 +        shlq  $32,%rax                  # Bits 32-39: saved_upcall_mask
     1.9          movw  UREGS_cs+8(%rsp),%ax      # Bits  0-15: CS
    1.10  FLT5:   movq  %rax,8(%rsi)              # CS/saved_upcall_mask
    1.11          movq  UREGS_rip+8(%rsp),%rax
     2.1 --- a/xen/include/public/arch-x86_64.h	Fri Jun 10 08:14:33 2005 +0000
     2.2 +++ b/xen/include/public/arch-x86_64.h	Fri Jun 10 08:25:44 2005 +0000
     2.3 @@ -153,16 +153,16 @@ typedef struct cpu_user_regs {
     2.4      u32 error_code;    /* private */
     2.5      u32 entry_vector;  /* private */
     2.6      union { u64 rip, eip; };
     2.7 -    u16 cs;
     2.8 +    u16 cs, _pad0[1];
     2.9      u8  saved_upcall_mask;
    2.10 -    u8  _pad0[5];
    2.11 +    u8  _pad1[3];
    2.12      union { u64 rflags, eflags; };
    2.13      union { u64 rsp, esp; };
    2.14 -    u16 ss, _pad1[3];
    2.15 -    u16 es, _pad2[3];
    2.16 -    u16 ds, _pad3[3];
    2.17 -    u16 fs, _pad4[3]; /* Non-zero => takes precedence over fs_base.      */
    2.18 -    u16 gs, _pad5[3]; /* Non-zero => takes precedence over gs_base_user. */
    2.19 +    u16 ss, _pad2[3];
    2.20 +    u16 es, _pad3[3];
    2.21 +    u16 ds, _pad4[3];
    2.22 +    u16 fs, _pad5[3]; /* Non-zero => takes precedence over fs_base.      */
    2.23 +    u16 gs, _pad6[3]; /* Non-zero => takes precedence over gs_base_user. */
    2.24  } cpu_user_regs_t;
    2.25  
    2.26  typedef u64 tsc_timestamp_t; /* RDTSC timestamp */