Date: Mon, 07 Jun 2004 00:09:19 +0200 From: Phil Schulz <ph.schulz@gmx.de> To: freebsd-current@freebsd.org Subject: Execute BIOS function Message-ID: <40C3960F.4080305@gmx.de>
next in thread | raw e-mail | index | archive | help
Hello List!
The radio transmitter of my new centrino laptop is turned on by a BIOS
function which resides at a certain location in memory. I know how to
find the adress of the function's start but I don't yet know how to tell
the OS that I do want to execute that memory region and make it let me
do so. When running the program I get "Bus error (core dumped)". So the
question is: Can I actually execute the BIOS code from userland or do I
have to do it from kernelspace? How do I tell the kernel that I want the
memory region to be executed and make it let me do so?
Any help is appreciated.
Thanks,
Phil.
--
This is a part of the code (I hope it's not going to be wrapped).
bios_code_addr holds the BIOS function's start address and dev_mem is a
file-descriptor to /dev/mem.
ptr = mmap( 0, BIOS_CODE_SIZE, PROT_EXEC,
0, dev_mem, bios_code_addr );
__asm__ __volatile__ (
"call *%3 \t\n"
: "=a"(eax)
: "a"(eax), "b"(ebx), "c"(ptr)
);
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?40C3960F.4080305>
