libhd  5.0
Macros | Functions | Variables
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"

Macros

#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
struct pio P

Macro Definition Documentation

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

Referenced by vm86_do_int().

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

Referenced by vm86_do_int().

#define CPU_REG (   x)    (vm86s.regs.x)
#define CPU_REG_HW (   reg)    (*((CARD16 *)&CPU_REG(reg) + 1))
#define CPU_REG_LB (   reg)    (*(CARD8 *)&CPU_REG(e##reg))

Referenced by vm86_GP_fault().

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

Referenced by run_bios_int(), and vm86_GP_fault().

#define DF   (1 << 10)

Referenced by vm86_GP_fault().

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

Referenced by run_bios_int(), and vm86_GP_fault().

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

Referenced by vm86_GP_fault().

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

Referenced by vm86_GP_fault().

#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); \
}

Referenced by run_bios_int().

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

Referenced by vm86_GP_fault().

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

Referenced by vm86_GP_fault().

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 
)

References collect_bios_regs(), do_vm86(), and setup_vm86().

Referenced by CallInt10().

int emu_vm86 ( struct vm86_struct vm,
unsigned  debug 
)
CARD32 getIntVect ( int  num)

Referenced by int42_handler().

CARD32 getIP ( void  )

References CPU_REG, regs86::cs, and regs86::eip.

void log_err ( char *  format,
  ... 
)
void log_registers ( void  )
int run_bios_int ( int  num,
struct regs86 regs 
)
void setup_io ( void  )

References pio::inb, pio::inl, pio::inw, pio::outb, pio::outl, pio::outw, P, and void().

Referenced by InitInt10().

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

Referenced by setup_io(), and vm86_GP_fault().

void struct vm86_struct vm86s