Won De Erick schrieb:
----- Original Message ----

From: Rink Springer <[EMAIL PROTECTED]>


On Mon, Dec 01, 2008 at 09:38:51AM +0100, Christoph Mallon wrote:
Userland is not allowed to write to ports. That's the bus error you see. Also without a call to the exit syscall at the end, it will segfault.
Note that you can write to ports from userland by opening /dev/io - if
you have it opened, you can write to the ports.


I've added the following at the end

  mov eax, 1 ; SYS_exit
  call doint

  doint:
     int 0x80
     ret

Besides, I can see the following at /dev
crw-------   1 root   wheel       0,  16 Nov 27 01:53 io

How should I make this open? do i need to %include this?

You're probably better of writing this in C. Here is a wrapper for the out instruction:

static inline outb(unsigned short port, unsigned char data)
{
  asm("outb %0, %1" : : "a" (data), "dN" (port));
}

As Rink mentioned, you have to open /dev/io. The process must have super-user privileges, see io(4).

Regards
        Christoph
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to