Doug White wrote: >On Mon, 7 Jun 2004, Phil Schulz wrote: > > > >>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? >> >> > >You'll have to do it from the kernel. The BIOS call will probably want to >poke memory and I/O ports you won't have access to. > >You'll also need to know if its 32-bit protected mode safe or not; if not >you'll have to set up VM86() to make the call. > >Have you checked for an ACPI method that implements the same thing? > > > How do I check that? I managed to get the code running in the kernel. I plan on posting the code at the ipw(4) homepage soon. I'm not sure if I did things 'right' but it works reliably. Phil. >>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) >>); >> >> >>_______________________________________________ >>freebsd-current_at_freebsd.org mailing list >>http://lists.freebsd.org/mailman/listinfo/freebsd-current >>To unsubscribe, send any mail to "freebsd-current-unsubscribe_at_freebsd.org" >> >> >> > > >Received on Tue Jun 08 2004 - 09:22:30 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:37:56 UTC