* Why/when use 0x10 and 0x90 for system calls?
@ 2007-12-09 18:55 Javier Barrio
2007-12-11 10:08 ` Javier Barrio
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Javier Barrio @ 2007-12-09 18:55 UTC (permalink / raw)
To: sparclinux
Hi,
I was doing a little research for myself about system calls on Linux sparc64
and, acording to /usr/include/asm-sparc/traps.h, to execute a system call what
I need to do is to generate a software trap: ta 0x90. Then I coded a little .s
file to test that, and worked:
.global _start
_start:
mov 1, %o0
set string, %o1
mov 0x11, %o2
mov 4, %g1
ta 0x90
mov 0, %o0
mov 1, %g1
ta 0x90
string:
.asciz "write() invoked!\n"
I did compiled it with as and linked with ld, then executed it:
$ as write.s -o write.o && ld write.o -owrite && ./write
write() invoked!
$
Then I straced it to actually see it working, and something weird happened:
$ strace ./write
execve("./write", ["./write"], [/* 35 vars */]) = 0
syscall: unknown syscall trap 91d02090 000100a8
$
I looked everywhere inside /usr/include and also somewhere inside the linux
kernel 2.6.21 source, focusing on entry.S, where I found nothing.
After hours of frustration I did find on Google people using 'ta 0x10' instead
of 'ta 0x90'. I tested it, worked fine and also I was able to strace it, but I
found that '0x10' nowhere. I don't know where it is defined, hardcoded, or
whatever. None of my two books about Sparc speak about that.
Would anyone here be so kind to explain me that behaviour and when or why use
0x90 or 0x10? Maybe 'ta 0x10' is faster than 'ta 0x90'
Thanks in advance.
--
echo "dpefsAgmv{p/psh" | perl -pe 's/(.)/chr(ord($1)-1)/ge'
GnuPG key ID 0x6D2FF8B5 @ pgp.rediris.es
http://www.fluzo.org/
^ permalink raw reply [flat|nested] 4+ messages in thread* Re: Why/when use 0x10 and 0x90 for system calls? 2007-12-09 18:55 Why/when use 0x10 and 0x90 for system calls? Javier Barrio @ 2007-12-11 10:08 ` Javier Barrio 2007-12-11 15:47 ` Javier Barrio 2007-12-12 23:30 ` Jan Engelhardt 2 siblings, 0 replies; 4+ messages in thread From: Javier Barrio @ 2007-12-11 10:08 UTC (permalink / raw) To: sparclinux Sorry to annoy with that, but I find it weird. Does someone know the answer? Maybe Davem? Cheers. -- echo "dpefsAgmv{p/psh" | perl -pe 's/(.)/chr(ord($1)-1)/ge' GnuPG key ID 0x6D2FF8B5 @ pgp.rediris.es http://www.fluzo.org/ <ยบ ))))>< - To unsubscribe from this list: send the line "unsubscribe sparclinux" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: Why/when use 0x10 and 0x90 for system calls? 2007-12-09 18:55 Why/when use 0x10 and 0x90 for system calls? Javier Barrio 2007-12-11 10:08 ` Javier Barrio @ 2007-12-11 15:47 ` Javier Barrio 2007-12-12 23:30 ` Jan Engelhardt 2 siblings, 0 replies; 4+ messages in thread From: Javier Barrio @ 2007-12-11 15:47 UTC (permalink / raw) To: sparclinux Oh, I think I got it: ta 0x10 seems to actually become in trap always HV_FAST_TRAP + 0x10 = ta 0x80+0x10 = ta 0x90 The same applies for 'ta 0x8' for Solaris binary emulation: 0x8 + 0x80 = 0x88 It seems the OS/compiler is smart enough to understand both 0x90 and 0x10 while strace is not. Cheers. -- echo "dpefsAgmv{p/psh" | perl -pe 's/(.)/chr(ord($1)-1)/ge' GnuPG key ID 0x6D2FF8B5 @ pgp.rediris.es http://www.fluzo.org/ <ยบ ))))>< - To unsubscribe from this list: send the line "unsubscribe sparclinux" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: Why/when use 0x10 and 0x90 for system calls? 2007-12-09 18:55 Why/when use 0x10 and 0x90 for system calls? Javier Barrio 2007-12-11 10:08 ` Javier Barrio 2007-12-11 15:47 ` Javier Barrio @ 2007-12-12 23:30 ` Jan Engelhardt 2 siblings, 0 replies; 4+ messages in thread From: Jan Engelhardt @ 2007-12-12 23:30 UTC (permalink / raw) To: sparclinux On Dec 11 2007 16:47, Javier Barrio wrote: > >Oh, I think I got it: > >ta 0x10 seems to actually become in > >trap always HV_FAST_TRAP + 0x10 = ta 0x80+0x10 = ta 0x90 > >The same applies for 'ta 0x8' for Solaris binary emulation: > >0x8 + 0x80 = 0x88 > >It seems the OS/compiler is smart enough to understand both 0x90 and >0x10 while strace is not. If so, you should find '... & 0x80' or similar in the kernel source and a lack there of in strace :) ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2007-12-12 23:30 UTC | newest] Thread overview: 4+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2007-12-09 18:55 Why/when use 0x10 and 0x90 for system calls? Javier Barrio 2007-12-11 10:08 ` Javier Barrio 2007-12-11 15:47 ` Javier Barrio 2007-12-12 23:30 ` Jan Engelhardt
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.