I presume this is known-working on Linux?
I've verified that we're setting up two different callback addresses,
but a 32u/64k/64h syscall is ending up in the 64u handler. From what I
can see, this code:
/* TB_eip = (32-bit syscall && syscall32_addr) ?
* syscall32_addr : syscall_addr */
xor %eax,%eax
cmpw $FLAT_USER_CS32,UREGS_cs(%rsp)
/*cmpw $0x43,UREGS_cs(%rsp)*/
cmoveq VCPU_syscall32_addr(%rbx),%rax
testq %rax,%rax
cmovzq VCPU_syscall_addr(%rbx),%rax
is supposed to be noticing the %cs written to the stack via here:
410 /* Trampoline for SYSCALL entry from compatibility mode. */
411 stack = (char *)L1_CACHE_ALIGN((unsigned long)stack);
412 wrmsrl(MSR_CSTAR, (unsigned long)stack);
413 stack += write_stack_trampoline(stack, stack_bottom, FLAT_USER_CS32);
and loading my syscall32 handler's %rip. Any suggestions on what might be going
wrong? Here's the state of the world when dropped into the syscall handler:
kmdb: stop at sys_syscall
kmdb: target stopped at:
sys_syscall: popq %rcx
[9]> ::regs
%rax = 0x0000000000000014 %r9 = 0x000000000000281f
%rbx = 0x00000000feffb7b4 %r10 = 0x0000000000000001
%rcx = 0xfffffffffb8012f8 sys_syscall %r11 = 0x0000000000000206
%rdx = 0x0000000000000000 %r12 = 0x0000000000000001
%rsi = 0x0000000008047d88 %r13 = 0x0000000000000000
%rdi = 0x0000000008047e1c %r14 = 0xffffff091c1070f0
%r8 = 0xffffff091c1070f0 %r15 = 0x00000000ffff4ff0
%rip = 0xfffffffffb8012f8 sys_syscall
%rbp = 0x0000000008047d88
%rsp = 0xffffff003c09cfb8
%rflags = 0x00000006
id=0 vip=0 vif=0 ac=0 vm=0 rf=0 nt=0 iopl=0x0
status=<of,df,if,tf,sf,zf,af,PF,cf>
%cs = 0xe030 %ds = 0x004b %es = 0x004b
%trapno = 0x3 %fs = 0x0000 %gs = 0x01c3
%err = 0x0
[9]> 0xffffff003c09cfb8,0x100::dump -g 8 -e
ffffff003c09cfb8: 0000000008050c81 0000000000000306
ffffff003c09cfc8: 0000000008050c81 000000000000e023
ffffff003c09cfd8: 0000000000000306 0000000008047d84
ffffff003c09cfe8: 000000000000e02b 0000000000000000
ffffff003c09cff8: 0000000000000000
thanks
john
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|