Source-Changes-D archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: CVS commit: src/sys/arch/i386/i386
On Tue, May 05, 2009 at 09:20:02PM +0000, Andrew Doran wrote:
> > I tried the following code instead:
> > IDTVEC(osyscall)
> > CLI(%eax) # must be first instruction
> > pushfl # set eflags in trap frame
> > popl 8(%esp)
> > orl $PSL_I,(%esp) # re-enable ints on return to user
> > pushl $7 # size of instruction for restart
> > jmp syscall1
> >
> > but the test binary from the PR segfaults:
> > truc# kdump |less
> >
> > 34 0 ktrace EMUL "netbsd"
> > 34 0 ktrace RET ktrace 0
> > 34 0 ktrace CALL execve(0xbf7ffc02,0xbf7feb3c,0xbf7feb44)
> > 34 0 ktrace NAMI "./architextIndex"
> > 34 0 architextIndex EMUL "netbsd"
> > 34 0 architextIndex RET syscall JUSTRETURN
> > 34 0 architextIndex PSIG SIGSEGV SIG_DFL: code=SEGV_ACCERR,
> > addr=0xacb 94, trap=4)
> > 34 0 architextIndex NAMI "architextIndex.core"
> >
> > On Xen CLI(%eax) expands to:
> > movl CPUVAR(VCPU),%eax ;
> > movb $1,EVTCHN_UPCALL_MASK(%eax)
>
> At this point the segment registers won't be set up.
I think xen restored it, at last the one pointing to curcpu. I'll have to
double-check it.
> And %eax contains the
> syscall number.
Ops. We can use another register then
--
Manuel Bouyer <bouyer%antioche.eu.org@localhost>
NetBSD: 26 ans d'experience feront toujours la difference
--
Home |
Main Index |
Thread Index |
Old Index