Using sysarch specific syscalls in assembly?
ari edelkind
edelkind-freebsd-hackers at episec.com
Tue Aug 9 15:45:42 GMT 2005
On 8/9/2005, "alexander" <arundel at h3c.de> wrote:
[...]
>Unfortunately I'm experiencing some problems right now. From time to time
>I'm getting a
>
>'Bus error: 10 (core dumped)'
>
>This however appears randomly. One time I run the app everything works fine,the
>next time it core dumps. Are there any errors in my code?
>
>%define SYSARCH 165 ; syscall sysarch(2)
>%define I386_SET_IOPERM 4 ; i386_set_ioperm(2) number
>
>ioperm_args dd 378h
> dd 3
> dd 1
>
>OpenIO:
> push byte ioperm_args
> push dword I386_SET_IOPERM
> mov eax,SYSARCH
> Call _syscall
[...]
You need to push a _pointer_ to a structure as your second argument to
sysarch(2). This means something more along the lines of:
ioperm_args dd 378h
dd 3
dd 1
argp dd ioperm_args
[...]
push dword argp
push dword I386_SET_IOPERM
[...]
Get this wrong, and you'll have unpredictable results.
ari
More information about the freebsd-hackers
mailing list