#ifndef _OS_EMUL_H_
#define _OS_EMUL_H_
-#ifndef INLINE_OS_EMUL
-#define INLINE_OS_EMUL
-#endif
+typedef struct _os_emul os_emul;
+
+INLINE_OS_EMUL\
+(os_emul *) os_emul_create
+(const char *file_name,
+ device *root);
-typedef struct _os_emul *os_emul;
+INLINE_OS_EMUL\
+(void) os_emul_init
+(os_emul *emulation,
+ int nr_cpus);
-INLINE_OS_EMUL os_emul *os_emul_create
-(char *emulation_name);
-INLINE_OS_EMUL void os_emul_init
-(os_emul *emulation);
+/* System-call emulation - for user code. Instead of trapping system
+ calls to kernel mode, the simulator emulates the kernels behavour */
-INLINE_OS_EMUL void os_emul_call
+INLINE_OS_EMUL\
+(void) os_emul_system_call
(cpu *processor,
unsigned_word cia);
+
+/* Instruction emulation - for kernel code. Extra (normally illegal)
+ instructions are added to the instruction table that when executed
+ call this emulation function. The instruction call emulator should
+ verify the address that the instruction appears before emulating
+ the required behavour. If the verification fails, a zero value
+ should be returned (indicating instruction illegal). */
+
+INLINE_OS_EMUL\
+(int) os_emul_instruction_call
+(cpu *processor,
+ unsigned_word cia,
+ unsigned_word ra);
+
#endif