How does MOL work?
From Mol
Mac-On-Linux takes advantage of a feature of the PowerPC MMU to allow the Virtual Machine to run code on the processor natively. When an exception occurs, the PowerPC MMU turns off address translation. This handy feature allows MOL to handle the exception and set up a different MMU context (the VM's context). Execution of the VM's code now occurs until one of the following occurs:
* The VM tries to execute a privileged instruction * A page fault occurs * A DEC exception occurs * An IRQ occurs
The MOL kernel module handles each of these appropriately and then continues executing the VM's code. Most of the emulated hardware is handled in user space, very little is done in kernel space.
For a more detailed look at how this is accomplished, take a look at mainloop_asm.S.
Emulated Instructions
Some instructions are emulated by MOL, notably, the privileged instructions. A list of emulated instructions follows:
* mfspr * mtspr * mfmsr * mtmsr * rfi * mfsr * mfsrin * mtsr * mtsrin * tlbie * tlbsync * dcbi * tlbld (603 emulation only) * tlbhi (603 emulation only)

