Skip to contentSkip to conversation

qemu: upgrade to 2.0.0

PATCH New Cristian Iorga 1 participant 3 messages Jun 2, 2014

lore
Share & tools
lore
#0 lore raw

cover qemu: upgrade to 2.0.0

QEmu upgrade to 2.0.0

Tested with all qemu machines.

Due to updated SeaBIOS, for x86* architectures,
a fix for v86d is also needed.

The following changes since commit ae642d3fadb83f641034148d833a5c1deb3a1f10:

socat: upgrade to 1.7.2.4 (2014-06-01 14:30:40 +0100)

are available in the git repository at:

git://git.yoctoproject.org/poky-contrib ciorga/qemu_upg_20
http://git.yoctoproject.org/cgit.cgi/poky-contrib/log/?h=ciorga/qemu_upg_20

Cristian Iorga (2):
v86d: fix for SeaBIOS VGA BIOS compatibility
qemu: upgrade to 2.0.0

 .../v86d/v86d/Update-x86emu-from-X.org.patch       | 21766 +++++++++++++++++++
 meta/recipes-bsp/v86d/v86d_0.1.10.bb               |     3 +-
 .../recipes-devtools/qemu/qemu/fxrstorssefix.patch |    31 -
 .../qemu/{qemu_1.7.0.bb => qemu_2.0.0.bb}          |     9 +-
 4 files changed, 21772 insertions(+), 37 deletions(-)
 create mode 100644 meta/recipes-bsp/v86d/v86d/Update-x86emu-from-X.org.patch
 delete mode 100644 meta/recipes-devtools/qemu/qemu/fxrstorssefix.patch
 rename meta/recipes-devtools/qemu/{qemu_1.7.0.bb => qemu_2.0.0.bb} (70%)
Signature · 1 line
1.9.1
#1 lore raw

PATCH 1/2 v86d: fix for SeaBIOS VGA BIOS compatibility

This fixes a compatibility issue between v86d
and SeaBIOS VGA BIOS where the leal instruction
is not decoded properly. Read the
http://thread.gmane.org/gmane.comp.emulators.qemu/271806
thread for more details.
Patch taken from upstream.

---
 .../v86d/v86d/Update-x86emu-from-X.org.patch       | 21766 +++++++++++++++++++
 meta/recipes-bsp/v86d/v86d_0.1.10.bb               |     3 +-
 2 files changed, 21768 insertions(+), 1 deletion(-)
 create mode 100644 meta/recipes-bsp/v86d/v86d/Update-x86emu-from-X.org.patch
meta/recipes-bsp/v86d/v86d/Update-x86emu-from-X.org.patch new file +21766 -0
new file mode 100644
index 0000000..a09e2a2
@@ -0,0 +1,21766 @@
+From 1a410ae58f28eeab32fa87626cfd5a663ba33c51 Mon Sep 17 00:00:00 2001
+From: Bernhard Walle <[email protected]>
+Date: Tue, 13 May 2014 23:40:56 +0200
+Subject: [PATCH 2/2] Update x86emu from X.org
+
+This commit updates the x86emu copy from X.org tarball
+(ftp://mirror.csclub.uwaterloo.ca/x.org/current/src/xserver/xorg-server-1.12.2.tar.bz2).
+
+This fixes a compatibility issue between v86d and SeaBIOS VGA BIOS where
+the leal instruction is not decoded properly. Read the
+http://thread.gmane.org/gmane.comp.emulators.qemu/271806 thread for more
+details.
+
+Upstream-Status: Backport
+
+Signed-off-by: Bernhard Walle <[email protected]>
+---
+ libs/x86emu/LICENSE               |   17 -
+ libs/x86emu/debug.c               |  509 +++---
+ libs/x86emu/decode.c              | 1069 ++++++------
+ libs/x86emu/fpu.c                 |  463 +++---
+ libs/x86emu/ops.c                 | 2940 +++++++++++++++++++--------------
+ libs/x86emu/ops2.c                | 1929 +++++++++++-----------
+ libs/x86emu/prim_ops.c            | 3219 +++++++++++++++++++------------------
+ libs/x86emu/sys.c                 |  583 +++----
+ libs/x86emu/validate.c            |   52 +-
+ libs/x86emu/x86emu.h              |   75 +-
+ libs/x86emu/x86emu/debug.h        |  163 +-
+ libs/x86emu/x86emu/decode.h       |   57 +-
+ libs/x86emu/x86emu/fpu.h          |   23 +-
+ libs/x86emu/x86emu/fpu_regs.h     |   44 +-
+ libs/x86emu/x86emu/ops.h          |    6 +-
+ libs/x86emu/x86emu/prim_asm.h     |  251 ++-
+ libs/x86emu/x86emu/prim_ops.h     |  188 +--
+ libs/x86emu/x86emu/prim_x86_gcc.h |   77 +
+ libs/x86emu/x86emu/regs.h         |  101 +-
+ libs/x86emu/x86emu/types.h        |   50 +-
+ libs/x86emu/x86emu/x86emui.h      |   34 +-
+ 21 files changed, 6379 insertions(+), 5471 deletions(-)
+ delete mode 100644 libs/x86emu/LICENSE
+ create mode 100644 libs/x86emu/x86emu/prim_x86_gcc.h
+
+diff --git a/libs/x86emu/LICENSE b/libs/x86emu/LICENSE
+deleted file mode 100644
+index a3ede4a..0000000
+--- a/libs/x86emu/LICENSE
++++ /dev/null
+@@ -1,17 +0,0 @@
+-                         License information
+-                         -------------------
+-
+-The x86emu library is under a BSD style license, comaptible
+-with the XFree86 and X licenses used by XFree86. The
+-original x86emu libraries were under the GNU General Public
+-License. Due to license incompatibilities between the GPL
+-and the XFree86 license, the original authors of the code
+-decided to allow a license change. If you have submitted
+-code to the original x86emu project, and you don't agree
+-with the license change, please contact us and let you
+-know. Your code will be removed to comply with your wishes.
+-
+-If you have any questions about this, please send email to
[email protected] or [email protected] for
+-clarification.
+-
+diff --git a/libs/x86emu/debug.c b/libs/x86emu/debug.c
+index 6fd7f11..1a8d1d6 100644
+--- a/libs/x86emu/debug.c
++++ b/libs/x86emu/debug.c
+@@ -38,6 +38,8 @@
+ ****************************************************************************/
+ 
+ #include "x86emu/x86emui.h"
++#include <stdio.h>
++#include <string.h>
+ #ifndef NO_SYS_HEADERS
+ #include <stdarg.h>
+ #include <stdlib.h>
+@@ -47,46 +49,51 @@
+ 
+ #ifdef DEBUG
+ 
+-static void     print_encoded_bytes (u16 s, u16 o);
+-static void     print_decoded_instruction (void);
+-static int      parse_line (char *s, int *ps, int *n);
+-  
++static void print_encoded_bytes(u16 s, u16 o);
++static void print_decoded_instruction(void);
++static int parse_line(char *s, int *ps, int *n);
++
+ /* should look something like debug's output. */
+-void X86EMU_trace_regs (void)
++void
++X86EMU_trace_regs(void)
+ {
+-	if (DEBUG_TRACE()) {
+-		x86emu_dump_regs();
++    if (DEBUG_TRACE()) {
++        x86emu_dump_regs();
+     }
+-	if (DEBUG_DECODE() && ! DEBUG_DECODE_NOPRINT()) {
+-		printk("%04x:%04x ",M.x86.saved_cs, M.x86.saved_ip);
+-		print_encoded_bytes( M.x86.saved_cs, M.x86.saved_ip);
+-		print_decoded_instruction();
++    if (DEBUG_DECODE() && !DEBUG_DECODE_NOPRINT()) {
++        printk("%04x:%04x ", M.x86.saved_cs, M.x86.saved_ip);
++        print_encoded_bytes(M.x86.saved_cs, M.x86.saved_ip);
++        print_decoded_instruction();
+     }
+ }
+ 
+-void X86EMU_trace_xregs (void)
++void
++X86EMU_trace_xregs(void)
+ {
+-	if (DEBUG_TRACE()) {
+-		x86emu_dump_xregs();
++    if (DEBUG_TRACE()) {
++        x86emu_dump_xregs();
+     }
+ }
+ 
+-void x86emu_just_disassemble (void)
++void
++x86emu_just_disassemble(void)
+ {
+     /*
+      * This routine called if the flag DEBUG_DISASSEMBLE is set kind
+      * of a hack!
+      */
+-	printk("%04x:%04x ",M.x86.saved_cs, M.x86.saved_ip);
+-	print_encoded_bytes( M.x86.saved_cs, M.x86.saved_ip);
+-	print_decoded_instruction();
++    printk("%04x:%04x ", M.x86.saved_cs, M.x86.saved_ip);
++    print_encoded_bytes(M.x86.saved_cs, M.x86.saved_ip);
++    print_decoded_instruction();
+ }
+ 
+-static void disassemble_forward (u16 seg, u16 off, int n)
++static void
++disassemble_forward(u16 seg, u16 off, int n)
+ {
+-	X86EMU_sysEnv tregs;
+-	int i;
+-	u8 op1;
++    X86EMU_sysEnv tregs;
++    int i;
++    u8 op1;
++
+     /*
+      * hack, hack, hack.  What we do is use the exact machinery set up
+      * for execution, except that now there is an additional state
+@@ -111,17 +118,17 @@ static void disassemble_forward (u16 seg, u16 off, int n)
+      * This was done for an entirely different reason, but makes a
+      * nice way to get the system to help debug codes.
+      */
+-	tregs = M;
++    tregs = M;
+     tregs.x86.R_IP = off;
+     tregs.x86.R_CS = seg;
+-    
++
+     /* reset the decoding buffers */
+     tregs.x86.enc_str_pos = 0;
+     tregs.x86.enc_pos = 0;
+-    
++
+     /* turn on the "disassemble only, no execute" flag */
+     tregs.x86.debug |= DEBUG_DISASSEMBLE_F;
+- 
++
+     /* DUMP NEXT n instructions to screen in straight_line fashion */
+     /*
+      * This looks like the regular instruction fetch stream, except
+@@ -130,299 +137,359 @@ static void disassemble_forward (u16 seg, u16 off, int n)
+      * the instruction.  XXX --- CHECK THAT MEM IS NOT AFFECTED!!!
+      * Note the use of a copy of the register structure...
+      */
+-    for (i=0; i<n; i++) {
+-		op1 = (*sys_rdb)(((u32)M.x86.R_CS<<4) + (M.x86.R_IP++));
+-		(x86emu_optab[op1])(op1);
++    for (i = 0; i < n; i++) {
++        op1 = (*sys_rdb) (((u32) M.x86.R_CS << 4) + (M.x86.R_IP++));
++        (x86emu_optab[op1]) (op1);
+     }
+     /* end major hack mode. */
+ }
+ 
+-void x86emu_check_ip_access (void)
++void
++x86emu_check_ip_access(void)
+ {
+     /* NULL as of now */
+ }
+ 
+-void x86emu_check_sp_access (void)
++void
++x86emu_check_sp_access(void)
+ {
+ }
+ 
+-void x86emu_check_mem_access (u32 dummy)
++void
++x86emu_check_mem_access(u32 dummy)
+ {
+-	/*  check bounds, etc */
++    /*  check bounds, etc */
+ }
+ 
+-void x86emu_check_data_access (uint dummy1, uint dummy2)
++void
++x86emu_check_data_access(uint dummy1, uint dummy2)
+ {
+-	/*  check bounds, etc */
++    /*  check bounds, etc */
+ }
+ 
+-void x86emu_inc_decoded_inst_len (int x)
++void
++x86emu_inc_decoded_inst_len(int x)
+ {
+-	M.x86.enc_pos += x;
++    M.x86.enc_pos += x;
+ }
+ 
+-void x86emu_decode_printf (char *x)
++void
++x86emu_decode_printf(const char *x)
+ {
+-	sprintf(M.x86.decoded_buf+M.x86.enc_str_pos,"%s",x);
+-	M.x86.enc_str_pos += strlen(x);
++    sprintf(M.x86.decoded_buf + M.x86.enc_str_pos, "%s", x);
++    M.x86.enc_str_pos += strlen(x);
+ }
+ 
+-void x86emu_decode_printf2 (char *x, int y)
++void
++x86emu_decode_printf2(const char *x, int y)
+ {
+-	char temp[100];
+-	sprintf(temp,x,y);
+-	sprintf(M.x86.decoded_buf+M.x86.enc_str_pos,"%s",temp);
+-	M.x86.enc_str_pos += strlen(temp);
++    char temp[100];
++
++    snprintf(temp, sizeof(temp), x, y);
++    sprintf(M.x86.decoded_buf + M.x86.enc_str_pos, "%s", temp);
++    M.x86.enc_str_pos += strlen(temp);
+ }
+ 
+-void x86emu_end_instr (void)
++void
++x86emu_end_instr(void)
+ {
+-	M.x86.enc_str_pos = 0;
+-	M.x86.enc_pos = 0;
++    M.x86.enc_str_pos = 0;
++    M.x86.enc_pos = 0;
+ }
+ 
+-static void print_encoded_bytes (u16 s, u16 o)
++static void
++print_encoded_bytes(u16 s, u16 o)
+ {
+     int i;
+     char buf1[64];
+-	for (i=0; i< M.x86.enc_pos; i++) {
+-		sprintf(buf1+2*i,"%02x", fetch_data_byte_abs(s,o+i));
++
++    for (i = 0; i < M.x86.enc_pos; i++) {
++        sprintf(buf1 + 2 * i, "%02x", fetch_data_byte_abs(s, o + i));
+     }
+-	printk("%-20s",buf1);
++    printk("%-20s", buf1);
+ }
+ 
+-static void print_decoded_instruction (void)
++static void
++print_decoded_instruction(void)
+ {
+-	printk("%s", M.x86.decoded_buf);
++    printk("%s", M.x86.decoded_buf);
+ }
+ 
+-void x86emu_print_int_vect (u16 iv)
++void
++x86emu_print_int_vect(u16 iv)
+ {
+-	u16 seg,off;
++    u16 seg, off;
+ 
+-	if (iv > 256) return;
+-	seg   = fetch_data_word_abs(0,iv*4);
+-	off   = fetch_data_word_abs(0,iv*4+2);
+-	printk("%04x:%04x ", seg, off);
++    if (iv > 256)
++        return;
++    seg = fetch_data_word_abs(0, iv * 4);
++    off = fetch_data_word_abs(0, iv * 4 + 2);
++    printk("%04x:%04x ", seg, off);
+ }
+ 
+-void X86EMU_dump_memory (u16 seg, u16 off, u32 amt)
++void
++X86EMU_dump_memory(u16 seg, u16 off, u32 amt)
+ {
+-	u32 start = off & 0xfffffff0;
+-	u32 end  = (off+16) & 0xfffffff0;
+-	u32 i;
+-	u32 current;
+-
+-	current = start;
+-	while (end <= off + amt) {
+-		printk("%04x:%04x ", seg, start);
+-		for (i=start; i< off; i++)
+-		  printk("   ");
+-		for (       ; i< end; i++)
+-		  printk("%02x ", fetch_data_byte_abs(seg,i));
+-		printk("\n");
+-		start = end;
+-		end = start + 16;
+-	}
++    u32 start = off & 0xfffffff0;
++    u32 end = (off + 16) & 0xfffffff0;
++    u32 i;
++    u32 current;
++
++    current = start;
++    while (end <= off + amt) {
++        printk("%04x:%04x ", seg, start);
++        for (i = start; i < off; i++)
++            printk("   ");
++        for (; i < end; i++)
++            printk("%02x ", fetch_data_byte_abs(seg, i));
++        printk("\n");
++        start = end;
++        end = start + 16;
++    }
+ }
+ 
+-void x86emu_single_step (void)
++void
++x86emu_single_step(void)
+ {
+     char s[1024];
+     int ps[10];
+     int ntok;
+     int cmd;
+     int done;
+-		int segment;
++    int segment;
+     int offset;
+     static int breakpoint;
+     static int noDecode = 1;
+-    
++
+     char *p;
+ 
+-		if (DEBUG_BREAK()) {
+-				if (M.x86.saved_ip != breakpoint) {
+-						return;
+-				} else {
+- 	          M.x86.debug &= ~DEBUG_DECODE_NOPRINT_F;
+-						M.x86.debug |= DEBUG_TRACE_F;
+-						M.x86.debug &= ~DEBUG_BREAK_F;
+-						print_decoded_instruction ();
+-						X86EMU_trace_regs();
+-				}
+-		}
+-    done=0;
+-	offset = M.x86.saved_ip;
++    if (DEBUG_BREAK()) {
++        if (M.x86.saved_ip != breakpoint) {
++            return;
++        }
++        else {
++            M.x86.debug &= ~DEBUG_DECODE_NOPRINT_F;
++            M.x86.debug |= DEBUG_TRACE_F;
++            M.x86.debug &= ~DEBUG_BREAK_F;
++            print_decoded_instruction();
++            X86EMU_trace_regs();
++        }
++    }
++    done = 0;
++    offset = M.x86.saved_ip;
+     while (!done) {
+         printk("-");
+         p = fgets(s, 1023, stdin);
+         cmd = parse_line(s, ps, &ntok);
+-        switch(cmd) {
+-          case 'u':
+-			disassemble_forward(M.x86.saved_cs,(u16)offset,10);
++        switch (cmd) {
++        case 'u':
++            disassemble_forward(M.x86.saved_cs, (u16) offset, 10);
+             break;
+-          case 'd':  
+-							if (ntok == 2) {
+-									segment = M.x86.saved_cs;
+-									offset = ps[1];
+-									X86EMU_dump_memory(segment,(u16)offset,16);
+-									offset += 16;
+-							} else if (ntok == 3) {
+-									segment = ps[1];
+-									offset = ps[2];
+-									X86EMU_dump_memory(segment,(u16)offset,16);
+-									offset += 16;
+-							} else {
+-									segment = M.x86.saved_cs;
+-									X86EMU_dump_memory(segment,(u16)offset,16);
+-									offset += 16;
+-							}
++        case 'd':
++            if (ntok == 2) {
++                segment = M.x86.saved_cs;
++                offset = ps[1];
++                X86EMU_dump_memory(segment, (u16) offset, 16);
++                offset += 16;
++            }
++            else if (ntok == 3) {
++                segment = ps[1];
++                offset = ps[2];
++                X86EMU_dump_memory(segment, (u16) offset, 16);
++                offset += 16;
++            }
++            else {
++                segment = M.x86.saved_cs;
++                X86EMU_dump_memory(segment, (u16) offset, 16);
++                offset += 16;
++            }
+             break;
+-          case 'c':
+-			M.x86.debug ^= DEBUG_TRACECALL_F;
++        case 'c':
++            M.x86.debug ^= DEBUG_TRACECALL_F;
+             break;
+-          case 's':
+-			M.x86.debug ^= DEBUG_SVC_F | DEBUG_SYS_F | DEBUG_SYSINT_F;
++        case 's':
++            M.x86.debug ^= DEBUG_SVC_F | DEBUG_SYS_F | DEBUG_SYSINT_F;
+             break;
+-          case 'r':
+-			X86EMU_trace_regs();
++        case 'r':
++            X86EMU_trace_regs();
+             break;
+-          case 'x':
+-			X86EMU_trace_xregs();
++        case 'x':
++            X86EMU_trace_xregs();
+             break;
+-          case 'g':
++        case 'g':
+             if (ntok == 2) {
+                 breakpoint = ps[1];
+-		if (noDecode) {
+-		                M.x86.debug |= DEBUG_DECODE_NOPRINT_F;
+-		} else {
+-		                M.x86.debug &= ~DEBUG_DECODE_NOPRINT_F;
+-		}
+-		M.x86.debug &= ~DEBUG_TRACE_F;
+-		M.x86.debug |= DEBUG_BREAK_F;
+-		done = 1;
++                if (noDecode) {
++                    M.x86.debug |= DEBUG_DECODE_NOPRINT_F;
++                }
++                else {
++                    M.x86.debug &= ~DEBUG_DECODE_NOPRINT_F;
++                }
++                M.x86.debug &= ~DEBUG_TRACE_F;
++                M.x86.debug |= DEBUG_BREAK_F;
++                done = 1;
+             }
+             break;
+-          case 'q':
+-          M.x86.debug |= DEBUG_EXIT;
+-          return;
+-	  case 'P':
+-	      noDecode = (noDecode)?0:1;
+-	      printk("Toggled decoding to %s\n",(noDecode)?"FALSE":"TRUE");
+-	      break;
+-          case 't':
+-	  case 0:
++        case 'q':
++            M.x86.debug |= DEBUG_EXIT;
++            return;
++        case 'P':
++            noDecode = (noDecode) ? 0 : 1;
++            printk("Toggled decoding to %s\n", (noDecode) ? "FALSE" : "TRUE");
++            break;
++        case 't':
++        case 0:
+             done = 1;
+             break;
+-        }   
++        }
+     }
+ }
+ 
+-int X86EMU_trace_on(void)
++int
++X86EMU_trace_on(void)
+ {
+-	return M.x86.debug |= DEBUG_STEP_F | DEBUG_DECODE_F | DEBUG_TRACE_F;
++    return M.x86.debug |= DEBUG_STEP_F | DEBUG_DECODE_F | DEBUG_TRACE_F;
+ }
+ 
+-int X86EMU_trace_off(void)
++int
++X86EMU_trace_off(void)
+ {
+-	return M.x86.debug &= ~(DEBUG_STEP_F | DEBUG_DECODE_F | DEBUG_TRACE_F);
++    return M.x86.debug &= ~(DEBUG_STEP_F | DEBUG_DECODE_F | DEBUG_TRACE_F);
+ }
+ 
+-static int parse_line (char *s, int *ps, int *n)
++static int
++parse_line(char *s, int *ps, int *n)
+ {
+     int cmd;
+ 
+     *n = 0;
+-    while(*s == ' ' || *s == '\t') s++;
++    while (*s == ' ' || *s == '\t')
++        s++;
+     ps[*n] = *s;
+     switch (*s) {
+-      case '\n':
++    case '\n':
+         *n += 1;
+         return 0;
+-      default:
++    default:
+         cmd = *s;
+         *n += 1;
+     }
+ 
+-	while (1) {
+-		while (*s != ' ' && *s != '\t' && *s != '\n')  s++;
+-		
+-		if (*s == '\n')
+-			return cmd;
+-		
+-		while(*s == ' ' || *s == '\t') s++;
+-		
+-		sscanf(s,"%x",&ps[*n]);
+-		*n += 1;
+-	}
++    while (1) {
++        while (*s != ' ' && *s != '\t' && *s != '\n')
++            s++;
++
++        if (*s == '\n')
++            return cmd;
++
++        while (*s == ' ' || *s == '\t')
++            s++;
++
++        sscanf(s, "%x", &ps[*n]);
++        *n += 1;
++    }
+ }
+ 
+-#endif /* DEBUG */
++#endif                          /* DEBUG */
+ 
+-void x86emu_dump_regs (void)
++void
++x86emu_dump_regs(void)
+ {
+-	printk("\tAX=%04x  ", M.x86.R_AX );
+-	printk("BX=%04x  ", M.x86.R_BX );
+-	printk("CX=%04x  ", M.x86.R_CX );
+-	printk("DX=%04x  ", M.x86.R_DX );
+-	printk("SP=%04x  ", M.x86.R_SP );
+-	printk("BP=%04x  ", M.x86.R_BP );
+-	printk("SI=%04x  ", M.x86.R_SI );
+-	printk("DI=%04x\n", M.x86.R_DI );
+-	printk("\tDS=%04x  ", M.x86.R_DS );
+-	printk("ES=%04x  ", M.x86.R_ES );
+-	printk("SS=%04x  ", M.x86.R_SS );
+-	printk("CS=%04x  ", M.x86.R_CS );
+-	printk("IP=%04x   ", M.x86.R_IP );
+-	if (ACCESS_FLAG(F_OF))    printk("OV ");     /* CHECKED... */
+-	else                        printk("NV ");
+-	if (ACCESS_FLAG(F_DF))    printk("DN ");
+-	else                        printk("UP ");
+-	if (ACCESS_FLAG(F_IF))    printk("EI ");
+-	else                        printk("DI ");
+-	if (ACCESS_FLAG(F_SF))    printk("NG ");
+-	else                        printk("PL ");
+-	if (ACCESS_FLAG(F_ZF))    printk("ZR ");
+-	else                        printk("NZ ");
+-	if (ACCESS_FLAG(F_AF))    printk("AC ");
+-	else                        printk("NA ");
+-	if (ACCESS_FLAG(F_PF))    printk("PE ");
+-	else                        printk("PO ");
+-	if (ACCESS_FLAG(F_CF))    printk("CY ");
+-	else                        printk("NC ");
+-	printk("\n");
++    printk("\tAX=%04x  ", M.x86.R_AX);
++    printk("BX=%04x  ", M.x86.R_BX);
++    printk("CX=%04x  ", M.x86.R_CX);
++    printk("DX=%04x  ", M.x86.R_DX);
++    printk("SP=%04x  ", M.x86.R_SP);
++    printk("BP=%04x  ", M.x86.R_BP);
++    printk("SI=%04x  ", M.x86.R_SI);
++    printk("DI=%04x\n", M.x86.R_DI);
++    printk("\tDS=%04x  ", M.x86.R_DS);
++    printk("ES=%04x  ", M.x86.R_ES);
++    printk("SS=%04x  ", M.x86.R_SS);
++    printk("CS=%04x  ", M.x86.R_CS);
++    printk("IP=%04x   ", M.x86.R_IP);
++    if (ACCESS_FLAG(F_OF))
++        printk("OV ");          /* CHECKED... */
++    else
++        printk("NV ");
++    if (ACCESS_FLAG(F_DF))
++        printk("DN ");
++    else
++        printk("UP ");
++    if (ACCESS_FLAG(F_IF))
++        printk("EI ");
++    else
++        printk("DI ");
++    if (ACCESS_FLAG(F_SF))
++        printk("NG ");
++    else
++        printk("PL ");
++    if (ACCESS_FLAG(F_ZF))
++        printk("ZR ");
++    else
++        printk("NZ ");
++    if (ACCESS_FLAG(F_AF))
++        printk("AC ");
++    else
++        printk("NA ");
++    if (ACCESS_FLAG(F_PF))
++        printk("PE ");
++    else
++        printk("PO ");
++    if (ACCESS_FLAG(F_CF))
++        printk("CY ");
++    else
++        printk("NC ");
++    printk("\n");
+ }
+ 
+-void x86emu_dump_xregs (void)
++void
++x86emu_dump_xregs(void)
+ {
+-	printk("\tEAX=%08x  ", M.x86.R_EAX );
+-	printk("EBX=%08x  ", M.x86.R_EBX );
+-	printk("ECX=%08x  ", M.x86.R_ECX );
+-	printk("EDX=%08x  \n", M.x86.R_EDX );
+-	printk("\tESP=%08x  ", M.x86.R_ESP );
+-	printk("EBP=%08x  ", M.x86.R_EBP );
+-	printk("ESI=%08x  ", M.x86.R_ESI );
+-	printk("EDI=%08x\n", M.x86.R_EDI );
+-	printk("\tDS=%04x  ", M.x86.R_DS );
+-	printk("ES=%04x  ", M.x86.R_ES );
+-	printk("SS=%04x  ", M.x86.R_SS );
+-	printk("CS=%04x  ", M.x86.R_CS );
+-	printk("EIP=%08x\n\t", M.x86.R_EIP );
+-	if (ACCESS_FLAG(F_OF))    printk("OV ");     /* CHECKED... */
+-	else                        printk("NV ");
+-	if (ACCESS_FLAG(F_DF))    printk("DN ");
+-	else                        printk("UP ");
+-	if (ACCESS_FLAG(F_IF))    printk("EI ");
+-	else                        printk("DI ");
+-	if (ACCESS_FLAG(F_SF))    printk("NG ");
+-	else                        printk("PL ");
+-	if (ACCESS_FLAG(F_ZF))    printk("ZR ");
+-	else                        printk("NZ ");
+-	if (ACCESS_FLAG(F_AF))    printk("AC ");
+-	else                        printk("NA ");
+-	if (ACCESS_FLAG(F_PF))    printk("PE ");
+-	else                        printk("PO ");
+-	if (ACCESS_FLAG(F_CF))    printk("CY ");
+-	else                        printk("NC ");
+-	printk("\n");
++    printk("\tEAX=%08x  ", M.x86.R_EAX);
++    printk("EBX=%08x  ", M.x86.R_EBX);
++    printk("ECX=%08x  ", M.x86.R_ECX);
++    printk("EDX=%08x  \n", M.x86.R_EDX);
++    printk("\tESP=%08x  ", M.x86.R_ESP);
++    printk("EBP=%08x  ", M.x86.R_EBP);
++    printk("ESI=%08x  ", M.x86.R_ESI);
++    printk("EDI=%08x\n", M.x86.R_EDI);
++    printk("\tDS=%04x  ", M.x86.R_DS);
++    printk("ES=%04x  ", M.x86.R_ES);
++    printk("SS=%04x  ", M.x86.R_SS);
++    printk("CS=%04x  ", M.x86.R_CS);
++    printk("EIP=%08x\n\t", M.x86.R_EIP);
++    if (ACCESS_FLAG(F_OF))
++        printk("OV ");          /* CHECKED... */
++    else
++        printk("NV ");
++    if (ACCESS_FLAG(F_DF))
++        printk("DN ");
++    else
++        printk("UP ");
++    if (ACCESS_FLAG(F_IF))
++        printk("EI ");
++    else
++        printk("DI ");
++    if (ACCESS_FLAG(F_SF))
++        printk("NG ");
++    else
++        printk("PL ");
++    if (ACCESS_FLAG(F_ZF))
++        printk("ZR ");
++    else
++        printk("NZ ");
++    if (ACCESS_FLAG(F_AF))
++        printk("AC ");
++    else
++        printk("NA ");
++    if (ACCESS_FLAG(F_PF))
++        printk("PE ");
++    else
++        printk("PO ");
++    if (ACCESS_FLAG(F_CF))
++        printk("CY ");
++    else
++        printk("NC ");
++    printk("\n");
+ }
+diff --git a/libs/x86emu/decode.c b/libs/x86emu/decode.c
+index 7d9a34a..12f8fb8 100644
+--- a/libs/x86emu/decode.c
++++ b/libs/x86emu/decode.c
+@@ -46,25 +46,27 @@
+ REMARKS:
+ Handles any pending asychronous interrupts.
+ ****************************************************************************/
+-static void x86emu_intr_handle(void)
++static void
++x86emu_intr_handle(void)
+ {
+-	u8	intno;
+-
+-	if (M.x86.intr & INTR_SYNCH) {
+-		intno = M.x86.intno;
+-		if (_X86EMU_intrTab[intno]) {
+-			(*_X86EMU_intrTab[intno])(intno);
+-		} else {
+-			push_word((u16)M.x86.R_FLG);
+-			CLEAR_FLAG(F_IF);
+-			CLEAR_FLAG(F_TF);
+-			push_word(M.x86.R_CS);
+-			M.x86.R_CS = mem_access_word(intno * 4 + 2);
+-			push_word(M.x86.R_IP);
+-			M.x86.R_IP = mem_access_word(intno * 4);
+-			M.x86.intr = 0;
+-		}
+-	}
++    u8 intno;
++
++    if (M.x86.intr & INTR_SYNCH) {
++        intno = M.x86.intno;
++        if (_X86EMU_intrTab[intno]) {
++            (*_X86EMU_intrTab[intno]) (intno);
++        }
++        else {
++            push_word((u16) M.x86.R_FLG);
++            CLEAR_FLAG(F_IF);
++            CLEAR_FLAG(F_TF);
++            push_word(M.x86.R_CS);
++            M.x86.R_CS = mem_access_word(intno * 4 + 2);
++            push_word(M.x86.R_IP);
++            M.x86.R_IP = mem_access_word(intno * 4);
++            M.x86.intr = 0;
++        }
++    }
+ }
+ 
+ /****************************************************************************
+@@ -75,11 +77,11 @@ REMARKS:
+ Raise the specified interrupt to be handled before the execution of the
+ next instruction.
+ ****************************************************************************/
+-void x86emu_intr_raise(
+-	u8 intrnum)
++void
++x86emu_intr_raise(u8 intrnum)
+ {
+-	M.x86.intno = intrnum;
+-	M.x86.intr |= INTR_SYNCH;
++    M.x86.intno = intrnum;
++    M.x86.intr |= INTR_SYNCH;
+ }
+ 
+ /****************************************************************************
+@@ -88,39 +90,39 @@ Main execution loop for the emulator. We return from here when the system
+ halts, which is normally caused by a stack fault when we return from the
+ original real mode call.
+ ****************************************************************************/
+-void X86EMU_exec(void)
++void
++X86EMU_exec(void)
+ {
+-	u8 op1;
+-
+-	M.x86.intr = 0;
+-	DB(x86emu_end_instr();)
+-
+-    for (;;) {
+-DB(		if (CHECK_IP_FETCH())
+-		  x86emu_check_ip_access();)
+-		/* If debugging, save the IP and CS values. */
+-		SAVE_IP_CS(M.x86.R_CS, M.x86.R_IP);
+-		INC_DECODED_INST_LEN(1);
+-		if (M.x86.intr) {
+-			if (M.x86.intr & INTR_HALTED) {
+-DB(             if (M.x86.R_SP != 0) {
+-                    printk("halted\n");
+-                    X86EMU_trace_regs();
+-                    }
+-                else {
+-                    if (M.x86.debug)
+-                        printk("Service completed successfully\n");
+-                    })
+-				return;
++    u8 op1;
++
++    M.x86.intr = 0;
++    DB(x86emu_end_instr();
++        )
++
++        for (;;) {
++        DB(if (CHECK_IP_FETCH())
++           x86emu_check_ip_access();)
++            /* If debugging, save the IP and CS values. */
++            SAVE_IP_CS(M.x86.R_CS, M.x86.R_IP);
++        INC_DECODED_INST_LEN(1);
++        if (M.x86.intr) {
++            if (M.x86.intr & INTR_HALTED) {
++                DB(if (M.x86.R_SP != 0) {
++                   printk("halted\n"); X86EMU_trace_regs();}
++                   else {
++                   if (M.x86.debug)
++                   printk("Service completed successfully\n");}
++                )
++                    return;
+             }
+-			if (((M.x86.intr & INTR_SYNCH) && (M.x86.intno == 0 || M.x86.intno == 2)) ||
+-				!ACCESS_FLAG(F_IF)) {
+-				x86emu_intr_handle();
+-			}
+-		}
+-
+-		op1 = (*sys_rdb)(((u32)M.x86.R_CS << 4) + (M.x86.R_IP++));
+-		(*x86emu_optab[op1])(op1);
++            if (((M.x86.intr & INTR_SYNCH) &&
++                 (M.x86.intno == 0 || M.x86.intno == 2)) ||
++                !ACCESS_FLAG(F_IF)) {
++                x86emu_intr_handle();
++            }
++        }
++        op1 = (*sys_rdb) (((u32) M.x86.R_CS << 4) + (M.x86.R_IP++));
++        (*x86emu_optab[op1]) (op1);
+         if (M.x86.debug & DEBUG_EXIT) {
+             M.x86.debug &= ~DEBUG_EXIT;
+             return;
+@@ -132,9 +134,10 @@ DB(             if (M.x86.R_SP != 0) {
+ REMARKS:
+ Halts the system by setting the halted system flag.
+ ****************************************************************************/
+-void X86EMU_halt_sys(void)
++void
++X86EMU_halt_sys(void)
+ {
+-	M.x86.intr |= INTR_HALTED;
++    M.x86.intr |= INTR_HALTED;
+ }
+ 
+ /****************************************************************************
+@@ -149,19 +152,17 @@ next instruction.
+ 
+ NOTE: Do not inline this function, as (*sys_rdb) is already inline!
+ ****************************************************************************/
+-void fetch_decode_modrm(
+-	int *mod,
+-	int *regh,
+-	int *regl)
++void
++fetch_decode_modrm(int *mod, int *regh, int *regl)
+ {
+-	int fetched;
+-
+-DB(	if (CHECK_IP_FETCH())
+-	  x86emu_check_ip_access();)
+-	fetched = (*sys_rdb)(((u32)M.x86.R_CS << 4) + (M.x86.R_IP++));
+-	INC_DECODED_INST_LEN(1);
+-	*mod  = (fetched >> 6) & 0x03;
+-	*regh = (fetched >> 3) & 0x07;
++    int fetched;
++
++    DB(if (CHECK_IP_FETCH())
++       x86emu_check_ip_access();)
++        fetched = (*sys_rdb) (((u32) M.x86.R_CS << 4) + (M.x86.R_IP++));
++    INC_DECODED_INST_LEN(1);
++    *mod = (fetched >> 6) & 0x03;
++    *regh = (fetched >> 3) & 0x07;
+     *regl = (fetched >> 0) & 0x07;
+ }
+ 
+@@ -175,15 +176,16 @@ moves the instruction pointer to the next value.
+ 
+ NOTE: Do not inline this function, as (*sys_rdb) is already inline!
+ ****************************************************************************/
+-u8 fetch_byte_imm(void)
++u8
++fetch_byte_imm(void)
+ {
+-	u8 fetched;
++    u8 fetched;
+ 
+-DB(	if (CHECK_IP_FETCH())
+-		x86emu_check_ip_access();)
+-	fetched = (*sys_rdb)(((u32)M.x86.R_CS << 4) + (M.x86.R_IP++));
+-	INC_DECODED_INST_LEN(1);
+-	return fetched;
++    DB(if (CHECK_IP_FETCH())
++       x86emu_check_ip_access();)
++        fetched = (*sys_rdb) (((u32) M.x86.R_CS << 4) + (M.x86.R_IP++));
++    INC_DECODED_INST_LEN(1);
++    return fetched;
+ }
+ 
+ /****************************************************************************
+@@ -196,16 +198,17 @@ moves the instruction pointer to the next value.
+ 
+ NOTE: Do not inline this function, as (*sys_rdw) is already inline!
+ ****************************************************************************/
+-u16 fetch_word_imm(void)
++u16
++fetch_word_imm(void)
+ {
+-	u16	fetched;
+-
+-DB(	if (CHECK_IP_FETCH())
+-		x86emu_check_ip_access();)
+-	fetched = (*sys_rdw)(((u32)M.x86.R_CS << 4) + (M.x86.R_IP));
+-	M.x86.R_IP += 2;
+-	INC_DECODED_INST_LEN(2);
+-	return fetched;
++    u16 fetched;
++
++    DB(if (CHECK_IP_FETCH())
++       x86emu_check_ip_access();)
++        fetched = (*sys_rdw) (((u32) M.x86.R_CS << 4) + (M.x86.R_IP));
++    M.x86.R_IP += 2;
++    INC_DECODED_INST_LEN(2);
++    return fetched;
+ }
+ 
+ /****************************************************************************
+@@ -218,16 +221,17 @@ moves the instruction pointer to the next value.
+ 
+ NOTE: Do not inline this function, as (*sys_rdw) is already inline!
+ ****************************************************************************/
+-u32 fetch_long_imm(void)
++u32
++fetch_long_imm(void)
+ {
+-	u32 fetched;
+-
+-DB(	if (CHECK_IP_FETCH())
+-	  x86emu_check_ip_access();)
+-	fetched = (*sys_rdl)(((u32)M.x86.R_CS << 4) + (M.x86.R_IP));
+-	M.x86.R_IP += 4;
+-	INC_DECODED_INST_LEN(4);
+-	return fetched;
++    u32 fetched;
++
++    DB(if (CHECK_IP_FETCH())
++       x86emu_check_ip_access();)
++        fetched = (*sys_rdl) (((u32) M.x86.R_CS << 4) + (M.x86.R_IP));
++    M.x86.R_IP += 4;
++    INC_DECODED_INST_LEN(4);
++    return fetched;
+ }
+ 
+ /****************************************************************************
+@@ -259,38 +263,39 @@ cpu-state-varible M.x86.mode. There are several potential states:
+ 
+ Each of the above 7 items are handled with a bit in the mode field.
+ ****************************************************************************/
+-_INLINE u32 get_data_segment(void)
++_INLINE u32
++get_data_segment(void)
+ {
+ #define	GET_SEGMENT(segment)
+-	switch (M.x86.mode & SYSMODE_SEGMASK) {
+-	  case 0:					/* default case: use ds register */
+-	  case SYSMODE_SEGOVR_DS:
+-	  case SYSMODE_SEGOVR_DS | SYSMODE_SEG_DS_SS:
+-		return  M.x86.R_DS;
+-	  case SYSMODE_SEG_DS_SS:	/* non-overridden, use ss register */
+-		return  M.x86.R_SS;
+-	  case SYSMODE_SEGOVR_CS:
+-	  case SYSMODE_SEGOVR_CS | SYSMODE_SEG_DS_SS:
+-		return  M.x86.R_CS;
+-	  case SYSMODE_SEGOVR_ES:
+-	  case SYSMODE_SEGOVR_ES | SYSMODE_SEG_DS_SS:
+-		return  M.x86.R_ES;
+-	  case SYSMODE_SEGOVR_FS:
+-	  case SYSMODE_SEGOVR_FS | SYSMODE_SEG_DS_SS:
+-		return  M.x86.R_FS;
+-	  case SYSMODE_SEGOVR_GS:
+-	  case SYSMODE_SEGOVR_GS | SYSMODE_SEG_DS_SS:
+-		return  M.x86.R_GS;
+-	  case SYSMODE_SEGOVR_SS:
+-	  case SYSMODE_SEGOVR_SS | SYSMODE_SEG_DS_SS:
+-		return  M.x86.R_SS;
+-	  default:
++    switch (M.x86.mode & SYSMODE_SEGMASK) {
++    case 0:                    /* default case: use ds register */
++    case SYSMODE_SEGOVR_DS:
++    case SYSMODE_SEGOVR_DS | SYSMODE_SEG_DS_SS:
++        return M.x86.R_DS;
++    case SYSMODE_SEG_DS_SS:    /* non-overridden, use ss register */
++        return M.x86.R_SS;
++    case SYSMODE_SEGOVR_CS:
++    case SYSMODE_SEGOVR_CS | SYSMODE_SEG_DS_SS:
++        return M.x86.R_CS;
++    case SYSMODE_SEGOVR_ES:
++    case SYSMODE_SEGOVR_ES | SYSMODE_SEG_DS_SS:
++        return M.x86.R_ES;
++    case SYSMODE_SEGOVR_FS:
++    case SYSMODE_SEGOVR_FS | SYSMODE_SEG_DS_SS:
++        return M.x86.R_FS;
++    case SYSMODE_SEGOVR_GS:
++    case SYSMODE_SEGOVR_GS | SYSMODE_SEG_DS_SS:
++        return M.x86.R_GS;
++    case SYSMODE_SEGOVR_SS:
++    case SYSMODE_SEGOVR_SS | SYSMODE_SEG_DS_SS:
++        return M.x86.R_SS;
++    default:
+ #ifdef	DEBUG
+-		printk("error: should not happen:  multiple overrides.\n");
++        printk("error: should not happen:  multiple overrides.\n");
+ #endif
+-		HALT_SYS();
+-		return 0;
+-	}
++        HALT_SYS();
++        return 0;
++    }
+ }
+ 
+ /****************************************************************************
+@@ -302,14 +307,14 @@ Byte value read from the absolute memory location.
+ 
+ NOTE: Do not inline this function as (*sys_rdX) is already inline!
+ ****************************************************************************/
+-u8 fetch_data_byte(
+-	uint offset)
++u8
++fetch_data_byte(uint offset)
+ {
+ #ifdef DEBUG
+-	if (CHECK_DATA_ACCESS())
+-		x86emu_check_data_access((u16)get_data_segment(), offset);
++    if (CHECK_DATA_ACCESS())
++        x86emu_check_data_access((u16) get_data_segment(), offset);
+ #endif
+-	return (*sys_rdb)((get_data_segment() << 4) + offset);
++    return (*sys_rdb) ((get_data_segment() << 4) + offset);
+ }
+ 
+ /****************************************************************************
+@@ -321,14 +326,14 @@ Word value read from the absolute memory location.
+ 
+ NOTE: Do not inline this function as (*sys_rdX) is already inline!
+ ****************************************************************************/
+-u16 fetch_data_word(
+-	uint offset)
++u16
++fetch_data_word(uint offset)
+ {
+ #ifdef DEBUG
+-	if (CHECK_DATA_ACCESS())
+-		x86emu_check_data_access((u16)get_data_segment(), offset);
++    if (CHECK_DATA_ACCESS())
++        x86emu_check_data_access((u16) get_data_segment(), offset);
+ #endif
+-	return (*sys_rdw)((get_data_segment() << 4) + offset);
++    return (*sys_rdw) ((get_data_segment() << 4) + offset);
+ }
+ 
+ /****************************************************************************
+@@ -340,14 +345,14 @@ Long value read from the absolute memory location.
+ 
+ NOTE: Do not inline this function as (*sys_rdX) is already inline!
+ ****************************************************************************/
+-u32 fetch_data_long(
+-	uint offset)
++u32
++fetch_data_long(uint offset)
+ {
+ #ifdef DEBUG
+-	if (CHECK_DATA_ACCESS())
+-		x86emu_check_data_access((u16)get_data_segment(), offset);
++    if (CHECK_DATA_ACCESS())
++        x86emu_check_data_access((u16) get_data_segment(), offset);
+ #endif
+-	return (*sys_rdl)((get_data_segment() << 4) + offset);
++    return (*sys_rdl) ((get_data_segment() << 4) + offset);
+ }
+ 
+ /****************************************************************************
+@@ -360,15 +365,14 @@ Byte value read from the absolute memory location.
+ 
+ NOTE: Do not inline this function as (*sys_rdX) is already inline!
+ ****************************************************************************/
+-u8 fetch_data_byte_abs(
+-	uint segment,
+-	uint offset)
++u8
++fetch_data_byte_abs(uint segment, uint offset)
+ {
+ #ifdef DEBUG
+-	if (CHECK_DATA_ACCESS())
+-		x86emu_check_data_access(segment, offset);
++    if (CHECK_DATA_ACCESS())
++        x86emu_check_data_access(segment, offset);
+ #endif
+-	return (*sys_rdb)(((u32)segment << 4) + offset);
++    return (*sys_rdb) (((u32) segment << 4) + offset);
+ }
+ 
+ /****************************************************************************
+@@ -381,15 +385,14 @@ Word value read from the absolute memory location.
+ 
+ NOTE: Do not inline this function as (*sys_rdX) is already inline!
+ ****************************************************************************/
+-u16 fetch_data_word_abs(
+-	uint segment,
+-	uint offset)
++u16
++fetch_data_word_abs(uint segment, uint offset)
+ {
+ #ifdef DEBUG
+-	if (CHECK_DATA_ACCESS())
+-		x86emu_check_data_access(segment, offset);
++    if (CHECK_DATA_ACCESS())
++        x86emu_check_data_access(segment, offset);
+ #endif
+-	return (*sys_rdw)(((u32)segment << 4) + offset);
++    return (*sys_rdw) (((u32) segment << 4) + offset);
+ }
+ 
+ /****************************************************************************
+@@ -402,15 +405,14 @@ Long value read from the absolute memory location.
+ 
+ NOTE: Do not inline this function as (*sys_rdX) is already inline!
+ ****************************************************************************/
+-u32 fetch_data_long_abs(
+-	uint segment,
+-	uint offset)
++u32
++fetch_data_long_abs(uint segment, uint offset)
+ {
+ #ifdef DEBUG
+-	if (CHECK_DATA_ACCESS())
+-		x86emu_check_data_access(segment, offset);
++    if (CHECK_DATA_ACCESS())
++        x86emu_check_data_access(segment, offset);
+ #endif
+-	return (*sys_rdl)(((u32)segment << 4) + offset);
++    return (*sys_rdl) (((u32) segment << 4) + offset);
+ }
+ 
+ /****************************************************************************
+@@ -424,15 +426,14 @@ the current 'default' segment, which may have been overridden.
+ 
+ NOTE: Do not inline this function as (*sys_wrX) is already inline!
+ ****************************************************************************/
+-void store_data_byte(
+-	uint offset,
+-	u8 val)
++void
++store_data_byte(uint offset, u8 val)
+ {
+ #ifdef DEBUG
+-	if (CHECK_DATA_ACCESS())
+-		x86emu_check_data_access((u16)get_data_segment(), offset);
++    if (CHECK_DATA_ACCESS())
++        x86emu_check_data_access((u16) get_data_segment(), offset);
+ #endif
+-	(*sys_wrb)((get_data_segment() << 4) + offset, val);
++    (*sys_wrb) ((get_data_segment() << 4) + offset, val);
+ }
+ 
+ /****************************************************************************
+@@ -446,15 +447,14 @@ the current 'default' segment, which may have been overridden.
+ 
+ NOTE: Do not inline this function as (*sys_wrX) is already inline!
+ ****************************************************************************/
+-void store_data_word(
+-	uint offset,
+-	u16 val)
++void
++store_data_word(uint offset, u16 val)
+ {
+ #ifdef DEBUG
+-	if (CHECK_DATA_ACCESS())
+-		x86emu_check_data_access((u16)get_data_segment(), offset);
++    if (CHECK_DATA_ACCESS())
++        x86emu_check_data_access((u16) get_data_segment(), offset);
+ #endif
+-	(*sys_wrw)((get_data_segment() << 4) + offset, val);
++    (*sys_wrw) ((get_data_segment() << 4) + offset, val);
+ }
+ 
+ /****************************************************************************
+@@ -468,15 +468,14 @@ the current 'default' segment, which may have been overridden.
+ 
+ NOTE: Do not inline this function as (*sys_wrX) is already inline!
+ ****************************************************************************/
+-void store_data_long(
+-	uint offset,
+-	u32 val)
++void
++store_data_long(uint offset, u32 val)
+ {
+ #ifdef DEBUG
+-	if (CHECK_DATA_ACCESS())
+-		x86emu_check_data_access((u16)get_data_segment(), offset);
++    if (CHECK_DATA_ACCESS())
++        x86emu_check_data_access((u16) get_data_segment(), offset);
+ #endif
+-	(*sys_wrl)((get_data_segment() << 4) + offset, val);
++    (*sys_wrl) ((get_data_segment() << 4) + offset, val);
+ }
+ 
+ /****************************************************************************
+@@ -490,16 +489,14 @@ Writes a byte value to an absolute memory location.
+ 
+ NOTE: Do not inline this function as (*sys_wrX) is already inline!
+ ****************************************************************************/
+-void store_data_byte_abs(
+-	uint segment,
+-	uint offset,
+-	u8 val)
++void
++store_data_byte_abs(uint segment, uint offset, u8 val)
+ {
+ #ifdef DEBUG
+-	if (CHECK_DATA_ACCESS())
+-		x86emu_check_data_access(segment, offset);
++    if (CHECK_DATA_ACCESS())
++        x86emu_check_data_access(segment, offset);
+ #endif
+-	(*sys_wrb)(((u32)segment << 4) + offset, val);
++    (*sys_wrb) (((u32) segment << 4) + offset, val);
+ }
+ 
+ /****************************************************************************
+@@ -513,16 +510,14 @@ Writes a word value to an absolute memory location.
+ 
+ NOTE: Do not inline this function as (*sys_wrX) is already inline!
+ ****************************************************************************/
+-void store_data_word_abs(
+-	uint segment,
+-	uint offset,
+-	u16 val)
++void
++store_data_word_abs(uint segment, uint offset, u16 val)
+ {
+ #ifdef DEBUG
+-	if (CHECK_DATA_ACCESS())
+-		x86emu_check_data_access(segment, offset);
++    if (CHECK_DATA_ACCESS())
++        x86emu_check_data_access(segment, offset);
+ #endif
+-	(*sys_wrw)(((u32)segment << 4) + offset, val);
++    (*sys_wrw) (((u32) segment << 4) + offset, val);
+ }
+ 
+ /****************************************************************************
+@@ -536,16 +531,14 @@ Writes a long value to an absolute memory location.
+ 
+ NOTE: Do not inline this function as (*sys_wrX) is already inline!
+ ****************************************************************************/
+-void store_data_long_abs(
+-	uint segment,
+-	uint offset,
+-	u32 val)
++void
++store_data_long_abs(uint segment, uint offset, u32 val)
+ {
+ #ifdef DEBUG
+-	if (CHECK_DATA_ACCESS())
+-		x86emu_check_data_access(segment, offset);
++    if (CHECK_DATA_ACCESS())
++        x86emu_check_data_access(segment, offset);
+ #endif
+-	(*sys_wrl)(((u32)segment << 4) + offset, val);
++    (*sys_wrl) (((u32) segment << 4) + offset, val);
+ }
+ 
+ /****************************************************************************
+@@ -559,37 +552,37 @@ REMARKS:
+ Return a pointer to the register given by the R/RM field of the
+ modrm byte, for byte operands. Also enables the decoding of instructions.
+ ****************************************************************************/
+-u8* decode_rm_byte_register(
+-	int reg)
++u8 *
++decode_rm_byte_register(int reg)
+ {
+-	switch (reg) {
+-      case 0:
+-		DECODE_PRINTF("AL");
+-		return &M.x86.R_AL;
+-	  case 1:
+-		DECODE_PRINTF("CL");
+-		return &M.x86.R_CL;
+-	  case 2:
+-		DECODE_PRINTF("DL");
+-		return &M.x86.R_DL;
+-	  case 3:
+-		DECODE_PRINTF("BL");
+-		return &M.x86.R_BL;
+-	  case 4:
+-		DECODE_PRINTF("AH");
+-		return &M.x86.R_AH;
+-	  case 5:
+-		DECODE_PRINTF("CH");
+-		return &M.x86.R_CH;
+-	  case 6:
+-		DECODE_PRINTF("DH");
+-		return &M.x86.R_DH;
+-	  case 7:
+-		DECODE_PRINTF("BH");
+-		return &M.x86.R_BH;
+-	}
+-	HALT_SYS();
+-	return NULL;                /* NOT REACHED OR REACHED ON ERROR */
++    switch (reg) {
++    case 0:
++        DECODE_PRINTF("AL");
++        return &M.x86.R_AL;
++    case 1:
++        DECODE_PRINTF("CL");
++        return &M.x86.R_CL;
++    case 2:
++        DECODE_PRINTF("DL");
++        return &M.x86.R_DL;
++    case 3:
++        DECODE_PRINTF("BL");
++        return &M.x86.R_BL;
++    case 4:
++        DECODE_PRINTF("AH");
++        return &M.x86.R_AH;
++    case 5:
++        DECODE_PRINTF("CH");
++        return &M.x86.R_CH;
++    case 6:
++        DECODE_PRINTF("DH");
++        return &M.x86.R_DH;
++    case 7:
++        DECODE_PRINTF("BH");
++        return &M.x86.R_BH;
++    }
++    HALT_SYS();
++    return NULL;                /* NOT REACHED OR REACHED ON ERROR */
+ }
+ 
+ /****************************************************************************
+@@ -603,36 +596,36 @@ REMARKS:
+ Return a pointer to the register given by the R/RM field of the
+ modrm byte, for word operands.  Also enables the decoding of instructions.
+ ****************************************************************************/
+-u16* decode_rm_word_register(
+-	int reg)
++u16 *
++decode_rm_word_register(int reg)
+ {
+-	switch (reg) {
+-	  case 0:
+-		DECODE_PRINTF("AX");
+-		return &M.x86.R_AX;
+-	  case 1:
+-		DECODE_PRINTF("CX");
+-		return &M.x86.R_CX;
+-	  case 2:
+-		DECODE_PRINTF("DX");
+-		return &M.x86.R_DX;
+-	  case 3:
+-		DECODE_PRINTF("BX");
+-		return &M.x86.R_BX;
+-	  case 4:
+-		DECODE_PRINTF("SP");
+-		return &M.x86.R_SP;
+-	  case 5:
+-		DECODE_PRINTF("BP");
+-		return &M.x86.R_BP;
+-	  case 6:
+-		DECODE_PRINTF("SI");
+-		return &M.x86.R_SI;
+-	  case 7:
+-		DECODE_PRINTF("DI");
+-		return &M.x86.R_DI;
+-	}
+-	HALT_SYS();
++    switch (reg) {
++    case 0:
++        DECODE_PRINTF("AX");
++        return &M.x86.R_AX;
++    case 1:
++        DECODE_PRINTF("CX");
++        return &M.x86.R_CX;
++    case 2:
++        DECODE_PRINTF("DX");
++        return &M.x86.R_DX;
++    case 3:
++        DECODE_PRINTF("BX");
++        return &M.x86.R_BX;
++    case 4:
++        DECODE_PRINTF("SP");
++        return &M.x86.R_SP;
++    case 5:
++        DECODE_PRINTF("BP");
++        return &M.x86.R_BP;
++    case 6:
++        DECODE_PRINTF("SI");
++        return &M.x86.R_SI;
++    case 7:
++        DECODE_PRINTF("DI");
++        return &M.x86.R_DI;
++    }
++    HALT_SYS();
+     return NULL;                /* NOTREACHED OR REACHED ON ERROR */
+ }
+ 
+@@ -647,36 +640,36 @@ REMARKS:
+ Return a pointer to the register given by the R/RM field of the
+ modrm byte, for dword operands.  Also enables the decoding of instructions.
+ ****************************************************************************/
+-u32* decode_rm_long_register(
+-	int reg)
++u32 *
++decode_rm_long_register(int reg)
+ {
+     switch (reg) {
+-      case 0:
+-		DECODE_PRINTF("EAX");
+-		return &M.x86.R_EAX;
+-	  case 1:
+-		DECODE_PRINTF("ECX");
+-		return &M.x86.R_ECX;
+-	  case 2:
+-		DECODE_PRINTF("EDX");
+-		return &M.x86.R_EDX;
+-	  case 3:
+-		DECODE_PRINTF("EBX");
+-		return &M.x86.R_EBX;
+-	  case 4:
+-		DECODE_PRINTF("ESP");
+-		return &M.x86.R_ESP;
+-	  case 5:
+-		DECODE_PRINTF("EBP");
+-		return &M.x86.R_EBP;
+-	  case 6:
+-		DECODE_PRINTF("ESI");
+-		return &M.x86.R_ESI;
+-	  case 7:
+-		DECODE_PRINTF("EDI");
+-		return &M.x86.R_EDI;
+-	}
+-	HALT_SYS();
++    case 0:
++        DECODE_PRINTF("EAX");
++        return &M.x86.R_EAX;
++    case 1:
++        DECODE_PRINTF("ECX");
++        return &M.x86.R_ECX;
++    case 2:
++        DECODE_PRINTF("EDX");
++        return &M.x86.R_EDX;
++    case 3:
++        DECODE_PRINTF("EBX");
++        return &M.x86.R_EBX;
++    case 4:
++        DECODE_PRINTF("ESP");
++        return &M.x86.R_ESP;
++    case 5:
++        DECODE_PRINTF("EBP");
++        return &M.x86.R_EBP;
++    case 6:
++        DECODE_PRINTF("ESI");
++        return &M.x86.R_ESI;
++    case 7:
++        DECODE_PRINTF("EDI");
++        return &M.x86.R_EDI;
++    }
++    HALT_SYS();
+     return NULL;                /* NOTREACHED OR REACHED ON ERROR */
+ }
+ 
+@@ -692,126 +685,129 @@ Return a pointer to the register given by the R/RM field of the
+ modrm byte, for word operands, modified from above for the weirdo
+ special case of segreg operands.  Also enables the decoding of instructions.
+ ****************************************************************************/
+-u16* decode_rm_seg_register(
+-	int reg)
++u16 *
++decode_rm_seg_register(int reg)
+ {
+-	switch (reg) {
+-	  case 0:
+-		DECODE_PRINTF("ES");
+-		return &M.x86.R_ES;
+-	  case 1:
+-		DECODE_PRINTF("CS");
+-		return &M.x86.R_CS;
+-	  case 2:
+-		DECODE_PRINTF("SS");
+-		return &M.x86.R_SS;
+-	  case 3:
+-		DECODE_PRINTF("DS");
+-		return &M.x86.R_DS;
+-	  case 4:
+-		DECODE_PRINTF("FS");
+-		return &M.x86.R_FS;
+-	  case 5:
+-		DECODE_PRINTF("GS");
+-		return &M.x86.R_GS;
+-	  case 6:
+-	  case 7:
+-		DECODE_PRINTF("ILLEGAL SEGREG");
+-		break;
+-	}
+-	HALT_SYS();
+-	return NULL;                /* NOT REACHED OR REACHED ON ERROR */
++    switch (reg) {
++    case 0:
++        DECODE_PRINTF("ES");
++        return &M.x86.R_ES;
++    case 1:
++        DECODE_PRINTF("CS");
++        return &M.x86.R_CS;
++    case 2:
++        DECODE_PRINTF("SS");
++        return &M.x86.R_SS;
++    case 3:
++        DECODE_PRINTF("DS");
++        return &M.x86.R_DS;
++    case 4:
++        DECODE_PRINTF("FS");
++        return &M.x86.R_FS;
++    case 5:
++        DECODE_PRINTF("GS");
++        return &M.x86.R_GS;
++    case 6:
++    case 7:
++        DECODE_PRINTF("ILLEGAL SEGREG");
++        break;
++    }
++    HALT_SYS();
++    return NULL;                /* NOT REACHED OR REACHED ON ERROR */
+ }
+ 
+ /*
+  *
+  * return offset from the SIB Byte
+  */
+-u32 decode_sib_address(int sib, int mod)
++u32
++decode_sib_address(int sib, int mod)
+ {
+     u32 base = 0, i = 0, scale = 1;
+ 
+-    switch(sib & 0x07) {
++    switch (sib & 0x07) {
+     case 0:
+-	DECODE_PRINTF("[EAX]");
+-	base = M.x86.R_EAX;
+-	break;
++        DECODE_PRINTF("[EAX]");
++        base = M.x86.R_EAX;
++        break;
+     case 1:
+-	DECODE_PRINTF("[ECX]");
+-	base = M.x86.R_ECX;
+-	break;
++        DECODE_PRINTF("[ECX]");
++        base = M.x86.R_ECX;
++        break;
+     case 2:
+-	DECODE_PRINTF("[EDX]");
+-	base = M.x86.R_EDX;
+-	break;
++        DECODE_PRINTF("[EDX]");
++        base = M.x86.R_EDX;
++        break;
+     case 3:
+-	DECODE_PRINTF("[EBX]");
+-	base = M.x86.R_EBX;
+-	break;
++        DECODE_PRINTF("[EBX]");
++        base = M.x86.R_EBX;
++        break;
+     case 4:
+-	DECODE_PRINTF("[ESP]");
+-	base = M.x86.R_ESP;
+-	M.x86.mode |= SYSMODE_SEG_DS_SS;
+-	break;
++        DECODE_PRINTF("[ESP]");
++        base = M.x86.R_ESP;
++        M.x86.mode |= SYSMODE_SEG_DS_SS;
++        break;
+     case 5:
+-	if (mod == 0) {
+-	    base = fetch_long_imm();
+-	    DECODE_PRINTF2("%08x", base);
+-	} else {
+-	    DECODE_PRINTF("[EBP]");
+-	    base = M.x86.R_ESP;
+-	    M.x86.mode |= SYSMODE_SEG_DS_SS;
+-	}
+-	break;
++        if (mod == 0) {
++            base = fetch_long_imm();
++            DECODE_PRINTF2("%08x", base);
++        }
++        else {
++            DECODE_PRINTF("[EBP]");
++            base = M.x86.R_ESP;
++            M.x86.mode |= SYSMODE_SEG_DS_SS;
++        }
++        break;
+     case 6:
+-	DECODE_PRINTF("[ESI]");
+-	base = M.x86.R_ESI;
+-	break;
++        DECODE_PRINTF("[ESI]");
++        base = M.x86.R_ESI;
++        break;
+     case 7:
+-	DECODE_PRINTF("[EDI]");
+-	base = M.x86.R_EDI;
+-	break;
++        DECODE_PRINTF("[EDI]");
++        base = M.x86.R_EDI;
++        break;
+     }
+     switch ((sib >> 3) & 0x07) {
+     case 0:
+-	DECODE_PRINTF("[EAX");
+-	i = M.x86.R_EAX;
+-	break;
++        DECODE_PRINTF("[EAX");
++        i = M.x86.R_EAX;
++        break;
+     case 1:
+-	DECODE_PRINTF("[ECX");
+-	i = M.x86.R_ECX;
+-	break;
++        DECODE_PRINTF("[ECX");
++        i = M.x86.R_ECX;
++        break;
+     case 2:
+-	DECODE_PRINTF("[EDX");
+-	i = M.x86.R_EDX;
+-	break;
++        DECODE_PRINTF("[EDX");
++        i = M.x86.R_EDX;
++        break;
+     case 3:
+-	DECODE_PRINTF("[EBX");
+-	i = M.x86.R_EBX;
+-	break;
++        DECODE_PRINTF("[EBX");
++        i = M.x86.R_EBX;
++        break;
+     case 4:
+-	i = 0;
+-	break;
++        i = 0;
++        break;
+     case 5:
+-	DECODE_PRINTF("[EBP");
+-	i = M.x86.R_EBP;
+-	break;
++        DECODE_PRINTF("[EBP");
++        i = M.x86.R_EBP;
++        break;
+     case 6:
+-	DECODE_PRINTF("[ESI");
+-	i = M.x86.R_ESI;
+-	break;
++        DECODE_PRINTF("[ESI");
++        i = M.x86.R_ESI;
++        break;
+     case 7:
+-	DECODE_PRINTF("[EDI");
+-	i = M.x86.R_EDI;
+-	break;
++        DECODE_PRINTF("[EDI");
++        i = M.x86.R_EDI;
++        break;
+     }
+     scale = 1 << ((sib >> 6) & 0x03);
+     if (((sib >> 3) & 0x07) != 4) {
+-	if (scale == 1) {
+-	    DECODE_PRINTF("]");
+-	} else {
+-	    DECODE_PRINTF2("*%d]", scale);
+-	}
++        if (scale == 1) {
++            DECODE_PRINTF("]");
++        }
++        else {
++            DECODE_PRINTF2("*%d]", scale);
++        }
+     }
+     return base + (i * scale);
+ }
+@@ -836,74 +832,75 @@ NOTE: 	The code which specifies the corresponding segment (ds vs ss)
+ 		if a SS access is needed, set this bit.  Otherwise, DS access
+ 		occurs (unless any of the segment override bits are set).
+ ****************************************************************************/
+-u32 decode_rm00_address(
+-	int rm)
++u32
++decode_rm00_address(int rm)
+ {
+     u32 offset;
+     int sib;
+ 
+     if (M.x86.mode & SYSMODE_PREFIX_ADDR) {
+         /* 32-bit addressing */
+-	switch (rm) {
+-	  case 0:
+-		DECODE_PRINTF("[EAX]");
+-		return M.x86.R_EAX;
+-	  case 1:
+-		DECODE_PRINTF("[ECX]");
+-		return M.x86.R_ECX;
+-	  case 2:
+-		DECODE_PRINTF("[EDX]");
+-		return M.x86.R_EDX;
+-	  case 3:
+-		DECODE_PRINTF("[EBX]");
+-		return M.x86.R_EBX;
+-	  case 4:
+-		sib = fetch_byte_imm();
+-		return decode_sib_address(sib, 0);
+-	  case 5:
+-		offset = fetch_long_imm();
+-		DECODE_PRINTF2("[%08x]", offset);
+-		return offset;
+-	  case 6:
+-		DECODE_PRINTF("[ESI]");
+-		return M.x86.R_ESI;
+-	  case 7:
+-		DECODE_PRINTF("[EDI]");
+-		return M.x86.R_EDI;
+-	}
+-	HALT_SYS();
+-    } else {
++        switch (rm) {
++        case 0:
++            DECODE_PRINTF("[EAX]");
++            return M.x86.R_EAX;
++        case 1:
++            DECODE_PRINTF("[ECX]");
++            return M.x86.R_ECX;
++        case 2:
++            DECODE_PRINTF("[EDX]");
++            return M.x86.R_EDX;
++        case 3:
++            DECODE_PRINTF("[EBX]");
++            return M.x86.R_EBX;
++        case 4:
++            sib = fetch_byte_imm();
++            return decode_sib_address(sib, 0);
++        case 5:
++            offset = fetch_long_imm();
++            DECODE_PRINTF2("[%08x]", offset);
++            return offset;
++        case 6:
++            DECODE_PRINTF("[ESI]");
++            return M.x86.R_ESI;
++        case 7:
++            DECODE_PRINTF("[EDI]");
++            return M.x86.R_EDI;
++        }
++        HALT_SYS();
++    }
++    else {
+         /* 16-bit addressing */
+-	switch (rm) {
+-	  case 0:
+-		DECODE_PRINTF("[BX+SI]");
++        switch (rm) {
++        case 0:
++            DECODE_PRINTF("[BX+SI]");
+             return (M.x86.R_BX + M.x86.R_SI) & 0xffff;
+-	  case 1:
+-		DECODE_PRINTF("[BX+DI]");
++        case 1:
++            DECODE_PRINTF("[BX+DI]");
+             return (M.x86.R_BX + M.x86.R_DI) & 0xffff;
+-	  case 2:
+-		DECODE_PRINTF("[BP+SI]");
+-		M.x86.mode |= SYSMODE_SEG_DS_SS;
++        case 2:
++            DECODE_PRINTF("[BP+SI]");
++            M.x86.mode |= SYSMODE_SEG_DS_SS;
+             return (M.x86.R_BP + M.x86.R_SI) & 0xffff;
+-	  case 3:
+-		DECODE_PRINTF("[BP+DI]");
+-		M.x86.mode |= SYSMODE_SEG_DS_SS;
++        case 3:
++            DECODE_PRINTF("[BP+DI]");
++            M.x86.mode |= SYSMODE_SEG_DS_SS;
+             return (M.x86.R_BP + M.x86.R_DI) & 0xffff;
+-	  case 4:
+-		DECODE_PRINTF("[SI]");
+-		return M.x86.R_SI;
+-	  case 5:
+-		DECODE_PRINTF("[DI]");
+-		return M.x86.R_DI;
+-	  case 6:
+-		offset = fetch_word_imm();
+-		DECODE_PRINTF2("[%04x]", offset);
+-		return offset;
+-	  case 7:
+-		DECODE_PRINTF("[BX]");
+-		return M.x86.R_BX;
+-	}
+-	HALT_SYS();
++        case 4:
++            DECODE_PRINTF("[SI]");
++            return M.x86.R_SI;
++        case 5:
++            DECODE_PRINTF("[DI]");
++            return M.x86.R_DI;
++        case 6:
++            offset = fetch_word_imm();
++            DECODE_PRINTF2("[%04x]", offset);
++            return offset;
++        case 7:
++            DECODE_PRINTF("[BX]");
++            return M.x86.R_BX;
++        }
++        HALT_SYS();
+     }
+     return 0;
+ }
+@@ -919,79 +916,80 @@ REMARKS:
+ Return the offset given by mod=01 addressing.  Also enables the
+ decoding of instructions.
+ ****************************************************************************/
+-u32 decode_rm01_address(
+-	int rm)
++u32
++decode_rm01_address(int rm)
+ {
+     int displacement = 0;
+     int sib;
+ 
+     /* Fetch disp8 if no SIB byte */
+     if (!((M.x86.mode & SYSMODE_PREFIX_ADDR) && (rm == 4)))
+-	displacement = (s8)fetch_byte_imm();
++        displacement = (s8) fetch_byte_imm();
+ 
+     if (M.x86.mode & SYSMODE_PREFIX_ADDR) {
+         /* 32-bit addressing */
+-	switch (rm) {
+-	  case 0:
+-		DECODE_PRINTF2("%d[EAX]", displacement);
+-		return M.x86.R_EAX + displacement;
+-	  case 1:
+-		DECODE_PRINTF2("%d[ECX]", displacement);
+-		return M.x86.R_ECX + displacement;
+-	  case 2:
+-		DECODE_PRINTF2("%d[EDX]", displacement);
+-		return M.x86.R_EDX + displacement;
+-	  case 3:
+-		DECODE_PRINTF2("%d[EBX]", displacement);
+-		return M.x86.R_EBX + displacement;
+-	  case 4:
+-		sib = fetch_byte_imm();
+-		displacement = (s8)fetch_byte_imm();
+-		DECODE_PRINTF2("%d", displacement);
+-		return decode_sib_address(sib, 1) + displacement;
+-	  case 5:
+-		DECODE_PRINTF2("%d[EBP]", displacement);
+-		return M.x86.R_EBP + displacement;
+-	  case 6:
+-		DECODE_PRINTF2("%d[ESI]", displacement);
+-		return M.x86.R_ESI + displacement;
+-	  case 7:
+-		DECODE_PRINTF2("%d[EDI]", displacement);
+-		return M.x86.R_EDI + displacement;
+-	}
+-	HALT_SYS();
+-    } else {
++        switch (rm) {
++        case 0:
++            DECODE_PRINTF2("%d[EAX]", displacement);
++            return M.x86.R_EAX + displacement;
++        case 1:
++            DECODE_PRINTF2("%d[ECX]", displacement);
++            return M.x86.R_ECX + displacement;
++        case 2:
++            DECODE_PRINTF2("%d[EDX]", displacement);
++            return M.x86.R_EDX + displacement;
++        case 3:
++            DECODE_PRINTF2("%d[EBX]", displacement);
++            return M.x86.R_EBX + displacement;
++        case 4:
++            sib = fetch_byte_imm();
++            displacement = (s8) fetch_byte_imm();
++            DECODE_PRINTF2("%d", displacement);
++            return decode_sib_address(sib, 1) + displacement;
++        case 5:
++            DECODE_PRINTF2("%d[EBP]", displacement);
++            return M.x86.R_EBP + displacement;
++        case 6:
++            DECODE_PRINTF2("%d[ESI]", displacement);
++            return M.x86.R_ESI + displacement;
++        case 7:
++            DECODE_PRINTF2("%d[EDI]", displacement);
++            return M.x86.R_EDI + displacement;
++        }
++        HALT_SYS();
++    }
++    else {
+         /* 16-bit addressing */
+-	switch (rm) {
+-	  case 0:
+-		DECODE_PRINTF2("%d[BX+SI]", displacement);
++        switch (rm) {
++        case 0:
++            DECODE_PRINTF2("%d[BX+SI]", displacement);
+             return (M.x86.R_BX + M.x86.R_SI + displacement) & 0xffff;
+-	  case 1:
+-		DECODE_PRINTF2("%d[BX+DI]", displacement);
++        case 1:
++            DECODE_PRINTF2("%d[BX+DI]", displacement);
+             return (M.x86.R_BX + M.x86.R_DI + displacement) & 0xffff;
+-	  case 2:
+-		DECODE_PRINTF2("%d[BP+SI]", displacement);
+-		M.x86.mode |= SYSMODE_SEG_DS_SS;
++        case 2:
++            DECODE_PRINTF2("%d[BP+SI]", displacement);
++            M.x86.mode |= SYSMODE_SEG_DS_SS;
+             return (M.x86.R_BP + M.x86.R_SI + displacement) & 0xffff;
+-	  case 3:
+-		DECODE_PRINTF2("%d[BP+DI]", displacement);
+-		M.x86.mode |= SYSMODE_SEG_DS_SS;
++        case 3:
++            DECODE_PRINTF2("%d[BP+DI]", displacement);
++            M.x86.mode |= SYSMODE_SEG_DS_SS;
+             return (M.x86.R_BP + M.x86.R_DI + displacement) & 0xffff;
+-	  case 4:
+-		DECODE_PRINTF2("%d[SI]", displacement);
++        case 4:
++            DECODE_PRINTF2("%d[SI]", displacement);
+             return (M.x86.R_SI + displacement) & 0xffff;
+-	  case 5:
+-		DECODE_PRINTF2("%d[DI]", displacement);
++        case 5:
++            DECODE_PRINTF2("%d[DI]", displacement);
+             return (M.x86.R_DI + displacement) & 0xffff;
+-	  case 6:
+-		DECODE_PRINTF2("%d[BP]", displacement);
+-		M.x86.mode |= SYSMODE_SEG_DS_SS;
++        case 6:
++            DECODE_PRINTF2("%d[BP]", displacement);
++            M.x86.mode |= SYSMODE_SEG_DS_SS;
+             return (M.x86.R_BP + displacement) & 0xffff;
+-	  case 7:
+-		DECODE_PRINTF2("%d[BX]", displacement);
++        case 7:
++            DECODE_PRINTF2("%d[BX]", displacement);
+             return (M.x86.R_BX + displacement) & 0xffff;
+-	}
+-	HALT_SYS();
++        }
++        HALT_SYS();
+     }
+     return 0;                   /* SHOULD NOT HAPPEN */
+ }
+@@ -1007,86 +1005,87 @@ REMARKS:
+ Return the offset given by mod=10 addressing.  Also enables the
+ decoding of instructions.
+ ****************************************************************************/
+-u32 decode_rm10_address(
+-	int rm)
++u32
++decode_rm10_address(int rm)
+ {
+     u32 displacement = 0;
+     int sib;
+ 
+     /* Fetch disp16 if 16-bit addr mode */
+     if (!(M.x86.mode & SYSMODE_PREFIX_ADDR))
+-	displacement = (u16)fetch_word_imm();
++        displacement = (u16) fetch_word_imm();
+     else {
+-	/* Fetch disp32 if no SIB byte */
+-	if (rm != 4)
+-	    displacement = (u32)fetch_long_imm();
++        /* Fetch disp32 if no SIB byte */
++        if (rm != 4)
++            displacement = (u32) fetch_long_imm();
+     }
+ 
+     if (M.x86.mode & SYSMODE_PREFIX_ADDR) {
+         /* 32-bit addressing */
+-      switch (rm) {
+-	  case 0:
+-		DECODE_PRINTF2("%08x[EAX]", displacement);
+-		return M.x86.R_EAX + displacement;
+-	  case 1:
+-		DECODE_PRINTF2("%08x[ECX]", displacement);
+-		return M.x86.R_ECX + displacement;
+-	  case 2:
+-		DECODE_PRINTF2("%08x[EDX]", displacement);
+-		M.x86.mode |= SYSMODE_SEG_DS_SS;
+-		return M.x86.R_EDX + displacement;
+-	  case 3:
+-		DECODE_PRINTF2("%08x[EBX]", displacement);
+-		return M.x86.R_EBX + displacement;
+-	  case 4:
+-		sib = fetch_byte_imm();
+-		displacement = (u32)fetch_long_imm();
+-		DECODE_PRINTF2("%08x", displacement);
+-		return decode_sib_address(sib, 2) + displacement;
+-		break;
+-	  case 5:
+-		DECODE_PRINTF2("%08x[EBP]", displacement);
+-		return M.x86.R_EBP + displacement;
+-	  case 6:
+-		DECODE_PRINTF2("%08x[ESI]", displacement);
+-		return M.x86.R_ESI + displacement;
+-	  case 7:
+-		DECODE_PRINTF2("%08x[EDI]", displacement);
+-		return M.x86.R_EDI + displacement;
+-	}
+-	HALT_SYS();
+-    } else {
++        switch (rm) {
++        case 0:
++            DECODE_PRINTF2("%08x[EAX]", displacement);
++            return M.x86.R_EAX + displacement;
++        case 1:
++            DECODE_PRINTF2("%08x[ECX]", displacement);
++            return M.x86.R_ECX + displacement;
++        case 2:
++            DECODE_PRINTF2("%08x[EDX]", displacement);
++            M.x86.mode |= SYSMODE_SEG_DS_SS;
++            return M.x86.R_EDX + displacement;
++        case 3:
++            DECODE_PRINTF2("%08x[EBX]", displacement);
++            return M.x86.R_EBX + displacement;
++        case 4:
++            sib = fetch_byte_imm();
++            displacement = (u32) fetch_long_imm();
++            DECODE_PRINTF2("%08x", displacement);
++            return decode_sib_address(sib, 2) + displacement;
++            break;
++        case 5:
++            DECODE_PRINTF2("%08x[EBP]", displacement);
++            return M.x86.R_EBP + displacement;
++        case 6:
++            DECODE_PRINTF2("%08x[ESI]", displacement);
++            return M.x86.R_ESI + displacement;
++        case 7:
++            DECODE_PRINTF2("%08x[EDI]", displacement);
++            return M.x86.R_EDI + displacement;
++        }
++        HALT_SYS();
++    }
++    else {
+         /* 16-bit addressing */
+-      switch (rm) {
+-	  case 0:
++        switch (rm) {
++        case 0:
+             DECODE_PRINTF2("%04x[BX+SI]", displacement);
+             return (M.x86.R_BX + M.x86.R_SI + displacement) & 0xffff;
+-	  case 1:
++        case 1:
+             DECODE_PRINTF2("%04x[BX+DI]", displacement);
+             return (M.x86.R_BX + M.x86.R_DI + displacement) & 0xffff;
+-	  case 2:
+-		DECODE_PRINTF2("%04x[BP+SI]", displacement);
+-		M.x86.mode |= SYSMODE_SEG_DS_SS;
++        case 2:
++            DECODE_PRINTF2("%04x[BP+SI]", displacement);
++            M.x86.mode |= SYSMODE_SEG_DS_SS;
+             return (M.x86.R_BP + M.x86.R_SI + displacement) & 0xffff;
+-	  case 3:
+-		DECODE_PRINTF2("%04x[BP+DI]", displacement);
+-		M.x86.mode |= SYSMODE_SEG_DS_SS;
++        case 3:
++            DECODE_PRINTF2("%04x[BP+DI]", displacement);
++            M.x86.mode |= SYSMODE_SEG_DS_SS;
+             return (M.x86.R_BP + M.x86.R_DI + displacement) & 0xffff;
+-	  case 4:
++        case 4:
+             DECODE_PRINTF2("%04x[SI]", displacement);
+             return (M.x86.R_SI + displacement) & 0xffff;
+-	  case 5:
++        case 5:
+             DECODE_PRINTF2("%04x[DI]", displacement);
+             return (M.x86.R_DI + displacement) & 0xffff;
+-	  case 6:
+-		DECODE_PRINTF2("%04x[BP]", displacement);
+-		M.x86.mode |= SYSMODE_SEG_DS_SS;
++        case 6:
++            DECODE_PRINTF2("%04x[BP]", displacement);
++            M.x86.mode |= SYSMODE_SEG_DS_SS;
+             return (M.x86.R_BP + displacement) & 0xffff;
+-	  case 7:
++        case 7:
+             DECODE_PRINTF2("%04x[BX]", displacement);
+             return (M.x86.R_BX + displacement) & 0xffff;
+-	}
+-	HALT_SYS();
++        }
++        HALT_SYS();
+     }
+     return 0;
+     /*NOTREACHED */
+diff --git a/libs/x86emu/fpu.c b/libs/x86emu/fpu.c
+index b72de1e..0dab05c 100644
+--- a/libs/x86emu/fpu.c
++++ b/libs/x86emu/fpu.c
+@@ -42,7 +42,8 @@
+ /*----------------------------- Implementation ----------------------------*/
+ 
+ /* opcode=0xd8 */
+-void x86emuOp_esc_coprocess_d8(u8 X86EMU_UNUSED(op1))
++void
++x86emuOp_esc_coprocess_d8(u8 X86EMU_UNUSED(op1))
+ {
+     START_OF_INSTR();
+     DECODE_PRINTF("ESC D8\n");
+@@ -52,7 +53,7 @@ void x86emuOp_esc_coprocess_d8(u8 X86EMU_UNUSED(op1))
+ 
+ #ifdef DEBUG
+ 
+-static char *x86emu_fpu_op_d9_tab[] = {
++static const char *x86emu_fpu_op_d9_tab[] = {
+     "FLD\tDWORD PTR ", "ESC_D9\t", "FST\tDWORD PTR ", "FSTP\tDWORD PTR ",
+     "FLDENV\t", "FLDCW\t", "FSTENV\t", "FSTCW\t",
+ 
+@@ -63,7 +64,7 @@ static char *x86emu_fpu_op_d9_tab[] = {
+     "FLDENV\t", "FLDCW\t", "FSTENV\t", "FSTCW\t",
+ };
+ 
+-static char *x86emu_fpu_op_d9_tab1[] = {
++static const char *x86emu_fpu_op_d9_tab1[] = {
+     "FLD\t", "FLD\t", "FLD\t", "FLD\t",
+     "FLD\t", "FLD\t", "FLD\t", "FLD\t",
+ 
+@@ -89,10 +90,11 @@ static char *x86emu_fpu_op_d9_tab1[] = {
+     "FRNDINT", "FSCALE", "ESC_D9", "ESC_D9",
+ };
+ 
+-#endif /* DEBUG */
++#endif                          /* DEBUG */
+ 
+ /* opcode=0xd9 */
+-void x86emuOp_esc_coprocess_d9(u8 X86EMU_UNUSED(op1))
++void
++x86emuOp_esc_coprocess_d9(u8 X86EMU_UNUSED(op1))
+ {
+     int mod, rl, rh;
+     uint destoffset = 0;
+@@ -103,56 +105,58 @@ void x86emuOp_esc_coprocess_d9(u8 X86EMU_UNUSED(op1))
+ #ifdef DEBUG
+     if (mod != 3) {
+         DECODE_PRINTINSTR32(x86emu_fpu_op_d9_tab, mod, rh, rl);
+-    } else {
++    }
++    else {
+         DECODE_PRINTF(x86emu_fpu_op_d9_tab1[(rh << 3) + rl]);
+     }
+ #endif
+     switch (mod) {
+-      case 0:
++    case 0:
+         destoffset = decode_rm00_address(rl);
+         DECODE_PRINTF("\n");
+         break;
+-      case 1:
++    case 1:
+         destoffset = decode_rm01_address(rl);
+         DECODE_PRINTF("\n");
+         break;
+-      case 2:
++    case 2:
+         destoffset = decode_rm10_address(rl);
+         DECODE_PRINTF("\n");
+         break;
+-      case 3:                   /* register to register */
+-		stkelem = (u8)rl;
+-		if (rh < 4) {
+-				DECODE_PRINTF2("ST(%d)\n", stkelem);
+-		} else {
+-				DECODE_PRINTF("\n");
+-		}
++    case 3:                    /* register to register */
++        stkelem = (u8) rl;
++        if (rh < 4) {
++            DECODE_PRINTF2("ST(%d)\n", stkelem);
++        }
++        else {
++            DECODE_PRINTF("\n");
++        }
+         break;
+     }
+ #ifdef X86EMU_FPU_PRESENT
+     /* execute */
+     switch (mod) {
+-      case 3:
++    case 3:
+         switch (rh) {
+-          case 0:
++        case 0:
+             x86emu_fpu_R_fld(X86EMU_FPU_STKTOP, stkelem);
+             break;
+-          case 1:
++        case 1:
+             x86emu_fpu_R_fxch(X86EMU_FPU_STKTOP, stkelem);
+             break;
+-          case 2:
++        case 2:
+             switch (rl) {
+-              case 0:
++            case 0:
+                 x86emu_fpu_R_nop();
+                 break;
+-              default:
++            default:
+                 x86emu_fpu_illegal();
+                 break;
+             }
+-          case 3:
++        case 3:
+             x86emu_fpu_R_fstp(X86EMU_FPU_STKTOP, stkelem);
+             break;
+-          case 4:
++        case 4:
+             switch (rl) {
+             case 0:
+                 x86emu_fpu_R_fchs(X86EMU_FPU_STKTOP);
+@@ -173,133 +177,133 @@ void x86emuOp_esc_coprocess_d9(u8 X86EMU_UNUSED(op1))
+             }
+             break;
+ 
+-          case 5:
++        case 5:
+             switch (rl) {
+-              case 0:
++            case 0:
+                 x86emu_fpu_R_fld1(X86EMU_FPU_STKTOP);
+                 break;
+-              case 1:
++            case 1:
+                 x86emu_fpu_R_fldl2t(X86EMU_FPU_STKTOP);
+                 break;
+-              case 2:
++            case 2:
+                 x86emu_fpu_R_fldl2e(X86EMU_FPU_STKTOP);
+                 break;
+-              case 3:
++            case 3:
+                 x86emu_fpu_R_fldpi(X86EMU_FPU_STKTOP);
+                 break;
+-              case 4:
++            case 4:
+                 x86emu_fpu_R_fldlg2(X86EMU_FPU_STKTOP);
+                 break;
+-              case 5:
++            case 5:
+                 x86emu_fpu_R_fldln2(X86EMU_FPU_STKTOP);
+                 break;
+-              case 6:
++            case 6:
+                 x86emu_fpu_R_fldz(X86EMU_FPU_STKTOP);
+                 break;
+-              default:
++            default:
+                 /* 7 */
+                 x86emu_fpu_illegal();
+                 break;
+             }
+             break;
+ 
+-          case 6:
++        case 6:
+             switch (rl) {
+-              case 0:
++            case 0:
+                 x86emu_fpu_R_f2xm1(X86EMU_FPU_STKTOP);
+                 break;
+-              case 1:
++            case 1:
+                 x86emu_fpu_R_fyl2x(X86EMU_FPU_STKTOP);
+                 break;
+-              case 2:
++            case 2:
+                 x86emu_fpu_R_fptan(X86EMU_FPU_STKTOP);
+                 break;
+-              case 3:
++            case 3:
+                 x86emu_fpu_R_fpatan(X86EMU_FPU_STKTOP);
+                 break;
+-              case 4:
++            case 4:
+                 x86emu_fpu_R_fxtract(X86EMU_FPU_STKTOP);
+                 break;
+-              case 5:
++            case 5:
+                 x86emu_fpu_illegal();
+                 break;
+-              case 6:
++            case 6:
+                 x86emu_fpu_R_decstp();
+                 break;
+-              case 7:
++            case 7:
+                 x86emu_fpu_R_incstp();
+                 break;
+             }
+             break;
+ 
+-          case 7:
++        case 7:
+             switch (rl) {
+-              case 0:
++            case 0:
+                 x86emu_fpu_R_fprem(X86EMU_FPU_STKTOP);
+                 break;
+-              case 1:
++            case 1:
+                 x86emu_fpu_R_fyl2xp1(X86EMU_FPU_STKTOP);
+                 break;
+-              case 2:
++            case 2:
+                 x86emu_fpu_R_fsqrt(X86EMU_FPU_STKTOP);
+                 break;
+-              case 3:
++            case 3:
+                 x86emu_fpu_illegal();
+                 break;
+-              case 4:
++            case 4:
+                 x86emu_fpu_R_frndint(X86EMU_FPU_STKTOP);
+                 break;
+-              case 5:
++            case 5:
+                 x86emu_fpu_R_fscale(X86EMU_FPU_STKTOP);
+                 break;
+-              case 6:
+-              case 7:
+-              default:
++            case 6:
++            case 7:
++            default:
+                 x86emu_fpu_illegal();
+                 break;
+             }
+             break;
+ 
+-          default:
++        default:
+             switch (rh) {
+-              case 0:
++            case 0:
+                 x86emu_fpu_M_fld(X86EMU_FPU_FLOAT, destoffset);
+                 break;
+-              case 1:
++            case 1:
+                 x86emu_fpu_illegal();
+                 break;
+-              case 2:
++            case 2:
+                 x86emu_fpu_M_fst(X86EMU_FPU_FLOAT, destoffset);
+                 break;
+-              case 3:
++            case 3:
+                 x86emu_fpu_M_fstp(X86EMU_FPU_FLOAT, destoffset);
+                 break;
+-              case 4:
++            case 4:
+                 x86emu_fpu_M_fldenv(X86EMU_FPU_WORD, destoffset);
+                 break;
+-              case 5:
++            case 5:
+                 x86emu_fpu_M_fldcw(X86EMU_FPU_WORD, destoffset);
+                 break;
+-              case 6:
++            case 6:
+                 x86emu_fpu_M_fstenv(X86EMU_FPU_WORD, destoffset);
+                 break;
+-              case 7:
++            case 7:
+                 x86emu_fpu_M_fstcw(X86EMU_FPU_WORD, destoffset);
+                 break;
+             }
+         }
+     }
+ #else
+-    (void)destoffset;
+-    (void)stkelem;
+-#endif /* X86EMU_FPU_PRESENT */
++    (void) destoffset;
++    (void) stkelem;
++#endif                          /* X86EMU_FPU_PRESENT */
+     DECODE_CLEAR_SEGOVR();
+     END_OF_INSTR_NO_TRACE();
+ }
+ 
+ #ifdef DEBUG
+ 
+-char *x86emu_fpu_op_da_tab[] = {
++static const char *x86emu_fpu_op_da_tab[] = {
+     "FIADD\tDWORD PTR ", "FIMUL\tDWORD PTR ", "FICOM\tDWORD PTR ",
+     "FICOMP\tDWORD PTR ",
+     "FISUB\tDWORD PTR ", "FISUBR\tDWORD PTR ", "FIDIV\tDWORD PTR ",
+@@ -309,7 +313,7 @@ char *x86emu_fpu_op_da_tab[] = {
+     "FICOMP\tDWORD PTR ",
+     "FISUB\tDWORD PTR ", "FISUBR\tDWORD PTR ", "FIDIV\tDWORD PTR ",
+     "FIDIVR\tDWORD PTR ",
+-    
++
+     "FIADD\tDWORD PTR ", "FIMUL\tDWORD PTR ", "FICOM\tDWORD PTR ",
+     "FICOMP\tDWORD PTR ",
+     "FISUB\tDWORD PTR ", "FISUBR\tDWORD PTR ", "FIDIV\tDWORD PTR ",
+@@ -319,10 +323,11 @@ char *x86emu_fpu_op_da_tab[] = {
+     "ESC_DA     ", "ESC_DA ", "ESC_DA   ", "ESC_DA ",
+ };
+ 
+-#endif /* DEBUG */
++#endif                          /* DEBUG */
+ 
+ /* opcode=0xda */
+-void x86emuOp_esc_coprocess_da(u8 X86EMU_UNUSED(op1))
++void
++x86emuOp_esc_coprocess_da(u8 X86EMU_UNUSED(op1))
+ {
+     int mod, rl, rh;
+     uint destoffset = 0;
+@@ -332,59 +337,59 @@ void x86emuOp_esc_coprocess_da(u8 X86EMU_UNUSED(op1))
+     FETCH_DECODE_MODRM(mod, rh, rl);
+     DECODE_PRINTINSTR32(x86emu_fpu_op_da_tab, mod, rh, rl);
+     switch (mod) {
+-      case 0:
++    case 0:
+         destoffset = decode_rm00_address(rl);
+         DECODE_PRINTF("\n");
+         break;
+-      case 1:
++    case 1:
+         destoffset = decode_rm01_address(rl);
+         DECODE_PRINTF("\n");
+         break;
+-      case 2:
++    case 2:
+         destoffset = decode_rm10_address(rl);
+         DECODE_PRINTF("\n");
+         break;
+-      case 3:           /* register to register */
+-		stkelem = (u8)rl;
++    case 3:                    /* register to register */
++        stkelem = (u8) rl;
+         DECODE_PRINTF2("\tST(%d),ST\n", stkelem);
+         break;
+     }
+ #ifdef X86EMU_FPU_PRESENT
+     switch (mod) {
+-      case 3:
++    case 3:
+         x86emu_fpu_illegal();
+         break;
+-      default:
++    default:
+         switch (rh) {
+-          case 0:
++        case 0:
+             x86emu_fpu_M_iadd(X86EMU_FPU_SHORT, destoffset);
+             break;
+-          case 1:
++        case 1:
+             x86emu_fpu_M_imul(X86EMU_FPU_SHORT, destoffset);
+             break;
+-          case 2:
++        case 2:
+             x86emu_fpu_M_icom(X86EMU_FPU_SHORT, destoffset);
+             break;
+-          case 3:
++        case 3:
+             x86emu_fpu_M_icomp(X86EMU_FPU_SHORT, destoffset);
+             break;
+-          case 4:
++        case 4:
+             x86emu_fpu_M_isub(X86EMU_FPU_SHORT, destoffset);
+             break;
+-          case 5:
++        case 5:
+             x86emu_fpu_M_isubr(X86EMU_FPU_SHORT, destoffset);
+             break;
+-          case 6:
++        case 6:
+             x86emu_fpu_M_idiv(X86EMU_FPU_SHORT, destoffset);
+             break;
+-          case 7:
++        case 7:
+             x86emu_fpu_M_idivr(X86EMU_FPU_SHORT, destoffset);
+             break;
+         }
+     }
+ #else
+-    (void)destoffset;
+-    (void)stkelem;
++    (void) destoffset;
++    (void) stkelem;
+ #endif
+     DECODE_CLEAR_SEGOVR();
+     END_OF_INSTR_NO_TRACE();
+@@ -392,7 +397,7 @@ void x86emuOp_esc_coprocess_da(u8 X86EMU_UNUSED(op1))
+ 
+ #ifdef DEBUG
+ 
+-char *x86emu_fpu_op_db_tab[] = {
++static const char *x86emu_fpu_op_db_tab[] = {
+     "FILD\tDWORD PTR ", "ESC_DB\t19", "FIST\tDWORD PTR ", "FISTP\tDWORD PTR ",
+     "ESC_DB\t1C", "FLD\tTBYTE PTR ", "ESC_DB\t1E", "FSTP\tTBYTE PTR ",
+ 
+@@ -403,10 +408,11 @@ char *x86emu_fpu_op_db_tab[] = {
+     "ESC_DB\t1C", "FLD\tTBYTE PTR ", "ESC_DB\t1E", "FSTP\tTBYTE PTR ",
+ };
+ 
+-#endif /* DEBUG */
++#endif                          /* DEBUG */
+ 
+ /* opcode=0xdb */
+-void x86emuOp_esc_coprocess_db(u8 X86EMU_UNUSED(op1))
++void
++x86emuOp_esc_coprocess_db(u8 X86EMU_UNUSED(op1))
+ {
+     int mod, rl, rh;
+     uint destoffset = 0;
+@@ -416,104 +422,106 @@ void x86emuOp_esc_coprocess_db(u8 X86EMU_UNUSED(op1))
+ #ifdef DEBUG
+     if (mod != 3) {
+         DECODE_PRINTINSTR32(x86emu_fpu_op_db_tab, mod, rh, rl);
+-    } else if (rh == 4) {       /* === 11 10 0 nnn */
++    }
++    else if (rh == 4) {         /* === 11 10 0 nnn */
+         switch (rl) {
+-          case 0:
++        case 0:
+             DECODE_PRINTF("FENI\n");
+             break;
+-          case 1:
++        case 1:
+             DECODE_PRINTF("FDISI\n");
+             break;
+-          case 2:
++        case 2:
+             DECODE_PRINTF("FCLEX\n");
+             break;
+-          case 3:
++        case 3:
+             DECODE_PRINTF("FINIT\n");
+             break;
+         }
+-    } else {
++    }
++    else {
+         DECODE_PRINTF2("ESC_DB %0x\n", (mod << 6) + (rh << 3) + (rl));
+     }
+-#endif /* DEBUG */
++#endif                          /* DEBUG */
+     switch (mod) {
+-      case 0:
++    case 0:
+         destoffset = decode_rm00_address(rl);
+         break;
+-      case 1:
++    case 1:
+         destoffset = decode_rm01_address(rl);
+         break;
+-      case 2:
++    case 2:
+         destoffset = decode_rm10_address(rl);
+         break;
+-      case 3:                   /* register to register */
++    case 3:                    /* register to register */
+         break;
+     }
+ #ifdef X86EMU_FPU_PRESENT
+     /* execute */
+     switch (mod) {
+-      case 3:
++    case 3:
+         switch (rh) {
+-          case 4:
++        case 4:
+             switch (rl) {
+-              case 0:
++            case 0:
+                 x86emu_fpu_R_feni();
+                 break;
+-              case 1:
++            case 1:
+                 x86emu_fpu_R_fdisi();
+                 break;
+-              case 2:
++            case 2:
+                 x86emu_fpu_R_fclex();
+                 break;
+-              case 3:
++            case 3:
+                 x86emu_fpu_R_finit();
+                 break;
+-              default:
++            default:
+                 x86emu_fpu_illegal();
+                 break;
+             }
+             break;
+-          default:
++        default:
+             x86emu_fpu_illegal();
+             break;
+         }
+         break;
+-      default:
++    default:
+         switch (rh) {
+-          case 0:
++        case 0:
+             x86emu_fpu_M_fild(X86EMU_FPU_SHORT, destoffset);
+             break;
+-          case 1:
++        case 1:
+             x86emu_fpu_illegal();
+             break;
+-          case 2:
++        case 2:
+             x86emu_fpu_M_fist(X86EMU_FPU_SHORT, destoffset);
+             break;
+-          case 3:
++        case 3:
+             x86emu_fpu_M_fistp(X86EMU_FPU_SHORT, destoffset);
+             break;
+-          case 4:
++        case 4:
+             x86emu_fpu_illegal();
+             break;
+-          case 5:
++        case 5:
+             x86emu_fpu_M_fld(X86EMU_FPU_LDBL, destoffset);
+             break;
+-                      case 6:
++        case 6:
+             x86emu_fpu_illegal();
+             break;
+-          case 7:
++        case 7:
+             x86emu_fpu_M_fstp(X86EMU_FPU_LDBL, destoffset);
+             break;
+         }
+     }
+ #else
+-    (void)destoffset;
++    (void) destoffset;
+ #endif
+     DECODE_CLEAR_SEGOVR();
+     END_OF_INSTR_NO_TRACE();
+ }
+ 
+ #ifdef DEBUG
+-char *x86emu_fpu_op_dc_tab[] = {
++static const char *x86emu_fpu_op_dc_tab[] = {
+     "FADD\tQWORD PTR ", "FMUL\tQWORD PTR ", "FCOM\tQWORD PTR ",
+     "FCOMP\tQWORD PTR ",
+     "FSUB\tQWORD PTR ", "FSUBR\tQWORD PTR ", "FDIV\tQWORD PTR ",
+@@ -532,10 +540,11 @@ char *x86emu_fpu_op_dc_tab[] = {
+     "FADD\t", "FMUL\t", "FCOM\t", "FCOMP\t",
+     "FSUBR\t", "FSUB\t", "FDIVR\t", "FDIV\t",
+ };
+-#endif /* DEBUG */
++#endif                          /* DEBUG */
+ 
+ /* opcode=0xdc */
+-void x86emuOp_esc_coprocess_dc(u8 X86EMU_UNUSED(op1))
++void
++x86emuOp_esc_coprocess_dc(u8 X86EMU_UNUSED(op1))
+ {
+     int mod, rl, rh;
+     uint destoffset = 0;
+@@ -545,85 +554,85 @@ void x86emuOp_esc_coprocess_dc(u8 X86EMU_UNUSED(op1))
+     FETCH_DECODE_MODRM(mod, rh, rl);
+     DECODE_PRINTINSTR32(x86emu_fpu_op_dc_tab, mod, rh, rl);
+     switch (mod) {
+-      case 0:
++    case 0:
+         destoffset = decode_rm00_address(rl);
+         DECODE_PRINTF("\n");
+         break;
+-      case 1:
++    case 1:
+         destoffset = decode_rm01_address(rl);
+         DECODE_PRINTF("\n");
+         break;
+-      case 2:
++    case 2:
+         destoffset = decode_rm10_address(rl);
+         DECODE_PRINTF("\n");
+         break;
+-      case 3:                   /* register to register */
+-		stkelem = (u8)rl;
++    case 3:                    /* register to register */
++        stkelem = (u8) rl;
+         DECODE_PRINTF2("\tST(%d),ST\n", stkelem);
+         break;
+     }
+ #ifdef X86EMU_FPU_PRESENT
+     /* execute */
+     switch (mod) {
+-      case 3:
++    case 3:
+         switch (rh) {
+-          case 0:
++        case 0:
+             x86emu_fpu_R_fadd(stkelem, X86EMU_FPU_STKTOP);
+             break;
+-          case 1:
++        case 1:
+             x86emu_fpu_R_fmul(stkelem, X86EMU_FPU_STKTOP);
+             break;
+-          case 2:
++        case 2:
+             x86emu_fpu_R_fcom(stkelem, X86EMU_FPU_STKTOP);
+             break;
+-          case 3:
++        case 3:
+             x86emu_fpu_R_fcomp(stkelem, X86EMU_FPU_STKTOP);
+             break;
+-          case 4:
++        case 4:
+             x86emu_fpu_R_fsubr(stkelem, X86EMU_FPU_STKTOP);
+             break;
+-          case 5:
++        case 5:
+             x86emu_fpu_R_fsub(stkelem, X86EMU_FPU_STKTOP);
+             break;
+-          case 6:
++        case 6:
+             x86emu_fpu_R_fdivr(stkelem, X86EMU_FPU_STKTOP);
+             break;
+-          case 7:
++        case 7:
+             x86emu_fpu_R_fdiv(stkelem, X86EMU_FPU_STKTOP);
+             break;
+         }
+         break;
+-      default:
++    default:
+         switch (rh) {
+-          case 0:
++        case 0:
+             x86emu_fpu_M_fadd(X86EMU_FPU_DOUBLE, destoffset);
+             break;
+-          case 1:
++        case 1:
+             x86emu_fpu_M_fmul(X86EMU_FPU_DOUBLE, destoffset);
+             break;
+-          case 2:
++        case 2:
+             x86emu_fpu_M_fcom(X86EMU_FPU_DOUBLE, destoffset);
+             break;
+-          case 3:
++        case 3:
+             x86emu_fpu_M_fcomp(X86EMU_FPU_DOUBLE, destoffset);
+             break;
+-          case 4:
++        case 4:
+             x86emu_fpu_M_fsub(X86EMU_FPU_DOUBLE, destoffset);
+             break;
+-          case 5:
++        case 5:
+             x86emu_fpu_M_fsubr(X86EMU_FPU_DOUBLE, destoffset);
+             break;
+-          case 6:
++        case 6:
+             x86emu_fpu_M_fdiv(X86EMU_FPU_DOUBLE, destoffset);
+             break;
+-          case 7:
++        case 7:
+             x86emu_fpu_M_fdivr(X86EMU_FPU_DOUBLE, destoffset);
+             break;
+         }
+     }
+ #else
+-    (void)destoffset;
+-    (void)stkelem;
++    (void) destoffset;
++    (void) stkelem;
+ #endif
+     DECODE_CLEAR_SEGOVR();
+     END_OF_INSTR_NO_TRACE();
+@@ -631,7 +640,7 @@ void x86emuOp_esc_coprocess_dc(u8 X86EMU_UNUSED(op1))
+ 
+ #ifdef DEBUG
+ 
+-static char *x86emu_fpu_op_dd_tab[] = {
++static const char *x86emu_fpu_op_dd_tab[] = {
+     "FLD\tQWORD PTR ", "ESC_DD\t29,", "FST\tQWORD PTR ", "FSTP\tQWORD PTR ",
+     "FRSTOR\t", "ESC_DD\t2D,", "FSAVE\t", "FSTSW\t",
+ 
+@@ -645,10 +654,11 @@ static char *x86emu_fpu_op_dd_tab[] = {
+     "ESC_DD\t2C,", "ESC_DD\t2D,", "ESC_DD\t2E,", "ESC_DD\t2F,",
+ };
+ 
+-#endif /* DEBUG */
++#endif                          /* DEBUG */
+ 
+ /* opcode=0xdd */
+-void x86emuOp_esc_coprocess_dd(u8 X86EMU_UNUSED(op1))
++void
++x86emuOp_esc_coprocess_dd(u8 X86EMU_UNUSED(op1))
+ {
+     int mod, rl, rh;
+     uint destoffset = 0;
+@@ -658,75 +668,75 @@ void x86emuOp_esc_coprocess_dd(u8 X86EMU_UNUSED(op1))
+     FETCH_DECODE_MODRM(mod, rh, rl);
+     DECODE_PRINTINSTR32(x86emu_fpu_op_dd_tab, mod, rh, rl);
+     switch (mod) {
+-      case 0:
++    case 0:
+         destoffset = decode_rm00_address(rl);
+         DECODE_PRINTF("\n");
+         break;
+-      case 1:
++    case 1:
+         destoffset = decode_rm01_address(rl);
+         DECODE_PRINTF("\n");
+         break;
+-      case 2:
++    case 2:
+         destoffset = decode_rm10_address(rl);
+         DECODE_PRINTF("\n");
+         break;
+-      case 3:                   /* register to register */
+-		stkelem = (u8)rl;
++    case 3:                    /* register to register */
++        stkelem = (u8) rl;
+         DECODE_PRINTF2("\tST(%d),ST\n", stkelem);
+         break;
+     }
+ #ifdef X86EMU_FPU_PRESENT
+     switch (mod) {
+-      case 3:
++    case 3:
+         switch (rh) {
+-          case 0:
++        case 0:
+             x86emu_fpu_R_ffree(stkelem);
+             break;
+-          case 1:
++        case 1:
+             x86emu_fpu_R_fxch(stkelem);
+             break;
+-          case 2:
++        case 2:
+             x86emu_fpu_R_fst(stkelem);  /* register version */
+             break;
+-          case 3:
++        case 3:
+             x86emu_fpu_R_fstp(stkelem); /* register version */
+             break;
+-          default:
++        default:
+             x86emu_fpu_illegal();
+             break;
+         }
+         break;
+-      default:
++    default:
+         switch (rh) {
+-          case 0:
++        case 0:
+             x86emu_fpu_M_fld(X86EMU_FPU_DOUBLE, destoffset);
+             break;
+-          case 1:
++        case 1:
+             x86emu_fpu_illegal();
+             break;
+-          case 2:
++        case 2:
+             x86emu_fpu_M_fst(X86EMU_FPU_DOUBLE, destoffset);
+             break;
+-          case 3:
++        case 3:
+             x86emu_fpu_M_fstp(X86EMU_FPU_DOUBLE, destoffset);
+             break;
+-          case 4:
++        case 4:
+             x86emu_fpu_M_frstor(X86EMU_FPU_WORD, destoffset);
+             break;
+-          case 5:
++        case 5:
+             x86emu_fpu_illegal();
+             break;
+-          case 6:
++        case 6:
+             x86emu_fpu_M_fsave(X86EMU_FPU_WORD, destoffset);
+             break;
+-          case 7:
++        case 7:
+             x86emu_fpu_M_fstsw(X86EMU_FPU_WORD, destoffset);
+             break;
+         }
+     }
+ #else
+-    (void)destoffset;
+-    (void)stkelem;
++    (void) destoffset;
++    (void) stkelem;
+ #endif
+     DECODE_CLEAR_SEGOVR();
+     END_OF_INSTR_NO_TRACE();
+@@ -734,8 +744,7 @@ void x86emuOp_esc_coprocess_dd(u8 X86EMU_UNUSED(op1))
+ 
+ #ifdef DEBUG
+ 
+-static char *x86emu_fpu_op_de_tab[] =
+-{
++static const char *x86emu_fpu_op_de_tab[] = {
+     "FIADD\tWORD PTR ", "FIMUL\tWORD PTR ", "FICOM\tWORD PTR ",
+     "FICOMP\tWORD PTR ",
+     "FISUB\tWORD PTR ", "FISUBR\tWORD PTR ", "FIDIV\tWORD PTR ",
+@@ -755,10 +764,11 @@ static char *x86emu_fpu_op_de_tab[] =
+     "FSUBRP\t", "FSUBP\t", "FDIVRP\t", "FDIVP\t",
+ };
+ 
+-#endif /* DEBUG */
++#endif                          /* DEBUG */
+ 
+ /* opcode=0xde */
+-void x86emuOp_esc_coprocess_de(u8 X86EMU_UNUSED(op1))
++void
++x86emuOp_esc_coprocess_de(u8 X86EMU_UNUSED(op1))
+ {
+     int mod, rl, rh;
+     uint destoffset = 0;
+@@ -768,87 +778,87 @@ void x86emuOp_esc_coprocess_de(u8 X86EMU_UNUSED(op1))
+     FETCH_DECODE_MODRM(mod, rh, rl);
+     DECODE_PRINTINSTR32(x86emu_fpu_op_de_tab, mod, rh, rl);
+     switch (mod) {
+-      case 0:
++    case 0:
+         destoffset = decode_rm00_address(rl);
+         DECODE_PRINTF("\n");
+         break;
+-      case 1:
++    case 1:
+         destoffset = decode_rm01_address(rl);
+         DECODE_PRINTF("\n");
+         break;
+-      case 2:
++    case 2:
+         destoffset = decode_rm10_address(rl);
+         DECODE_PRINTF("\n");
+         break;
+-      case 3:                   /* register to register */
+-		stkelem = (u8)rl;
++    case 3:                    /* register to register */
++        stkelem = (u8) rl;
+         DECODE_PRINTF2("\tST(%d),ST\n", stkelem);
+         break;
+     }
+ #ifdef X86EMU_FPU_PRESENT
+     switch (mod) {
+-      case 3:
++    case 3:
+         switch (rh) {
+-          case 0:
++        case 0:
+             x86emu_fpu_R_faddp(stkelem, X86EMU_FPU_STKTOP);
[… more lines in the raw message]

Lines of this file are not shown. View the raw message.

meta/recipes-bsp/v86d/v86d_0.1.10.bb +2 -1
index a8f1d08..b980331 100644

Lines of this file are not shown. View the raw message.

The rest of this diff is not shown. View the raw message.

Signature · 1 line
1.9.1

Part of the diff is not shown here. View the raw message.

#2 lore raw

PATCH 2/2 qemu: upgrade to 2.0.0

In reply to Cristian Iorga

- switched to ${BP} variable.
- updated download link;
- fxrstorssefix.patch no longer needed, superseded;

---
 .../recipes-devtools/qemu/qemu/fxrstorssefix.patch | 31 ----------------------
 .../qemu/{qemu_1.7.0.bb => qemu_2.0.0.bb}          |  9 +++----
 2 files changed, 4 insertions(+), 36 deletions(-)
 delete mode 100644 meta/recipes-devtools/qemu/qemu/fxrstorssefix.patch
 rename meta/recipes-devtools/qemu/{qemu_1.7.0.bb => qemu_2.0.0.bb} (70%)
meta/recipes-devtools/qemu/qemu/fxrstorssefix.patch deleted +0 -31
deleted file mode 100644
index 59ab0f5..0000000
@@ -1,31 +0,0 @@
-When we restore the mxcsr resgister with FXRSTOR, we need to update the various SSE
-flag files by calling update_sse_status() else we're using the flags from some other
-process with interesting results.
-
-The code isn't ordered to make this easy hence the function declaration.
-
-Upstream-Status: Pending
-
-RP 2013/9/30
-
-Index: qemu-1.5.0/target-i386/fpu_helper.c
-===================================================================
---- qemu-1.5.0.orig/target-i386/fpu_helper.c	2013-09-30 18:46:39.283377648 +0000
-+++ qemu-1.5.0/target-i386/fpu_helper.c	2013-09-30 18:46:56.895377232 +0000
-@@ -1149,6 +1149,8 @@
-     }
- }
- 
-+static void update_sse_status(CPUX86State *env);
-+
- void helper_fxrstor(CPUX86State *env, target_ulong ptr, int data64)
- {
-     int i, fpus, fptag, nb_xmm_regs;
-@@ -1180,6 +1182,7 @@
-     if (env->cr[4] & CR4_OSFXSR_MASK) {
-         /* XXX: finish it */
-         env->mxcsr = cpu_ldl_data(env, ptr + 0x18);
-+        update_sse_status(env);
-         /* cpu_ldl_data(env, ptr + 0x1c); */
-         if (env->hflags & HF_CS64_MASK) {
-             nb_xmm_regs = 16;
meta/recipes-devtools/qemu/qemu_2.0.0.bb renamed from meta/recipes-devtools/qemu/qemu_1.7.0.bb +4 -5
similarity index 70%
rename from meta/recipes-devtools/qemu/qemu_1.7.0.bb
rename to meta/recipes-devtools/qemu/qemu_2.0.0.bb
index b776ccc..b8ce624 100644
@@ -3,13 +3,12 @@ require qemu.inc
 LIC_FILES_CHKSUM = "file://COPYING;md5=441c28d2cf86e15a37fa47e15a72fbac \
                     file://COPYING.LIB;endline=24;md5=c04def7ae38850e7d3ef548588159913"
 
-SRC_URI += "file://fxrstorssefix.patch \
-            file://qemu-enlarge-env-entry-size.patch \
+SRC_URI += "file://qemu-enlarge-env-entry-size.patch \
             file://Qemu-Arm-versatilepb-Add-memory-size-checking.patch"
 
-SRC_URI_prepend = "http://wiki.qemu.org/download/qemu-${PV}.tar.bz2"
-SRC_URI[md5sum] = "32893941d40d052a5e649efcf06aca06"
-SRC_URI[sha256sum] = "31f333a85f2d14c605a77679904a9668eaeb1b6dc7da53a1665230f46bc21314"
+SRC_URI_prepend = "http://wiki.qemu-project.org/download/${BP}.tar.bz2"
+SRC_URI[md5sum] = "2790f44fd76da5de5024b4aafeb594c2"
+SRC_URI[sha256sum] = "60cc1aa0cad39cec891f970bed60ca8a484f071adad4943123599ac223543a3b"
 
 COMPATIBLE_HOST_class-target_mips64 = "null"
 
Signature · 1 line
1.9.1