i10_v86.c File Reference

#include <unistd.h>
#include <errno.h>
#include <asm/unistd.h>
#include <stdio.h>
#include <string.h>
#include "vm86_struct.h"
#include <signal.h>
#include "v86bios.h"
#include "AsmMacros.h"

Defines

#define INT2PTR(a)   ((a) + (unsigned char *) 0)
#define CPU_REG(x)   (vm86s.regs.x)
#define CPU_REG_LW(reg)   (*((CARD16 *)&CPU_REG(reg)))
#define CPU_REG_HW(reg)   (*((CARD16 *)&CPU_REG(reg) + 1))
#define CPU_REG_LB(reg)   (*(CARD8 *)&CPU_REG(e##reg))
#define SEG_ADR(type, seg, reg)   type((CPU_REG_LW(seg) << 4) + CPU_REG_LW(e##reg) + (unsigned char *) 0)
#define DF   (1 << 10)
#define LIN_PREF_SI   ((pref_seg << 4) + CPU_REG_LW(esi))
#define LWECX   (prefix66 ^ prefix67 ? CPU_REG(ecx) : CPU_REG_LW(ecx))
#define SET_LWECX_ZERO   (prefix66 ^ prefix67 ? (CPU_REG(ecx) = 0) : (CPU_REG_LW(ecx) = 0))
#define COPY(x)   regs.x = CPU_REG(x)
#define COPY_R(x)   CPU_REG(x) = regs.x
#define pushw(base, ptr, val)

Functions

int emu_vm86 (struct vm86_struct *vm, unsigned debug)
void log_err (char *format,...) __attribute__((format(printf
static int vm86_GP_fault (void)
static int vm86_do_int (int num)
void log_registers (void)
void setup_io (void)
static void setup_vm86 (unsigned long bios_start, i86biosRegsPtr regs)
void collect_bios_regs (i86biosRegsPtr regs)
static int do_vm86 (int cpuemu)
void do_x86 (unsigned long bios_start, i86biosRegsPtr regs, int cpuemu)
int run_bios_int (int num, struct regs86 *regs)
CARD32 getIntVect (int num)
CARD32 getIP (void)

Variables

void struct vm86_struct vm86s
pio P

Define Documentation

#define COPY  )     regs.x = CPU_REG(x)
 

#define COPY_R  )     CPU_REG(x) = regs.x
 

#define CPU_REG  )     (vm86s.regs.x)
 

#define CPU_REG_HW reg   )     (*((CARD16 *)&CPU_REG(reg) + 1))
 

#define CPU_REG_LB reg   )     (*(CARD8 *)&CPU_REG(e##reg))
 

#define CPU_REG_LW reg   )     (*((CARD16 *)&CPU_REG(reg)))
 

#define DF   (1 << 10)
 

#define INT2PTR  )     ((a) + (unsigned char *) 0)
 

#define LIN_PREF_SI   ((pref_seg << 4) + CPU_REG_LW(esi))
 

#define LWECX   (prefix66 ^ prefix67 ? CPU_REG(ecx) : CPU_REG_LW(ecx))
 

#define pushw base,
ptr,
val   ) 
 

Value:

{                                       \
        ptr = ((ptr) - 1) & 0xffff;                             \
        *((unsigned char *)(base) + (ptr)) = (val) >> 8;        \
        ptr = ((ptr) - 1) & 0xffff;                             \
        *((unsigned char *)(base) + (ptr)) = (val);             \
        }

#define SEG_ADR type,
seg,
reg   )     type((CPU_REG_LW(seg) << 4) + CPU_REG_LW(e##reg) + (unsigned char *) 0)
 

#define SET_LWECX_ZERO   (prefix66 ^ prefix67 ? (CPU_REG(ecx) = 0) : (CPU_REG_LW(ecx) = 0))
 


Function Documentation

void collect_bios_regs i86biosRegsPtr  regs  ) 
 

static int do_vm86 int  cpuemu  )  [static]
 

void do_x86 unsigned long  bios_start,
i86biosRegsPtr  regs,
int  cpuemu
 

int emu_vm86 struct vm86_struct vm,
unsigned  debug
 

CARD32 getIntVect int  num  ) 
 

CARD32 getIP void   ) 
 

void log_err char *  format,
  ...
 

void log_registers void   ) 
 

int run_bios_int int  num,
struct regs86 regs
 

void setup_io void   ) 
 

static void setup_vm86 unsigned long  bios_start,
i86biosRegsPtr  regs
[static]
 

static int vm86_do_int int  num  )  [static]
 

static int vm86_GP_fault void   )  [static]
 


Variable Documentation

struct pio P
 

void struct vm86_struct vm86s