socsvn commit: r239547 - soc2012/syuu/bhyve-bios/lib/libbiosemul
syuu at FreeBSD.org
syuu at FreeBSD.org
Wed Jul 18 15:51:00 UTC 2012
Author: syuu
Date: Wed Jul 18 15:50:56 2012
New Revision: 239547
URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=239547
Log:
refactoring doscmd program to library. only provides int13h handling for now.
Added:
soc2012/syuu/bhyve-bios/lib/libbiosemul/biosemul.c
- copied, changed from r239530, soc2012/syuu/bhyve-bios/lib/libbiosemul/doscmd.c
soc2012/syuu/bhyve-bios/lib/libbiosemul/biosemul.h
Replaced:
soc2012/syuu/bhyve-bios/lib/libbiosemul/doscmd.h
- copied, changed from r239530, soc2012/syuu/bhyve-bios/lib/libbiosemul/doscmd.h
Deleted:
soc2012/syuu/bhyve-bios/lib/libbiosemul/Makefile.dos
soc2012/syuu/bhyve-bios/lib/libbiosemul/ParseBuffer.c
soc2012/syuu/bhyve-bios/lib/libbiosemul/README
soc2012/syuu/bhyve-bios/lib/libbiosemul/README.booting_dos
soc2012/syuu/bhyve-bios/lib/libbiosemul/config.c
soc2012/syuu/bhyve-bios/lib/libbiosemul/crt0.c
soc2012/syuu/bhyve-bios/lib/libbiosemul/dos.c
soc2012/syuu/bhyve-bios/lib/libbiosemul/dos.h
soc2012/syuu/bhyve-bios/lib/libbiosemul/doscmd.1
soc2012/syuu/bhyve-bios/lib/libbiosemul/doscmd.c
soc2012/syuu/bhyve-bios/lib/libbiosemul/ems.c
soc2012/syuu/bhyve-bios/lib/libbiosemul/ems.h
soc2012/syuu/bhyve-bios/lib/libbiosemul/emsdriv.S
soc2012/syuu/bhyve-bios/lib/libbiosemul/emsdriv.sys.uu
soc2012/syuu/bhyve-bios/lib/libbiosemul/exe.c
soc2012/syuu/bhyve-bios/lib/libbiosemul/int2f.c
soc2012/syuu/bhyve-bios/lib/libbiosemul/intff.c
soc2012/syuu/bhyve-bios/lib/libbiosemul/net.c
soc2012/syuu/bhyve-bios/lib/libbiosemul/redir.S
soc2012/syuu/bhyve-bios/lib/libbiosemul/redir.com.uu
soc2012/syuu/bhyve-bios/lib/libbiosemul/setver.c
soc2012/syuu/bhyve-bios/lib/libbiosemul/xms.c
soc2012/syuu/bhyve-bios/lib/libbiosemul/xms.h
Modified:
soc2012/syuu/bhyve-bios/lib/libbiosemul/Makefile
soc2012/syuu/bhyve-bios/lib/libbiosemul/bios.c
soc2012/syuu/bhyve-bios/lib/libbiosemul/callback.c
soc2012/syuu/bhyve-bios/lib/libbiosemul/callback.h
soc2012/syuu/bhyve-bios/lib/libbiosemul/cpu.c
soc2012/syuu/bhyve-bios/lib/libbiosemul/cwd.c
soc2012/syuu/bhyve-bios/lib/libbiosemul/debug.c
soc2012/syuu/bhyve-bios/lib/libbiosemul/int.c
soc2012/syuu/bhyve-bios/lib/libbiosemul/int13.c
soc2012/syuu/bhyve-bios/lib/libbiosemul/int14.c
soc2012/syuu/bhyve-bios/lib/libbiosemul/mem.c
soc2012/syuu/bhyve-bios/lib/libbiosemul/mouse.c
soc2012/syuu/bhyve-bios/lib/libbiosemul/mouse.h
soc2012/syuu/bhyve-bios/lib/libbiosemul/port.c
soc2012/syuu/bhyve-bios/lib/libbiosemul/register.h
soc2012/syuu/bhyve-bios/lib/libbiosemul/signal.c
soc2012/syuu/bhyve-bios/lib/libbiosemul/timer.c
soc2012/syuu/bhyve-bios/lib/libbiosemul/trap.c
soc2012/syuu/bhyve-bios/lib/libbiosemul/tty.c
soc2012/syuu/bhyve-bios/lib/libbiosemul/video.c
Modified: soc2012/syuu/bhyve-bios/lib/libbiosemul/Makefile
==============================================================================
--- soc2012/syuu/bhyve-bios/lib/libbiosemul/Makefile Wed Jul 18 15:16:07 2012 (r239546)
+++ soc2012/syuu/bhyve-bios/lib/libbiosemul/Makefile Wed Jul 18 15:50:56 2012 (r239547)
@@ -2,53 +2,19 @@
#
# $FreeBSD: projects/doscmd/Makefile,v 1.39 2004/03/30 17:10:01 des Exp $
-PROG= doscmd
+LIB= biosemul
WARNS?= 2
-SRCS= AsyncIO.c ParseBuffer.c bios.c callback.c cmos.c config.c cpu.c cwd.c \
- debug.c disktab.c dos.c doscmd.c ems.c emuint.c exe.c i386-pinsn.c \
- int.c int10.c int13.c int14.c int16.c int17.c int1a.c int2f.c intff.c \
- mem.c mouse.c net.c port.c setver.c signal.c timer.c trace.c trap.c \
- tty.c video.c xms.c ${FONTHDRS}
+SRCS= biosemul.c \
+ bios.c callback.c \
+ debug.c i386-pinsn.c \
+ int13.c
+INCS= biosemul.h
CFLAGS+= -I. -DDISASSEMBLER
FONTFILES= cp437-8x8.pcf.gz cp437-8x14.pcf.gz cp437-8x16.pcf.gz
FONTHDRS= font8x8.h font8x14.h font8x16.h
-CLEANFILES= ${FONTFILES} ${FONTHDRS} emsdriv.sys redir.com
+CLEANFILES= ${FONTFILES} ${FONTHDRS}
-PREFIX?= /usr/local
-BINDIR?= ${PREFIX}/bin
-DATADIR?= ${PREFIX}/share/doscmd
-DOCSDIR?= ${PREFIX}/share/doc/doscmd
-FONTDIR?= ${DATADIR}/fonts
-
-X11BASE?= /usr/X11R6
-XINCDIR?= ${X11BASE}/include
-XLIBDIR?= ${X11BASE}/lib
-
-DIRMODE?= 0755
-
-.if !defined(NO_X)
-CFLAGS+= -I${XINCDIR}
-LDFLAGS= -L${XLIBDIR}
-LDADD= -lX11
-DPADD= ${XLIBDIR}/libX11.a
-.else
CFLAGS+= -DNO_X
-.endif
-
-beforeinstall:
- ${INSTALL} -d -o ${SHAREOWN} -g ${SHAREGRP} -m ${DIRMODE} ${DATADIR}
- ${INSTALL} -o ${SHAREOWN} -g ${SHAREGRP} -m ${SHAREMODE} \
- emsdriv.sys redir.com ${DATADIR}
- ${INSTALL} -d -o ${DOCOWN} -g ${DOCGRP} -m ${DIRMODE} ${DOCSDIR}
- ${INSTALL} -o ${DOCOWN} -g ${DOCGRP} -m ${DOCMODE} \
- ${.CURDIR}/README* ${.CURDIR}/PROBLEMS ${DOCSDIR}
-.if !defined(NO_X)
- ${INSTALL} -d -o ${SHAREOWN} -g ${SHAREGRP} -m ${DIRMODE} ${FONTDIR}
- ${INSTALL} -o ${SHAREOWN} -g ${SHAREGRP} -m ${SHAREMODE} \
- ${FONTFILES} ${.CURDIR}/fonts.dir ${FONTDIR}
-.endif
-
-doscmd: ${FONTFILES} ${FONTHDRS} emsdriv.sys redir.com
cp437-8x8.pcf.gz: cp437-8x8.pcf.gz.uu
uudecode ${.CURDIR}/cp437-8x8.pcf.gz.uu
@@ -59,9 +25,6 @@
cp437-8x16.pcf.gz: cp437-8x16.pcf.gz.uu
uudecode ${.CURDIR}/cp437-8x16.pcf.gz.uu
-emsdriv.sys: emsdriv.sys.uu
- uudecode ${.CURDIR}/emsdriv.sys.uu
-
font8x8.h: cp437-8x8.fnt.uu
uudecode -p ${.ALLSRC} | \
file2c 'u_int8_t font8x8[] = {' '};' > ${.TARGET}
@@ -74,7 +37,4 @@
uudecode -p ${.ALLSRC} | \
file2c 'u_int8_t font8x16[] = {' '};' > ${.TARGET}
-redir.com: redir.com.uu
- uudecode ${.CURDIR}/redir.com.uu
-
-.include <bsd.prog.mk>
+.include <bsd.lib.mk>
Modified: soc2012/syuu/bhyve-bios/lib/libbiosemul/bios.c
==============================================================================
--- soc2012/syuu/bhyve-bios/lib/libbiosemul/bios.c Wed Jul 18 15:16:07 2012 (r239546)
+++ soc2012/syuu/bhyve-bios/lib/libbiosemul/bios.c Wed Jul 18 15:50:56 2012 (r239547)
@@ -80,8 +80,9 @@
int ndisks = 0;
int nserial = 0;
int nparallel = 0;
-unsigned long rom_config;
+u_int32_t rom_config;
+#if 0
/*
** BIOS equipment list
*/
@@ -137,9 +138,11 @@
debug(D_TRAPS | 0x15, "BIOS: Keyboard intercept\n");
/* Don't translate scan code. */
break;
+#if 0
case 0x88:
get_raw_extmemory_info(REGS);
break;
+#endif
case 0xc0: /* Get configuration */
debug(D_TRAPS | 0x15, "BIOS: Get configuration\n");
PUTVEC(R_ES, R_BX, rom_config);
@@ -158,17 +161,20 @@
break;
}
}
+#endif
void
bios_init(void)
{
int i, j, k;
u_char *jtab;
+#if 0
struct timeval tv;
time_t tv_sec;
struct timezone tz;
struct tm tm;
- u_long vec;
+ u_int32_t vec;
+#endif
strcpy((char *)BIOS_copyright,
"Copyright (C) 1993 Krystal Technologies/BSDI");
@@ -254,16 +260,21 @@
strcpy((char *)jtab, "BSDI BIOS");
*jtab += 10;
+#if 0
InDOS = jtab++;
*InDOS = 0;
mouse_area = jtab;
+#endif
jtab += 0x10;
*(u_short *)&BIOSDATA[0x10] =
(1 << 0) | /* Diskette avail for boot */
(1 << 1) | /* Math co-processor */
+#if 0
(nmice << 2) | /* No pointing device */
+#endif
+ (0 << 2) |
(2 << 4) | /* Initial video (80 x 25 C) */
((nfloppies - 1) << 6) | /* Number of floppies - 1 */
(nserial << 9) | /* Number of serial devices */
@@ -283,10 +294,11 @@
BIOSDATA[0x91] = 0x40;
}
+#if 0
gettimeofday(&tv, &tz);
tv_sec = tv.tv_sec;
tm = *localtime(&tv_sec);
- *(u_long *)&BIOSDATA[0x6c] =
+ *(u_int32_t *)&BIOSDATA[0x6c] =
(((tm.tm_hour * 60 + tm.tm_min) * 60) + tm.tm_sec) * 182 / 10;
vec = insert_softint_trampoline();
@@ -319,4 +331,5 @@
vec = insert_softint_trampoline();
ivec[0x1a] = vec;
register_callback(vec, int1a, "int 1a");
+#endif
}
Copied and modified: soc2012/syuu/bhyve-bios/lib/libbiosemul/biosemul.c (from r239530, soc2012/syuu/bhyve-bios/lib/libbiosemul/doscmd.c)
==============================================================================
--- soc2012/syuu/bhyve-bios/lib/libbiosemul/doscmd.c Wed Jul 18 10:04:39 2012 (r239530, copy source)
+++ soc2012/syuu/bhyve-bios/lib/libbiosemul/biosemul.c Wed Jul 18 15:50:56 2012 (r239547)
@@ -52,11 +52,11 @@
#include <sys/proc.h>
#include <machine/sysarch.h>
+#if 0
#include <machine/vm86.h>
+#endif
#include "doscmd.h"
-#include "cwd.h"
-#include "trap.h"
#include "tty.h"
#include "video.h"
@@ -69,7 +69,8 @@
int raw_kbd = 0;
int timer_disable = 0;
struct timeval boot_time;
-unsigned long *ivec = (unsigned long *)0;
+u_int32_t *ivec = (u_int32_t *)0;
+char *lomem_addr = NULL;
#ifndef USE_VM86
#define PRB_V86_FORMAT 0x4242
@@ -82,6 +83,7 @@
};
#endif
+#if 0
/* local prototypes */
static void setup_boot(regcontext_t *REGS);
static int try_boot(int);
@@ -103,128 +105,30 @@
char cmdname[256]; /* referenced from dos.c */
static struct vm86_init_args kargs;
-
-/* lobotomise */
-int
-main(int argc, char **argv)
-{
-#ifndef USE_VM86
- ucontext_t uc;
-#else
- struct vm86_struct vm86s;
-#define sc vm86s.substr.regs.vmsc
#endif
- regcontext_t *REGS = (regcontext_t *)&uc.uc_mcontext;
- int fd;
- int i;
- sigset_t sigset;
-
- sigemptyset(&sigset);
- sigaddset(&sigset, SIGIO);
- sigaddset(&sigset, SIGALRM);
- sigprocmask(SIG_BLOCK, &sigset, 0);
- init_ints();
+#define HDISK_CYL 0
+#define HDISK_HEAD 0
+#define HDISK_TRACK 0
+#define HDISK_FILE "diskdev"
+/* lobotomise */
+void biosemul_init(char *lomem)
+{
+ lomem_addr = lomem;
debugf = stderr;
- /* XXX should only be for tty mode */
- fd = open (_PATH_DEVNULL, O_RDWR);
- if (fd != 3)
- dup2 (fd, 3); /* stdaux */
- if (fd != 4)
- dup2 (fd, 4); /* stdprt */
- if (fd != 3 && fd != 4)
- close (fd);
- fd = -1;
debug_set(0); /* debug any D_TRAPS without intnum */
-
- /* perform option argument processing */
- do_args(argc, argv);
- argc -= optind;
- argv += optind;
-
- if (vflag && debugf == stderr) {
- debugf = stdout;
- setbuf (stdout, NULL);
- }
-
- if (!initHMA()) {
- return 1;
- }
-
- /* This needs to happen before the executable is loaded */
- mem_init();
-
-#ifdef USE_VM86
- memset(&vm86s, 0, sizeof(vm86s));
-#endif
-
- /*
- * With no other arguments we will assume we must boot DOS
- */
- if (argc <= 0)
- booting = 1;
-
-#if 1
- /*
- * Nominate interrupts to handle here when the kernel is
- * performing interrupt handling.
- *
- * I would like to let INT 2F pass through as well, but I
- * need to get my hands on INT 2F:11 to do file redirection.
- */
- for (i = 0; i <= 0xff; ++i) {
- switch (i) {
- case 0x2f:
- case 0xff:
-#if 1
- kargs.int_map[i >> 3] |= (1 << (i & 7));
-#ifndef USE_VM86
- vconnect_area.passthru[i >> 5] &= ~(1 << (i & 0x1f));
-#else
- vm86s.int_byuser[i >> 3] |= (1 << (i & 0x07));
-#endif
-#endif
- break;
- default:
-#if 1
- kargs.int_map[i >> 3] &= ~(1 << (i & 7));
-#ifndef USE_VM86
- vconnect_area.passthru[i >> 5] |= (1 << (i & 0x1f));
-#else
- vm86s.int_byuser[i >> 3] |= (1 << (i & 0x07));
-#endif
-#endif
- break;
- }
- }
-#endif
-
- if (booting) { /* are we booting? */
- setup_boot(REGS);
- } else { /* no, load a command */
- setup_command(argc, argv, REGS);
- }
-
- /* install signal handlers */
- setsignal(SIGFPE, sigfpe); /* */
- setsignal(SIGALRM, sigalrm); /* */
- setsignal(SIGILL, sigill); /* */
- setsignal(SIGTRAP, sigtrap); /* */
- setsignal(SIGUSR2, sigtrace); /* */
- setsignal(SIGINFO, sigtrace); /* */
-#ifdef USE_VM86
- setsignal(SIGURG, sigurg); /* entry from NetBSD vm86 */
-#else
- setsignal(SIGBUS, sigbus); /* entry from FreeBSD, BSD/OS vm86 */
-#endif
+#if 0
/* Call init functions */
if (raw_kbd)
console_init();
init_io_port_handlers();
+#endif
bios_init();
+ init_hdisk(3, HDISK_CYL, HDISK_HEAD, HDISK_TRACK, HDISK_FILE, NULL);
+#if 0
cpu_init();
kbd_init();
kbd_bios_init();
@@ -234,69 +138,16 @@
video_bios_init();
disk_bios_init();
cmos_init();
- xms_init();
- dos_init();
- net_init();
- speaker_init();
+#endif
+#if 0
timer_init();
/* iomap_init(); */
gettimeofday(&boot_time, 0);
-
- if (zflag) for (;;) pause(); /* spin if requested */
-
- if (raw_kbd) {
- /*
- * If we have a raw keyboard, and hence, video,
- * sneak in a call to the video BIOS to reinit the
- * the video display.
- */
- u_long video_vector;
- static u_char video_trampoline[] = {
- 0x60, /* pusha */
- 0xB8, 0x03, 0x00, /* mov ax,00003h */
- 0xCD, 0x10, /* int 010h */
- 0x61, /* popa */
- 0xCF, /* iret */
- };
-
- video_vector = insert_generic_trampoline(
- sizeof(video_trampoline), video_trampoline);
-
- PUSH(R_FLAGS, REGS);
- PUSH(R_CS, REGS);
- PUSH(R_IP, REGS);
- PUTVEC(R_CS, R_IP, video_vector);
- }
-
- sigemptyset(&uc.uc_sigmask);
- sigaltstack(NULL, &uc.uc_stack);
- uc.uc_mcontext.mc_onstack = 0;
-
- if (tmode)
- tracetrap(REGS);
-
-#ifndef USE_VM86
- R_EAX = (booting || raw_kbd) ? (int)&vconnect_area : -1;
- R_EFLAGS |= PSL_VM | PSL_VIF; /* request VM86 mode */
-
- i386_vm86(VM86_INIT, &kargs);
-
- sigreturn(&uc);
- debug(D_ALWAYS,"sigreturn failed : %s\n", strerror(errno));
-#else
- vm86s.cpu_type = VCPU_586;
- i386_vm86(&vm86s);
#endif
-
- /* shouldn't get here */
- if (vflag) dump_regs(REGS);
- fatal ("vm86 returned (no kernel support?)\n");
-#undef sc
- /* quiet -Wall */
- return 0;
}
+#if 0
/*
** setup_boot
**
@@ -305,27 +156,6 @@
static void
setup_boot(regcontext_t *REGS)
{
- FILE *fp; /* doscmdrc handle */
- int fd; /* don't close this! */
-
- fp = find_doscmdrc(); /* get doscmdrc */
- if (!fp) {
- fprintf(stderr, "You must have a doscmdrc to boot\n");
- quit(1);
- }
-
- booting = read_config(fp); /* where to boot from? */
- fclose(fp);
- if (booting < 0) { /* not specified */
- if ((fd = try_boot(booting = 0)) < 0) /* try A: */
- fd = try_boot(booting = 2); /* try C: */
- } else {
- fd = try_boot(booting); /* do like the man says */
- }
-
- if (fd < 0)
- errx(1, "Failed to boot");
-
/* initialise registers for entry to bootblock */
R_EFLAGS = 0x20202;
R_CS = 0x0000;
@@ -797,6 +627,7 @@
fprintf(stderr, "Environment full, ignoring %s\n", value);
}
}
+#endif
/*
** replicate a fd up at the top of the range
@@ -819,6 +650,7 @@
return(fd);
}
+#if 0
/*
** Exit-time stuff
*/
@@ -850,6 +682,7 @@
}
exec_return(REGS, val);
}
+#endif
typedef struct COQ {
void (*func)(void *);
@@ -920,6 +753,7 @@
}
#endif
+#if 0
/* This is used to map in only the specified port range, instead of all
the ports or only certain port ranges.
*/
@@ -931,3 +765,4 @@
debug(D_PORT,"mapped I/O port: port=%#x count=%d\n", port, count);
}
+#endif
Added: soc2012/syuu/bhyve-bios/lib/libbiosemul/biosemul.h
==============================================================================
Modified: soc2012/syuu/bhyve-bios/lib/libbiosemul/callback.c
==============================================================================
--- soc2012/syuu/bhyve-bios/lib/libbiosemul/callback.c Wed Jul 18 15:16:07 2012 (r239546)
+++ soc2012/syuu/bhyve-bios/lib/libbiosemul/callback.c Wed Jul 18 15:50:56 2012 (r239547)
@@ -13,7 +13,7 @@
struct callback {
LIST_ENTRY(callback) chain;
- u_long vec;
+ u_int32_t vec;
callback_t func;
const char *name;
};
@@ -26,7 +26,7 @@
** Register (func) as a handler for (vec)
*/
void
-register_callback(u_long vec, callback_t func, const char *name)
+register_callback(u_int32_t vec, callback_t func, const char *name)
{
struct cbhead *head;
struct callback *elm;
@@ -44,7 +44,7 @@
** Find a handler for (vec)
*/
callback_t
-find_callback(u_long vec)
+find_callback(u_int32_t vec)
{
struct cbhead *head;
struct callback *elm;
@@ -60,7 +60,7 @@
return ((callback_t)0);
}
-u_long trampoline_rover = 0xF1000000;
+u_int32_t trampoline_rover = 0xF1000000;
/*
* Interrupts are disabled on an INTn call, so we must restore interrupts
@@ -103,11 +103,11 @@
0xcf, /* IRET */
};
-u_long
+u_int32_t
insert_generic_trampoline(size_t len, u_char *p)
{
u_char *q;
- u_long where;
+ u_int32_t where;
where = trampoline_rover;
q = (u_char *)VECPTR(where);
@@ -116,28 +116,28 @@
return (where);
}
-u_long
+u_int32_t
insert_softint_trampoline(void)
{
return (insert_generic_trampoline(
sizeof(softint_trampoline), softint_trampoline));
}
-u_long
+u_int32_t
insert_fossil_softint_trampoline(void)
{
return (insert_generic_trampoline(
sizeof(fossil_softint_trampoline), fossil_softint_trampoline));
}
-u_long
+u_int32_t
insert_hardint_trampoline(void)
{
return (insert_generic_trampoline(
sizeof(hardint_trampoline), hardint_trampoline));
}
-u_long
+u_int32_t
insert_null_trampoline(void)
{
return (insert_generic_trampoline(
Modified: soc2012/syuu/bhyve-bios/lib/libbiosemul/callback.h
==============================================================================
--- soc2012/syuu/bhyve-bios/lib/libbiosemul/callback.h Wed Jul 18 15:16:07 2012 (r239546)
+++ soc2012/syuu/bhyve-bios/lib/libbiosemul/callback.h Wed Jul 18 15:50:56 2012 (r239547)
@@ -5,10 +5,10 @@
*/
typedef void (*callback_t)(regcontext_t *);
-void register_callback(u_long, callback_t, const char *);
-callback_t find_callback(u_long);
-u_long insert_generic_trampoline(size_t, u_char *);
-u_long insert_softint_trampoline(void);
-u_long insert_fossil_softint_trampoline(void);
-u_long insert_hardint_trampoline(void);
-u_long insert_null_trampoline(void);
+void register_callback(u_int32_t, callback_t, const char *);
+callback_t find_callback(u_int32_t);
+u_int32_t insert_generic_trampoline(size_t, u_char *);
+u_int32_t insert_softint_trampoline(void);
+u_int32_t insert_fossil_softint_trampoline(void);
+u_int32_t insert_hardint_trampoline(void);
+u_int32_t insert_null_trampoline(void);
Modified: soc2012/syuu/bhyve-bios/lib/libbiosemul/cpu.c
==============================================================================
--- soc2012/syuu/bhyve-bios/lib/libbiosemul/cpu.c Wed Jul 18 15:16:07 2012 (r239546)
+++ soc2012/syuu/bhyve-bios/lib/libbiosemul/cpu.c Wed Jul 18 15:50:56 2012 (r239547)
@@ -72,7 +72,7 @@
void
cpu_init(void)
{
- u_long vec;
+ u_int32_t vec;
vec = insert_hardint_trampoline();
ivec[0x00] = vec;
@@ -121,7 +121,7 @@
emu_instr(regcontext_t *REGS)
{
int prefix = 1;
- u_int8_t *cs = (u_int8_t *)(R_CS << 4);
+ u_int8_t *cs = (u_int8_t *)(uintptr_t)(R_CS << 4);
int ip = R_IP;
int dir, i, instrlen;
u_int8_t *r8;
@@ -400,7 +400,7 @@
if (addr >= 0xa0000 && addr < 0xb0000)
return vga_read(addr);
else
- return *(u_int8_t *)addr;
+ return *(u_int8_t *)(uintptr_t)addr;
}
/* Write an 8-bit value to the location specified by 'addr'. If 'addr' lies
@@ -411,7 +411,7 @@
if (addr >= 0xa0000 && addr < 0xb0000)
vga_write(addr, val);
else
- *(u_int8_t *)addr = val;
+ *(u_int8_t *)(uintptr_t)addr = val;
return;
}
@@ -425,7 +425,7 @@
vga_write(addr, (u_int8_t)(val & 0xff));
vga_write(addr + 1, (u_int8_t)((val & 0xff00) >> 8));
} else
- *(u_int16_t *)addr = val;
+ *(u_int16_t *)(uintptr_t)addr = val;
return;
}
Modified: soc2012/syuu/bhyve-bios/lib/libbiosemul/cwd.c
==============================================================================
--- soc2012/syuu/bhyve-bios/lib/libbiosemul/cwd.c Wed Jul 18 15:16:07 2012 (r239546)
+++ soc2012/syuu/bhyve-bios/lib/libbiosemul/cwd.c Wed Jul 18 15:50:56 2012 (r239547)
@@ -854,7 +854,7 @@
int error;
search_t *search = &dir_search;
- debug(D_REDIR, "find_first(%s, %x, %x)\n", path, attr, (int)dta);
+ debug(D_REDIR, "find_first(%s, %x, %p)\n", path, attr, dta);
error = dos_makepath(path, new_path);
if (error)
Modified: soc2012/syuu/bhyve-bios/lib/libbiosemul/debug.c
==============================================================================
--- soc2012/syuu/bhyve-bios/lib/libbiosemul/debug.c Wed Jul 18 15:16:07 2012 (r239546)
+++ soc2012/syuu/bhyve-bios/lib/libbiosemul/debug.c Wed Jul 18 15:50:56 2012 (r239547)
@@ -36,9 +36,12 @@
__FBSDID("$FreeBSD: projects/doscmd/debug.c,v 1.8 2002/03/07 12:52:26 obrien Exp $");
#include <stdarg.h>
+#include <inttypes.h>
#include "doscmd.h"
+#if 0
#include "tty.h"
+#endif
/* debug output goes here */
FILE *debugf;
@@ -50,8 +53,8 @@
int vflag = 0;
/* interrupts to trace */
-#define BPW (sizeof(u_long) << 3)
-u_long debug_ints[256/BPW];
+#define BPW (sizeof(u_int32_t) << 3)
+u_int32_t debug_ints[256/BPW];
/* Debug flag manipulation */
void
@@ -68,7 +71,7 @@
debug_ints[x/BPW] &= ~(1 << (x & (BPW - 1)));
}
-u_long
+u_int32_t
debug_isset(int x)
{
x &= 0xff;
@@ -104,6 +107,7 @@
{
va_list args;
+#if 0
dead = 1;
if (xmode && !quietmode) {
@@ -126,12 +130,16 @@
for (;;)
tty_pause();
}
+#endif
va_start (args, fmt);
fprintf (debugf, "doscmd: fatal error ");
vfprintf (debugf, fmt, args);
va_end (args);
+#if 0
quit (1);
+#endif
+ exit (1);
}
/*
@@ -148,7 +156,7 @@
debug (D_ALWAYS, "ax=%04x bx=%04x cx=%04x dx=%04x\n", R_AX, R_BX, R_CX, R_DX);
debug (D_ALWAYS, "si=%04x di=%04x sp=%04x bp=%04x\n", R_SI, R_DI, R_SP, R_BP);
debug (D_ALWAYS, "cs=%04x ss=%04x ds=%04x es=%04x\n", R_CS, R_SS, R_DS, R_ES);
- debug (D_ALWAYS, "ip=%x eflags=%lx\n", R_IP, R_EFLAGS);
+ debug (D_ALWAYS, "ip=%x eflags=%"PRIx32"\n", R_IP, R_EFLAGS);
addr = (u_char *)MAKEPTR(R_CS, R_IP);
Copied and modified: soc2012/syuu/bhyve-bios/lib/libbiosemul/doscmd.h (from r239530, soc2012/syuu/bhyve-bios/lib/libbiosemul/doscmd.h)
==============================================================================
--- soc2012/syuu/bhyve-bios/lib/libbiosemul/doscmd.h Wed Jul 18 10:04:39 2012 (r239530, copy source)
+++ soc2012/syuu/bhyve-bios/lib/libbiosemul/doscmd.h Wed Jul 18 15:50:56 2012 (r239547)
@@ -62,7 +62,6 @@
#endif
#include "register.h"
-#include "dos.h"
#include "callback.h"
#define drlton(a) ((islower((a)) ? toupper((a)) : (a)) - 'A')
@@ -82,25 +81,23 @@
struct vconnect_area {
int int_state;
int magic; /* 0x4242 -> PRB format */
- u_long passthru[256>>5]; /* bitmap of INTs to handle */
- u_long magiciret[2]; /* Bounds of "magic" IRET */
+ u_int32_t passthru[256>>5]; /* bitmap of INTs to handle */
+ u_int32_t magiciret[2]; /* Bounds of "magic" IRET */
};
extern struct vconnect_area vconnect_area;
#define IntState vconnect_area.int_state
-/* ParseBuffer.c */
-int ParseBuffer(char *, char **, int);
-
/* bios.c */
-#define BIOSDATA ((u_char *)0x400)
-extern unsigned long rom_config;
+#define BIOSDATA ((u_char *)(0x400 + lomem_addr))
+extern u_int32_t rom_config;
extern int nfloppies;
extern int ndisks;
extern int nserial;
extern int nparallel;
-extern volatile int poll_cnt;
void bios_init(void);
+#if 0
+extern volatile int poll_cnt;
void wakeup_poll(void);
void reset_poll(void);
void sleep_poll(void);
@@ -108,11 +105,6 @@
/* cmos.c */
extern time_t delta_clock;
-void cmos_init(void);
-
-/* config.c */
-int read_config(FILE *fp);
-
/* cpu.c */
void cpu_init(void);
int emu_instr(regcontext_t *);
@@ -120,6 +112,7 @@
void int01(regcontext_t *);
void int03(regcontext_t *);
void int0d(regcontext_t *);
+#endif
/* debug.c */
extern int vflag;
@@ -166,10 +159,12 @@
void dump_regs(regcontext_t *);
void debug_set(int);
void debug_unset(int);
-u_long debug_isset(int);
+u_int32_t debug_isset(int);
+#if 0
/* disktab.c */
int map_type(int, int *, int *, int *);
+#endif
/* doscmd.c */
extern int capture_fd;
@@ -181,7 +176,7 @@
extern int timer_disable;
extern char cmdname[];
extern struct timeval boot_time;
-extern unsigned long *ivec;
+extern u_int32_t *ivec;
int _prog(char *);
void call_on_quit(void (*)(void *), void *);
@@ -192,17 +187,20 @@
void quit(int);
int squirrel_fd(int);
+#if 0
/* ems.c */
int ems_init(void);
void ems_entry(regcontext_t *);
/* emuint.c */
extern void emuint(regcontext_t *REGS);
+#endif
/* i386-pinsn.c */
extern int i386dis(unsigned short, unsigned short,
unsigned char *, char *, int);
+#if 0
/* int.c */
void init_ints(void);
int isinhardint(int);
@@ -215,6 +213,7 @@
/* int10.c */
extern void int10(regcontext_t *);
+#endif
/* int13.c */
extern int init_hdisk(int drive, int cyl, int head, int tracksize,
@@ -223,8 +222,11 @@
extern int disk_fd(int drive);
extern void make_readonly(int drive);
extern int search_floppy(int i);
+#if 0
extern void disk_bios_init(void);
+#endif
+#if 0
/* int14.c */
extern int fossil;
@@ -241,35 +243,24 @@
/* int1a.c */
void int1a(regcontext_t *);
-/* int2f.c */
-extern void int2f(regcontext_t *);
-
-/* intff.c */
-extern int int2f_11(regcontext_t *REGS);
-extern void intff(regcontext_t *REGS);
-
/* mem.c */
extern char *dosmem;
extern void mem_init(void);
extern int mem_alloc(int size, int owner, int *biggestp);
-extern int mem_adjust(int addr, int size, int *availp);
+extern int mem_adjust(long addr, int size, int *availp);
extern void mem_free_owner(int owner);
-extern void mem_change_owner(int addr, int owner);
+extern void mem_change_owner(long addr, int owner);
/* mouse.c */
void int33(regcontext_t *);
void mouse_init(void);
-/* net.c */
-void net_init(void);
-
/* port.c */
void define_input_port_handler(int, unsigned char (*)(int));
void define_output_port_handler(int, void (*)(int, unsigned char));
void inb(regcontext_t *, int);
unsigned char inb_port(int);
-unsigned char inb_speaker(int);
unsigned char inb_traceport(int);
void init_io_port_handlers(void);
void insb(regcontext_t *, int);
@@ -277,12 +268,10 @@
void inx(regcontext_t *, int);
void outb(regcontext_t *, int);
void outb_port(int, unsigned char);
-void outb_speaker(int, unsigned char);
void outb_traceport(int, unsigned char);
void outsb(regcontext_t *, int);
void outsx(regcontext_t *, int);
void outx(regcontext_t *, int);
-void speaker_init(void);
/* setver.c */
extern void setver(char *, short);
@@ -306,6 +295,7 @@
extern int int2f_43(regcontext_t *REGS);
extern int initHMA(void);
extern void xms_init(void);
-extern u_long xms_maxsize;
+extern u_int32_t xms_maxsize;
+#endif
/****************************** dirty below here *****************************/extern int nmice;
Modified: soc2012/syuu/bhyve-bios/lib/libbiosemul/int.c
==============================================================================
--- soc2012/syuu/bhyve-bios/lib/libbiosemul/int.c Wed Jul 18 15:16:07 2012 (r239546)
+++ soc2012/syuu/bhyve-bios/lib/libbiosemul/int.c Wed Jul 18 15:50:56 2012 (r239547)
@@ -23,6 +23,8 @@
#include <sys/cdefs.h>
__FBSDID("$FreeBSD: projects/doscmd/int.c,v 1.8 2002/03/30 13:51:40 dwmalone Exp $");
+#include <inttypes.h>
+
#include "doscmd.h"
struct IRQ {
@@ -52,6 +54,7 @@
return Irqs[irql].within;
}
+#if 0
static void
set_vip(void)
{
@@ -71,10 +74,12 @@
R_EFLAGS &= ~PSL_VIP;
}
+#endif
void
resume_interrupt(void)
{
+#if 0
regcontext_t *REGS = saved_regcontext;
int irql;
@@ -94,6 +99,7 @@
}
}
set_vip();
+#endif
}
void
@@ -118,8 +124,9 @@
void
hardint(int irql)
{
+#if 0
regcontext_t *REGS = saved_regcontext;
- u_long vec = ivec[8 + irql];
+ u_int32_t vec = ivec[8 + irql];
/*
** if we're dead, or there's no vector, or the saved registers
@@ -146,7 +153,7 @@
return;
}
- debug(D_TRAPS | (8 + irql), "Int%02x [%04lx:%04lx]\n",
+ debug(D_TRAPS | (8 + irql), "Int%02x [%04"PRIx32":%04"PRIx32"]\n",
8 + irql, vec >> 16, vec & 0xffff);
Irql = irql;
@@ -159,15 +166,18 @@
PUSH(R_IP, REGS);
R_EFLAGS &= ~PSL_VIF; /* XXX disable interrupts */
PUTVEC(R_CS, R_IP, vec);
+#endif
}
void
unpend(int irql)
{
+#if 0
if (!Irqs[irql].pending)
return;
Irqs[irql].pending = 0;
set_vip();
+#endif
}
static unsigned char
@@ -204,7 +214,7 @@
softint(int intnum)
{
regcontext_t *REGS = saved_regcontext;
- u_long vec = ivec[intnum];
+ u_int32_t vec = ivec[intnum];
/*
** if we're dead, or there's no vector or the saved registers are
@@ -220,7 +230,7 @@
if ((vec >> 16) == 0xf000 || *(u_char *)VECPTR(vec) == 0xcf)
return;
- debug(D_TRAPS | intnum, "INT %02x [%04lx:%04lx]\n",
+ debug(D_TRAPS | intnum, "INT %02x [%04"PRIx32":%04"PRIx32"]\n",
intnum, vec >> 16, vec & 0xffff);
PUSH((R_FLAGS & ~PSL_I) | (R_EFLAGS & PSL_VIF ? PSL_I : 0), REGS);
Modified: soc2012/syuu/bhyve-bios/lib/libbiosemul/int13.c
==============================================================================
--- soc2012/syuu/bhyve-bios/lib/libbiosemul/int13.c Wed Jul 18 15:16:07 2012 (r239546)
+++ soc2012/syuu/bhyve-bios/lib/libbiosemul/int13.c Wed Jul 18 15:50:56 2012 (r239547)
*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
More information about the svn-soc-all
mailing list