Modules:core/x86emu
From Go-OS
Module info
The core/x86emu module provides an API to handle 16bits interruption calls, enabling system to use system's BIOS or GPU's BIOS to handle unknown hardware.
The code is based on x86emu, licensed under BSD license. The module is currently closed source, but may get released to allow speed improvements once no more TODO remains.
This module exports some functions to make life of other modules easier.
[3:0xc00a1ff8] core/x86emu (x86emu) at 0xc008b000=>0xc00a28f8 (bss: 0xd00417f4=>0xd0041f7c) * x86emu_bios_interrupt(0xc008b2f8) * x86emu_engine_lock(0xc008b158) * x86emu_engine_unlock(0xc008b168) * x86emu_set_register(0xc008b008) * x86emu_get_register(0xc008b0c8) * x86emu_set_virtual_pointer(0xc008bd28) * x86emu_allocate_physical_pointer(0xc008bc58) * x86emu_set_physical_pointer(0xc008bcd8) * x86emu_relocate_far_ptr(0xc008b9a8)
Available functions
#include <kmod/core/x86emu.h>
See Doxygen documentation for this file.
TODO
- Handle virtual 16bits memory in a separate memory space. Make all memory non-mapped, map memory on read, copy on write (unless the memory was previously mapped to a virtual pointer)
- Improve handling of virtual pointers (results of previous TODO)
- Really do stuff in engine_lock and engine_unlock (for now, nothing happens). As the bios itself may be non-threadsafe (it most likely stores temporary stuff in places we shouldn't access) we need to be careful.