]> git.ipfire.org Git - people/ms/u-boot.git/blobdiff - board/MAI/bios_emulator/scitech/src/pm/linux/pm.c
* Code cleanup:
[people/ms/u-boot.git] / board / MAI / bios_emulator / scitech / src / pm / linux / pm.c
index 1d52984a6a6d28a5f0e0214ede77d7282cc907f0..c12a83500afaae53e04c12e5de252f37b93f97f3 100644 (file)
@@ -148,7 +148,7 @@ static inline void port_out(int value, int port)
     printk("%04X:%04X: outb.%04X <- %02X\n", traceAddr >> 16, traceAddr & 0xFFFF, (ushort)port, (uchar)value);
 #endif
     asm volatile ("outb %0,%1"
-          ::"a" ((unsigned char) value), "d"((unsigned short) port));
+         ::"a" ((unsigned char) value), "d"((unsigned short) port));
 }
 
 static inline void port_outw(int value, int port)
@@ -157,7 +157,7 @@ static inline void port_outw(int value, int port)
     printk("%04X:%04X: outw.%04X <- %04X\n", traceAddr >> 16,traceAddr & 0xFFFF, (ushort)port, (ushort)value);
 #endif
     asm volatile ("outw %0,%1"
-         ::"a" ((unsigned short) value), "d"((unsigned short) port));
+        ::"a" ((unsigned short) value), "d"((unsigned short) port));
 }
 
 static inline void port_outl(int value, int port)
@@ -166,15 +166,15 @@ static inline void port_outl(int value, int port)
     printk("%04X:%04X: outl.%04X <- %08X\n", traceAddr >> 16,traceAddr & 0xFFFF, (ushort)port, (ulong)value);
 #endif
     asm volatile ("outl %0,%1"
-         ::"a" ((unsigned long) value), "d"((unsigned short) port));
+        ::"a" ((unsigned long) value), "d"((unsigned short) port));
 }
 
 static inline unsigned int port_in(int port)
 {
     unsigned char value;
     asm volatile ("inb %1,%0"
-              :"=a" ((unsigned char)value)
-              :"d"((unsigned short) port));
+             :"=a" ((unsigned char)value)
+             :"d"((unsigned short) port));
 #ifdef TRACE_IO
     printk("%04X:%04X:  inb.%04X -> %02X\n", traceAddr >> 16,traceAddr & 0xFFFF, (ushort)port, (uchar)value);
 #endif
@@ -185,8 +185,8 @@ static inline unsigned int port_inw(int port)
 {
     unsigned short value;
     asm volatile ("inw %1,%0"
-              :"=a" ((unsigned short)value)
-              :"d"((unsigned short) port));
+             :"=a" ((unsigned short)value)
+             :"d"((unsigned short) port));
 #ifdef TRACE_IO
     printk("%04X:%04X:  inw.%04X -> %04X\n", traceAddr >> 16,traceAddr & 0xFFFF, (ushort)port, (ushort)value);
 #endif
@@ -197,8 +197,8 @@ static inline unsigned int port_inl(int port)
 {
     unsigned long value;
     asm volatile ("inl %1,%0"
-              :"=a" ((unsigned long)value)
-              :"d"((unsigned short) port));
+             :"=a" ((unsigned long)value)
+             :"d"((unsigned short) port));
 #ifdef TRACE_IO
     printk("%04X:%04X:  inl.%04X -> %08X\n", traceAddr >> 16,traceAddr & 0xFFFF, (ushort)port, (ulong)value);
 #endif
@@ -211,16 +211,16 @@ static int real_mem_init(void)
     int     fd_zero;
 
     if (mem_info.ready)
-        return 1;
+       return 1;
 
     if ((fd_zero = open("/dev/zero", O_RDONLY)) == -1)
-        PM_fatalError("You must have root privledges to run this program!");
+       PM_fatalError("You must have root privledges to run this program!");
     if ((m = mmap((void *)REAL_MEM_BASE, REAL_MEM_SIZE,
-            PROT_READ | PROT_WRITE | PROT_EXEC,
-            MAP_FIXED | MAP_PRIVATE, fd_zero, 0)) == (void *)-1) {
-        close(fd_zero);
-        PM_fatalError("You must have root privledges to run this program!");
-        }
+           PROT_READ | PROT_WRITE | PROT_EXEC,
+           MAP_FIXED | MAP_PRIVATE, fd_zero, 0)) == (void *)-1) {
+       close(fd_zero);
+       PM_fatalError("You must have root privledges to run this program!");
+       }
     mem_info.ready = 1;
     mem_info.count = 1;
     mem_info.blocks[0].size = REAL_MEM_SIZE;
@@ -231,9 +231,9 @@ static int real_mem_init(void)
 static void insert_block(int i)
 {
     memmove(
-        mem_info.blocks + i + 1,
-        mem_info.blocks + i,
-        (mem_info.count - i) * sizeof(struct mem_block));
+       mem_info.blocks + i + 1,
+       mem_info.blocks + i,
+       (mem_info.count - i) * sizeof(struct mem_block));
     mem_info.count++;
 }
 
@@ -242,9 +242,9 @@ static void delete_block(int i)
     mem_info.count--;
 
     memmove(
-        mem_info.blocks + i,
-        mem_info.blocks + i + 1,
-        (mem_info.count - i) * sizeof(struct mem_block));
+       mem_info.blocks + i,
+       mem_info.blocks + i + 1,
+       (mem_info.count - i) * sizeof(struct mem_block));
 }
 
 static inline void set_bit(unsigned int bit, void *array)
@@ -279,35 +279,35 @@ void PMAPI PM_init(void)
     uint    r_seg,r_off;
 
     if (inited)
-        return;
+       return;
 
     /* Map the Interrupt Vectors (0x0 - 0x400) + BIOS data (0x400 - 0x502)
      * and the physical framebuffer and ROM images from (0xa0000 - 0x100000)
      */
     real_mem_init();
     if (!fd_mem && (fd_mem = open("/dev/mem", O_RDWR)) == -1) {
-        PM_fatalError("You must have root privileges to run this program!");
-        }
+       PM_fatalError("You must have root privileges to run this program!");
+       }
     if ((m = mmap((void *)0, 0x502,
-            PROT_READ | PROT_WRITE | PROT_EXEC,
-            MAP_FIXED | MAP_PRIVATE, fd_mem, 0)) == (void *)-1) {
-        PM_fatalError("You must have root privileges to run this program!");
-        }
+           PROT_READ | PROT_WRITE | PROT_EXEC,
+           MAP_FIXED | MAP_PRIVATE, fd_mem, 0)) == (void *)-1) {
+       PM_fatalError("You must have root privileges to run this program!");
+       }
     if ((m = mmap((void *)0xA0000, 0xC0000 - 0xA0000,
-            PROT_READ | PROT_WRITE,
-            MAP_FIXED | MAP_SHARED, fd_mem, 0xA0000)) == (void *)-1) {
-        PM_fatalError("You must have root privileges to run this program!");
-        }
+           PROT_READ | PROT_WRITE,
+           MAP_FIXED | MAP_SHARED, fd_mem, 0xA0000)) == (void *)-1) {
+       PM_fatalError("You must have root privileges to run this program!");
+       }
     if ((m = mmap((void *)0xC0000, 0xD0000 - 0xC0000,
-            PROT_READ | PROT_WRITE | PROT_EXEC,
-            MAP_FIXED | MAP_PRIVATE, fd_mem, 0xC0000)) == (void *)-1) {
-        PM_fatalError("You must have root privileges to run this program!");
-        }
+           PROT_READ | PROT_WRITE | PROT_EXEC,
+           MAP_FIXED | MAP_PRIVATE, fd_mem, 0xC0000)) == (void *)-1) {
+       PM_fatalError("You must have root privileges to run this program!");
+       }
     if ((m = mmap((void *)0xD0000, 0x100000 - 0xD0000,
-            PROT_READ | PROT_WRITE,
-            MAP_FIXED | MAP_SHARED, fd_mem, 0xD0000)) == (void *)-1) {
-        PM_fatalError("You must have root privileges to run this program!");
-        }
+           PROT_READ | PROT_WRITE,
+           MAP_FIXED | MAP_SHARED, fd_mem, 0xD0000)) == (void *)-1) {
+       PM_fatalError("You must have root privileges to run this program!");
+       }
     inited = 1;
 
     /* Allocate a stack */
@@ -356,9 +356,9 @@ void PMAPI PM_backslash(char *s)
 {
     uint pos = strlen(s);
     if (s[pos-1] != '/') {
-        s[pos] = '/';
-        s[pos+1] = '\0';
-        }
+       s[pos] = '/';
+       s[pos+1] = '\0';
+       }
 }
 
 void PMAPI PM_setFatalErrorCleanup(
@@ -370,7 +370,7 @@ void PMAPI PM_setFatalErrorCleanup(
 void PMAPI PM_fatalError(const char *msg)
 {
     if (fatalErrorCleanup)
-        fatalErrorCleanup();
+       fatalErrorCleanup();
     fprintf(stderr,"%s\n", msg);
     fflush(stderr);
     exit(1);
@@ -379,18 +379,18 @@ void PMAPI PM_fatalError(const char *msg)
 static void ExitVBEBuf(void)
 {
     if (VESABuf_ptr)
-        PM_freeRealSeg(VESABuf_ptr);
+       PM_freeRealSeg(VESABuf_ptr);
     VESABuf_ptr = 0;
 }
 
 void * PMAPI PM_getVESABuf(uint *len,uint *rseg,uint *roff)
 {
     if (!VESABuf_ptr) {
-        /* Allocate a global buffer for communicating with the VESA VBE */
-        if ((VESABuf_ptr = PM_allocRealSeg(VESABuf_len, &VESABuf_rseg, &VESABuf_roff)) == NULL)
-            return NULL;
-        atexit(ExitVBEBuf);
-        }
+       /* Allocate a global buffer for communicating with the VESA VBE */
+       if ((VESABuf_ptr = PM_allocRealSeg(VESABuf_len, &VESABuf_rseg, &VESABuf_roff)) == NULL)
+           return NULL;
+       atexit(ExitVBEBuf);
+       }
     *len = VESABuf_len;
     *rseg = VESABuf_rseg;
     *roff = VESABuf_roff;
@@ -431,7 +431,7 @@ static FILE *open_kb_mode(
     char *path)
 {
     if (!PM_findBPD("graphics.bpd",path))
-        return NULL;
+       return NULL;
     PM_backslash(path);
     strcat(path,KBMODE_DAT);
     return fopen(path,mode);
@@ -448,18 +448,18 @@ void _PM_restore_kb_mode(void)
     char            path[PM_MAX_PATH];
 
     if (_PM_console_fd != -1 && (kbmode = open_kb_mode("rb",path)) != NULL) {
-        if (fread(&mode,1,sizeof(mode),kbmode) == sizeof(mode)) {
-            if (mode.startup_vc > 0)
-                ioctl(_PM_console_fd, VT_ACTIVATE, mode.startup_vc);
-            ioctl(_PM_console_fd, KDSKBMODE, mode.kb_mode);
-            ioctl(_PM_console_fd, KDSETLED, mode.leds);
-            tcsetattr(_PM_console_fd, TCSAFLUSH, &mode.termios);
-            fcntl(_PM_console_fd,F_SETFL,mode.flags);
-            }
-        fclose(kbmode);
-        unlink(path);
-        in_raw_mode = false;
-        }
+       if (fread(&mode,1,sizeof(mode),kbmode) == sizeof(mode)) {
+           if (mode.startup_vc > 0)
+               ioctl(_PM_console_fd, VT_ACTIVATE, mode.startup_vc);
+           ioctl(_PM_console_fd, KDSKBMODE, mode.kb_mode);
+           ioctl(_PM_console_fd, KDSETLED, mode.leds);
+           tcsetattr(_PM_console_fd, TCSAFLUSH, &mode.termios);
+           fcntl(_PM_console_fd,F_SETFL,mode.flags);
+           }
+       fclose(kbmode);
+       unlink(path);
+       in_raw_mode = false;
+       }
 }
 
 /****************************************************************************
@@ -488,49 +488,49 @@ void _PM_keyboard_rawmode(void)
     char            path[PM_MAX_PATH];
     int             i;
     static int sig_list[] = {
-        SIGHUP,
-        SIGINT,
-        SIGQUIT,
-        SIGILL,
-        SIGTRAP,
-        SIGABRT,
-        SIGIOT,
-        SIGBUS,
-        SIGFPE,
-        SIGKILL,
-        SIGSEGV,
-        SIGTERM,
-        };
+       SIGHUP,
+       SIGINT,
+       SIGQUIT,
+       SIGILL,
+       SIGTRAP,
+       SIGABRT,
+       SIGIOT,
+       SIGBUS,
+       SIGFPE,
+       SIGKILL,
+       SIGSEGV,
+       SIGTERM,
+       };
 
     if ((kbmode = open_kb_mode("rb",path)) == NULL) {
-        if ((kbmode = open_kb_mode("wb",path)) == NULL)
-            PM_fatalError("Unable to open kbmode.dat file for writing!");
-        if (ioctl(_PM_console_fd, KDGKBMODE, &mode.kb_mode))
-            perror("KDGKBMODE");
-        ioctl(_PM_console_fd, KDGETLED, &mode.leds);
-        _PM_leds = mode.leds & 0xF;
-        _PM_modifiers = 0;
-        tcgetattr(_PM_console_fd, &mode.termios);
-        conf = mode.termios;
-        conf.c_lflag &= ~(ICANON | ECHO | ISIG);
-        conf.c_iflag &= ~(ISTRIP | IGNCR | ICRNL | INLCR | BRKINT | PARMRK | INPCK | IUCLC | IXON | IXOFF);
-        conf.c_iflag  |= (IGNBRK | IGNPAR);
-        conf.c_cc[VMIN] = 1;
-        conf.c_cc[VTIME] = 0;
-        conf.c_cc[VSUSP] = 0;
-        tcsetattr(_PM_console_fd, TCSAFLUSH, &conf);
-        mode.flags = fcntl(_PM_console_fd,F_GETFL);
-        if (ioctl(_PM_console_fd, KDSKBMODE, K_MEDIUMRAW))
-            perror("KDSKBMODE");
-        atexit(_PM_restore_kb_mode);
-        for (i = 0; i < sizeof(sig_list)/sizeof(sig_list[0]); i++)
-            signal(sig_list[i], _PM_abort);
-        mode.startup_vc = startup_vc;
-        if (fwrite(&mode,1,sizeof(mode),kbmode) != sizeof(mode))
-            PM_fatalError("Error writing kbmode.dat!");
-        fclose(kbmode);
-        in_raw_mode = true;
-        }
+       if ((kbmode = open_kb_mode("wb",path)) == NULL)
+           PM_fatalError("Unable to open kbmode.dat file for writing!");
+       if (ioctl(_PM_console_fd, KDGKBMODE, &mode.kb_mode))
+           perror("KDGKBMODE");
+       ioctl(_PM_console_fd, KDGETLED, &mode.leds);
+       _PM_leds = mode.leds & 0xF;
+       _PM_modifiers = 0;
+       tcgetattr(_PM_console_fd, &mode.termios);
+       conf = mode.termios;
+       conf.c_lflag &= ~(ICANON | ECHO | ISIG);
+       conf.c_iflag &= ~(ISTRIP | IGNCR | ICRNL | INLCR | BRKINT | PARMRK | INPCK | IUCLC | IXON | IXOFF);
+       conf.c_iflag  |= (IGNBRK | IGNPAR);
+       conf.c_cc[VMIN] = 1;
+       conf.c_cc[VTIME] = 0;
+       conf.c_cc[VSUSP] = 0;
+       tcsetattr(_PM_console_fd, TCSAFLUSH, &conf);
+       mode.flags = fcntl(_PM_console_fd,F_GETFL);
+       if (ioctl(_PM_console_fd, KDSKBMODE, K_MEDIUMRAW))
+           perror("KDSKBMODE");
+       atexit(_PM_restore_kb_mode);
+       for (i = 0; i < sizeof(sig_list)/sizeof(sig_list[0]); i++)
+           signal(sig_list[i], _PM_abort);
+       mode.startup_vc = startup_vc;
+       if (fwrite(&mode,1,sizeof(mode),kbmode) != sizeof(mode))
+           PM_fatalError("Error writing kbmode.dat!");
+       fclose(kbmode);
+       in_raw_mode = true;
+       }
 }
 
 int PMAPI PM_kbhit(void)
@@ -539,9 +539,9 @@ int PMAPI PM_kbhit(void)
     struct timeval tv = { 0, 0 };
 
     if (console_count == 0)
-        PM_fatalError("You *must* open a console before using PM_kbhit!");
+       PM_fatalError("You *must* open a console before using PM_kbhit!");
     if (!in_raw_mode)
-        _PM_keyboard_rawmode();
+       _PM_keyboard_rawmode();
     FD_ZERO(&s);
     FD_SET(_PM_console_fd, &s);
     return select(_PM_console_fd+1, &s, NULL, NULL, &tv) > 0;
@@ -554,62 +554,62 @@ int PMAPI PM_getch(void)
     static struct kbentry ke;
 
     if (console_count == 0)
-        PM_fatalError("You *must* open a console before using PM_getch!");
+       PM_fatalError("You *must* open a console before using PM_getch!");
     if (!in_raw_mode)
-        _PM_keyboard_rawmode();
+       _PM_keyboard_rawmode();
     while (read(_PM_console_fd, &c, 1) > 0) {
-        release = c & 0x80;
-        c &= 0x7F;
-        if (release) {
-            switch(c){
-                case 42: case 54: // Shift
-                    _PM_modifiers &= ~KB_SHIFT;
-                    break;
-                case 29: case 97: // Control
-                    _PM_modifiers &= ~KB_CONTROL;
-                    break;
-                case 56: case 100: // Alt / AltGr
-                    _PM_modifiers &= ~KB_ALT;
-                    break;
-                }
-            continue;
-            }
-        switch (c) {
-            case 42: case 54: // Shift
-                _PM_modifiers |= KB_SHIFT;
-                 break;
-            case 29: case 97: // Control
-                _PM_modifiers |= KB_CONTROL;
-                break;
-            case 56: case 100: // Alt / AltGr
-                _PM_modifiers |= KB_ALT;
-                break;
-            case 58: // Caps Lock
-                _PM_modifiers ^= KB_CAPS;
-                ioctl(_PM_console_fd, KDSETLED, _PM_modifiers & 7);
-                break;
-            case 69: // Num Lock
-                _PM_modifiers ^= KB_NUMLOCK;
-                ioctl(_PM_console_fd, KDSETLED, _PM_modifiers & 7);
-                break;
-            case 70: // Scroll Lock
-                _PM_modifiers ^= KB_SCROLL;
-                ioctl(_PM_console_fd, KDSETLED, _PM_modifiers & 7);
-                break;
-            case 28:
-                return 0x1C;
-            default:
-                ke.kb_index = c;
-                ke.kb_table = 0;
-                if ((_PM_modifiers & KB_SHIFT) || (_PM_modifiers & KB_CAPS))
-                    ke.kb_table |= K_SHIFTTAB;
-                if (_PM_modifiers & KB_ALT)
-                    ke.kb_table |= K_ALTTAB;
-                ioctl(_PM_console_fd, KDGKBENT, (ulong)&ke);
-                c = ke.kb_value & 0xFF;
-                return c;
-            }
-        }
+       release = c & 0x80;
+       c &= 0x7F;
+       if (release) {
+           switch(c){
+               case 42: case 54: /* Shift */
+                   _PM_modifiers &= ~KB_SHIFT;
+                   break;
+               case 29: case 97: /* Control */
+                   _PM_modifiers &= ~KB_CONTROL;
+                   break;
+               case 56: case 100: /* Alt / AltGr */
+                   _PM_modifiers &= ~KB_ALT;
+                   break;
+               }
+           continue;
+           }
+       switch (c) {
+           case 42: case 54: /* Shift */
+               _PM_modifiers |= KB_SHIFT;
+                break;
+           case 29: case 97: /* Control */
+               _PM_modifiers |= KB_CONTROL;
+               break;
+           case 56: case 100: /* Alt / AltGr */
+               _PM_modifiers |= KB_ALT;
+               break;
+           case 58: /* Caps Lock */
+               _PM_modifiers ^= KB_CAPS;
+               ioctl(_PM_console_fd, KDSETLED, _PM_modifiers & 7);
+               break;
+           case 69: /* Num Lock */
+               _PM_modifiers ^= KB_NUMLOCK;
+               ioctl(_PM_console_fd, KDSETLED, _PM_modifiers & 7);
+               break;
+           case 70: /* Scroll Lock */
+               _PM_modifiers ^= KB_SCROLL;
+               ioctl(_PM_console_fd, KDSETLED, _PM_modifiers & 7);
+               break;
+           case 28:
+               return 0x1C;
+           default:
+               ke.kb_index = c;
+               ke.kb_table = 0;
+               if ((_PM_modifiers & KB_SHIFT) || (_PM_modifiers & KB_CAPS))
+                   ke.kb_table |= K_SHIFTTAB;
+               if (_PM_modifiers & KB_ALT)
+                   ke.kb_table |= K_ALTTAB;
+               ioctl(_PM_console_fd, KDGKBENT, (ulong)&ke);
+               c = ke.kb_value & 0xFF;
+               return c;
+           }
+       }
     return 0;
 }
 
@@ -621,12 +621,12 @@ static void wait_vt_active(
     int _PM_console_fd)
 {
     while (ioctl(_PM_console_fd, VT_WAITACTIVE, tty_vc) < 0) {
-        if ((errno != EAGAIN) && (errno != EINTR)) {
-            perror("ioctl(VT_WAITACTIVE)");
-            exit(1);
-            }
-        usleep(150000);
-        }
+       if ((errno != EAGAIN) && (errno != EINTR)) {
+           perror("ioctl(VT_WAITACTIVE)");
+           exit(1);
+           }
+       usleep(150000);
+       }
 }
 
 /****************************************************************************
@@ -641,7 +641,7 @@ static int check_owner(
 
     sprintf(fname, "/dev/tty%d", vc);
     if ((stat(fname, &sbuf) >= 0) && (getuid() == sbuf.st_uid))
-        return 1;
+       return 1;
     printf("You must be the owner of the current console to use this program.\n");
     return 0;
 }
@@ -658,7 +658,7 @@ static void restore_text_console(
     int console_id)
 {
     if (ioctl(console_id, KDSETMODE, KD_TEXT) < 0)
-        LOGWARN("ioctl(KDSETMODE) failed");
+       LOGWARN("ioctl(KDSETMODE) failed");
     _PM_restore_kb_mode();
 }
 
@@ -682,7 +682,7 @@ PM_HWND PMAPI PM_openConsole(
 
     /* Check if we have already opened the console */
     if (console_count++)
-        return _PM_console_fd;
+       return _PM_console_fd;
 
     /* Now, it would be great if we could use /dev/tty and see what it is
      * connected to. Alas, we cannot find out reliably what VC /dev/tty is
@@ -690,26 +690,26 @@ PM_HWND PMAPI PM_openConsole(
      */
     startup_vc = 0;
     for (_PM_console_fd = 0; _PM_console_fd < 3; _PM_console_fd++) {
-        if (fstat(_PM_console_fd, &sbuf) < 0)
-            continue;
-        if (ioctl(_PM_console_fd, VT_GETMODE, &vtm) < 0)
-            continue;
-        if ((sbuf.st_rdev & 0xFF00) != 0x400)
-            continue;
-        if (!(sbuf.st_rdev & 0xFF))
-            continue;
-        tty_vc = sbuf.st_rdev & 0xFF;
-        restore_text_console(_PM_console_fd);
-        return _PM_console_fd;
-        }
+       if (fstat(_PM_console_fd, &sbuf) < 0)
+           continue;
+       if (ioctl(_PM_console_fd, VT_GETMODE, &vtm) < 0)
+           continue;
+       if ((sbuf.st_rdev & 0xFF00) != 0x400)
+           continue;
+       if (!(sbuf.st_rdev & 0xFF))
+           continue;
+       tty_vc = sbuf.st_rdev & 0xFF;
+       restore_text_console(_PM_console_fd);
+       return _PM_console_fd;
+       }
     if ((_PM_console_fd = open("/dev/console", O_RDWR)) < 0) {
-        printf("open_dev_console: can't open /dev/console \n");
-        exit(1);
-        }
+       printf("open_dev_console: can't open /dev/console \n");
+       exit(1);
+       }
     if (ioctl(_PM_console_fd, VT_OPENQRY, &tty_vc) < 0)
-        goto Error;
+       goto Error;
     if (tty_vc <= 0)
-        goto Error;
+       goto Error;
     sprintf(fname, "/dev/tty%d", tty_vc);
     close(_PM_console_fd);
 
@@ -718,40 +718,40 @@ PM_HWND PMAPI PM_openConsole(
 
     /* We must use RDWR to allow for output... */
     if (((_PM_console_fd = open(fname, O_RDWR)) >= 0) &&
-            (ioctl(_PM_console_fd, VT_GETSTATE, &vts) >= 0)) {
-        if (!check_owner(vts.v_active))
-            goto Error;
-        restore_text_console(_PM_console_fd);
-
-        /* Success, redirect all stdios */
-        fflush(stdin);
-        fflush(stdout);
-        fflush(stderr);
-        close(0);
-        close(1);
-        close(2);
-        dup(_PM_console_fd);
-        dup(_PM_console_fd);
-        dup(_PM_console_fd);
-
-        /* clear screen and switch to it */
-        fwrite("\e[H\e[J", 6, 1, stderr);
-        fflush(stderr);
-        if (tty_vc != vts.v_active) {
-            startup_vc = vts.v_active;
-            ioctl(_PM_console_fd, VT_ACTIVATE, tty_vc);
-            wait_vt_active(_PM_console_fd);
-            }
-        }
+           (ioctl(_PM_console_fd, VT_GETSTATE, &vts) >= 0)) {
+       if (!check_owner(vts.v_active))
+           goto Error;
+       restore_text_console(_PM_console_fd);
+
+       /* Success, redirect all stdios */
+       fflush(stdin);
+       fflush(stdout);
+       fflush(stderr);
+       close(0);
+       close(1);
+       close(2);
+       dup(_PM_console_fd);
+       dup(_PM_console_fd);
+       dup(_PM_console_fd);
+
+       /* clear screen and switch to it */
+       fwrite("\e[H\e[J", 6, 1, stderr);
+       fflush(stderr);
+       if (tty_vc != vts.v_active) {
+           startup_vc = vts.v_active;
+           ioctl(_PM_console_fd, VT_ACTIVATE, tty_vc);
+           wait_vt_active(_PM_console_fd);
+           }
+       }
     return _PM_console_fd;
 
 Error:
     if (_PM_console_fd > 2)
-        close(_PM_console_fd);
+       close(_PM_console_fd);
     console_count = 0;
     PM_fatalError(
-        "Not running in a graphics capable console,\n"
-        "and unable to find one.\n");
+       "Not running in a graphics capable console,\n"
+       "and unable to find one.\n");
     return -1;
 }
 
@@ -764,7 +764,7 @@ Returns the size of the console state buffer.
 int PMAPI PM_getConsoleStateSize(void)
 {
     if (!inited)
-        PM_init();
+       PM_init();
     return PM_getVGAStateSize() + FONT_C*2;
 }
 
@@ -778,11 +778,11 @@ void PMAPI PM_saveConsoleState(void *stateBuf,int console_id)
 
     /* Save the current console font */
     if (ioctl(console_id,GIO_FONT,&regs[PM_getVGAStateSize()]) < 0)
-        perror("ioctl(GIO_FONT)");
+       perror("ioctl(GIO_FONT)");
 
     /* Inform the Linux console that we are going into graphics mode */
     if (ioctl(console_id, KDSETMODE, KD_GRAPHICS) < 0)
-        perror("ioctl(KDSETMODE)");
+       perror("ioctl(KDSETMODE)");
 
     /* Save state of VGA registers */
     PM_saveVGAState(stateBuf);
@@ -806,11 +806,11 @@ void PMAPI PM_restoreConsoleState(const void *stateBuf,PM_HWND console_id)
 
     /* Inform the Linux console that we are back from graphics modes */
     if (ioctl(console_id, KDSETMODE, KD_TEXT) < 0)
-        LOGWARN("ioctl(KDSETMODE) failed");
+       LOGWARN("ioctl(KDSETMODE) failed");
 
     /* Restore the old console font */
     if (ioctl(console_id,PIO_FONT,&regs[PM_getVGAStateSize()]) < 0)
-        LOGWARN("ioctl(KDSETMODE) failed");
+       LOGWARN("ioctl(KDSETMODE) failed");
 
     /* Coming back from graphics mode on Linux also restored the previous
      * text mode console contents, so we need to clear the screen to get
@@ -830,15 +830,15 @@ void PMAPI PM_closeConsole(PM_HWND _PM_console_fd)
 {
     /* Restore console to normal operation */
     if (--console_count == 0) {
-        /* Re-activate the original virtual console */
-        if (startup_vc > 0)
-            ioctl(_PM_console_fd, VT_ACTIVATE, startup_vc);
+       /* Re-activate the original virtual console */
+       if (startup_vc > 0)
+           ioctl(_PM_console_fd, VT_ACTIVATE, startup_vc);
 
-        /* Close the console file descriptor */
-        if (_PM_console_fd > 2)
-            close(_PM_console_fd);
-        _PM_console_fd = -1;
-        }
+       /* Close the console file descriptor */
+       if (_PM_console_fd > 2)
+           close(_PM_console_fd);
+       _PM_console_fd = -1;
+       }
 }
 
 void PM_setOSCursorLocation(int x,int y)
@@ -855,12 +855,12 @@ void PM_setOSScreenWidth(int width,int height)
     struct winsize  ws;
     struct vt_sizes vs;
 
-    // Resize the software terminal
+    /* Resize the software terminal */
     ws.ws_col = width;
     ws.ws_row = height;
     ioctl(_PM_console_fd, TIOCSWINSZ, &ws);
 
-    // And the hardware
+    /* And the hardware */
     vs.v_rows = height;
     vs.v_cols = width;
     vs.v_scrollsize = 0;
@@ -869,18 +869,18 @@ void PM_setOSScreenWidth(int width,int height)
 
 ibool PMAPI PM_setRealTimeClockHandler(PM_intHandler ih, int frequency)
 {
-    // TODO: Implement this for Linux
+    /* TODO: Implement this for Linux */
     return false;
 }
 
 void PMAPI PM_setRealTimeClockFrequency(int frequency)
 {
-    // TODO: Implement this for Linux
+    /* TODO: Implement this for Linux */
 }
 
 void PMAPI PM_restoreRealTimeClockHandler(void)
 {
-    // TODO: Implement this for Linux
+    /* TODO: Implement this for Linux */
 }
 
 char * PMAPI PM_getCurrentPath(
@@ -929,7 +929,7 @@ void * PMAPI PM_getBIOSPointer(void)
 {
     static uchar *zeroPtr = NULL;
     if (!zeroPtr)
-        zeroPtr = PM_mapPhysicalAddr(0,0xFFFFF,true);
+       zeroPtr = PM_mapPhysicalAddr(0,0xFFFFF,true);
     return (void*)(zeroPtr + 0x400);
 }
 
@@ -939,7 +939,7 @@ void * PMAPI PM_getA0000Pointer(void)
      * address mapping, so we can return the address here.
      */
     if (!inited)
-        PM_init();
+       PM_init();
     return (void*)(0xA0000);
 }
 
@@ -949,11 +949,11 @@ void * PMAPI PM_mapPhysicalAddr(ulong base,ulong limit,ibool isCached)
     ulong   baseAddr,baseOfs;
 
     if (!inited)
-        PM_init();
+       PM_init();
     if (base >= 0xA0000 && base < 0x100000)
-        return (void*)base;
+       return (void*)base;
     if (!fd_mem && (fd_mem = open("/dev/mem", O_RDWR)) == -1)
-        return NULL;
+       return NULL;
 
     /* Round the physical address to a 4Kb boundary and the limit to a
      * 4Kb-1 boundary before passing the values to mmap. If we round the
@@ -964,57 +964,57 @@ void * PMAPI PM_mapPhysicalAddr(ulong base,ulong limit,ibool isCached)
     baseAddr = base & ~4095;
     limit = ((limit+baseOfs+1+4095) & ~4095)-1;
     if ((p = mmap(0, limit+1,
-            PROT_READ | PROT_WRITE, MAP_SHARED,
-            fd_mem, baseAddr)) == (void *)-1)
-        return NULL;
+           PROT_READ | PROT_WRITE, MAP_SHARED,
+           fd_mem, baseAddr)) == (void *)-1)
+       return NULL;
     return (void*)(p+baseOfs);
 }
 
 void PMAPI PM_freePhysicalAddr(void *ptr,ulong limit)
 {
     if ((ulong)ptr >= 0x100000)
-        munmap(ptr,limit+1);
+       munmap(ptr,limit+1);
 }
 
 ulong PMAPI PM_getPhysicalAddr(void *p)
 {
-    // TODO: This function should find the physical address of a linear
-    //       address.
+    /* TODO: This function should find the physical address of a linear */
+    /*       address. */
     return 0xFFFFFFFFUL;
 }
 
 ibool PMAPI PM_getPhysicalAddrRange(void *p,ulong length,ulong *physAddress)
 {
-    // TODO: This function should find a range of physical addresses
-    //       for a linear address.
+    /* TODO: This function should find a range of physical addresses */
+    /*       for a linear address. */
     return false;
 }
 
 void PMAPI PM_sleep(ulong milliseconds)
 {
-    // TODO: Put the process to sleep for milliseconds
+    /* TODO: Put the process to sleep for milliseconds */
 }
 
 int PMAPI PM_getCOMPort(int port)
 {
-    // TODO: Re-code this to determine real values using the Plug and Play
-    //       manager for the OS.
+    /* TODO: Re-code this to determine real values using the Plug and Play */
+    /*       manager for the OS. */
     switch (port) {
-        case 0: return 0x3F8;
-        case 1: return 0x2F8;
-        }
+       case 0: return 0x3F8;
+       case 1: return 0x2F8;
+       }
     return 0;
 }
 
 int PMAPI PM_getLPTPort(int port)
 {
-    // TODO: Re-code this to determine real values using the Plug and Play
-    //       manager for the OS.
+    /* TODO: Re-code this to determine real values using the Plug and Play */
+    /*       manager for the OS. */
     switch (port) {
-        case 0: return 0x3BC;
-        case 1: return 0x378;
-        case 2: return 0x278;
-        }
+       case 0: return 0x3BC;
+       case 1: return 0x378;
+       case 2: return 0x278;
+       }
     return 0;
 }
 
@@ -1038,7 +1038,7 @@ void * PMAPI PM_mapRealPointer(uint r_seg,uint r_off)
      * mapping so we can simply return the physical address in here.
      */
     if (!inited)
-        PM_init();
+       PM_init();
     return (void*)MK_PHYS(r_seg,r_off);
 }
 
@@ -1048,24 +1048,24 @@ void * PMAPI PM_allocRealSeg(uint size,uint *r_seg,uint *r_off)
     char    *r = (char *)REAL_MEM_BASE;
 
     if (!inited)
-        PM_init();
+       PM_init();
     if (!mem_info.ready)
-        return NULL;
+       return NULL;
     if (mem_info.count == REAL_MEM_BLOCKS)
-        return NULL;
+       return NULL;
     size = (size + 15) & ~15;
     for (i = 0; i < mem_info.count; i++) {
-        if (mem_info.blocks[i].free && size < mem_info.blocks[i].size) {
-            insert_block(i);
-            mem_info.blocks[i].size = size;
-            mem_info.blocks[i].free = 0;
-            mem_info.blocks[i + 1].size -= size;
-            *r_seg = (uint)(r) >> 4;
-            *r_off = (uint)(r) & 0xF;
-            return (void *)r;
-            }
-        r += mem_info.blocks[i].size;
-        }
+       if (mem_info.blocks[i].free && size < mem_info.blocks[i].size) {
+           insert_block(i);
+           mem_info.blocks[i].size = size;
+           mem_info.blocks[i].free = 0;
+           mem_info.blocks[i + 1].size -= size;
+           *r_seg = (uint)(r) >> 4;
+           *r_off = (uint)(r) & 0xF;
+           return (void *)r;
+           }
+       r += mem_info.blocks[i].size;
+       }
     return NULL;
 }
 
@@ -1075,23 +1075,23 @@ void PMAPI PM_freeRealSeg(void *mem)
     char    *r = (char *)REAL_MEM_BASE;
 
     if (!mem_info.ready)
-        return;
+       return;
     i = 0;
     while (mem != (void *)r) {
-        r += mem_info.blocks[i].size;
-        i++;
-        if (i == mem_info.count)
-            return;
-        }
+       r += mem_info.blocks[i].size;
+       i++;
+       if (i == mem_info.count)
+           return;
+       }
     mem_info.blocks[i].free = 1;
     if (i + 1 < mem_info.count && mem_info.blocks[i + 1].free) {
-        mem_info.blocks[i].size += mem_info.blocks[i + 1].size;
-        delete_block(i + 1);
-        }
+       mem_info.blocks[i].size += mem_info.blocks[i + 1].size;
+       delete_block(i + 1);
+       }
     if (i - 1 >= 0 && mem_info.blocks[i - 1].free) {
-        mem_info.blocks[i - 1].size += mem_info.blocks[i].size;
-        delete_block(i);
-        }
+       mem_info.blocks[i - 1].size += mem_info.blocks[i].size;
+       delete_block(i);
+       }
 }
 
 #define DIRECTION_FLAG  (1 << 10)
@@ -1104,27 +1104,27 @@ static void em_ins(int size)
     edi = context.vm.regs.edi & 0xffff;
     edi += (unsigned int)context.vm.regs.ds << 4;
     if (context.vm.regs.eflags & DIRECTION_FLAG) {
-        if (size == 4)
-            asm volatile ("std; insl; cld"
-             : "=D" (edi) : "d" (edx), "0" (edi));
-        else if (size == 2)
-            asm volatile ("std; insw; cld"
-             : "=D" (edi) : "d" (edx), "0" (edi));
-        else
-            asm volatile ("std; insb; cld"
-             : "=D" (edi) : "d" (edx), "0" (edi));
-        }
+       if (size == 4)
+           asm volatile ("std; insl; cld"
+            : "=D" (edi) : "d" (edx), "0" (edi));
+       else if (size == 2)
+           asm volatile ("std; insw; cld"
+            : "=D" (edi) : "d" (edx), "0" (edi));
+       else
+           asm volatile ("std; insb; cld"
+            : "=D" (edi) : "d" (edx), "0" (edi));
+       }
     else {
-        if (size == 4)
-            asm volatile ("cld; insl"
-             : "=D" (edi) : "d" (edx), "0" (edi));
-        else if (size == 2)
-            asm volatile ("cld; insw"
-             : "=D" (edi) : "d" (edx), "0" (edi));
-        else
-            asm volatile ("cld; insb"
-             : "=D" (edi) : "d" (edx), "0" (edi));
-        }
+       if (size == 4)
+           asm volatile ("cld; insl"
+            : "=D" (edi) : "d" (edx), "0" (edi));
+       else if (size == 2)
+           asm volatile ("cld; insw"
+            : "=D" (edi) : "d" (edx), "0" (edi));
+       else
+           asm volatile ("cld; insb"
+            : "=D" (edi) : "d" (edx), "0" (edi));
+       }
     edi -= (unsigned int)context.vm.regs.ds << 4;
     context.vm.regs.edi &= 0xffff0000;
     context.vm.regs.edi |= edi & 0xffff;
@@ -1139,33 +1139,33 @@ static void em_rep_ins(int size)
     edi = context.vm.regs.edi & 0xffff;
     edi += (unsigned int)context.vm.regs.ds << 4;
     if (context.vm.regs.eflags & DIRECTION_FLAG) {
-        if (size == 4)
-            asm volatile ("std; rep; insl; cld"
-             : "=D" (edi), "=c" (ecx)
-             : "d" (edx), "0" (edi), "1" (ecx));
-        else if (size == 2)
-            asm volatile ("std; rep; insw; cld"
-             : "=D" (edi), "=c" (ecx)
-             : "d" (edx), "0" (edi), "1" (ecx));
-        else
-            asm volatile ("std; rep; insb; cld"
-             : "=D" (edi), "=c" (ecx)
-             : "d" (edx), "0" (edi), "1" (ecx));
-        }
+       if (size == 4)
+           asm volatile ("std; rep; insl; cld"
+            : "=D" (edi), "=c" (ecx)
+            : "d" (edx), "0" (edi), "1" (ecx));
+       else if (size == 2)
+           asm volatile ("std; rep; insw; cld"
+            : "=D" (edi), "=c" (ecx)
+            : "d" (edx), "0" (edi), "1" (ecx));
+       else
+           asm volatile ("std; rep; insb; cld"
+            : "=D" (edi), "=c" (ecx)
+            : "d" (edx), "0" (edi), "1" (ecx));
+       }
     else {
-        if (size == 4)
-            asm volatile ("cld; rep; insl"
-             : "=D" (edi), "=c" (ecx)
-             : "d" (edx), "0" (edi), "1" (ecx));
-        else if (size == 2)
-            asm volatile ("cld; rep; insw"
-             : "=D" (edi), "=c" (ecx)
-             : "d" (edx), "0" (edi), "1" (ecx));
-        else
-            asm volatile ("cld; rep; insb"
-             : "=D" (edi), "=c" (ecx)
-             : "d" (edx), "0" (edi), "1" (ecx));
-        }
+       if (size == 4)
+           asm volatile ("cld; rep; insl"
+            : "=D" (edi), "=c" (ecx)
+            : "d" (edx), "0" (edi), "1" (ecx));
+       else if (size == 2)
+           asm volatile ("cld; rep; insw"
+            : "=D" (edi), "=c" (ecx)
+            : "d" (edx), "0" (edi), "1" (ecx));
+       else
+           asm volatile ("cld; rep; insb"
+            : "=D" (edi), "=c" (ecx)
+            : "d" (edx), "0" (edi), "1" (ecx));
+       }
 
     edi -= (unsigned int)context.vm.regs.ds << 4;
     context.vm.regs.edi &= 0xffff0000;
@@ -1182,27 +1182,27 @@ static void em_outs(int size)
     esi = context.vm.regs.esi & 0xffff;
     esi += (unsigned int)context.vm.regs.ds << 4;
     if (context.vm.regs.eflags & DIRECTION_FLAG) {
-        if (size == 4)
-            asm volatile ("std; outsl; cld"
-             : "=S" (esi) : "d" (edx), "0" (esi));
-        else if (size == 2)
-            asm volatile ("std; outsw; cld"
-             : "=S" (esi) : "d" (edx), "0" (esi));
-        else
-            asm volatile ("std; outsb; cld"
-             : "=S" (esi) : "d" (edx), "0" (esi));
-        }
+       if (size == 4)
+           asm volatile ("std; outsl; cld"
+            : "=S" (esi) : "d" (edx), "0" (esi));
+       else if (size == 2)
+           asm volatile ("std; outsw; cld"
+            : "=S" (esi) : "d" (edx), "0" (esi));
+       else
+           asm volatile ("std; outsb; cld"
+            : "=S" (esi) : "d" (edx), "0" (esi));
+       }
     else {
-        if (size == 4)
-            asm volatile ("cld; outsl"
-             : "=S" (esi) : "d" (edx), "0" (esi));
-        else if (size == 2)
-            asm volatile ("cld; outsw"
-             : "=S" (esi) : "d" (edx), "0" (esi));
-        else
-            asm volatile ("cld; outsb"
-             : "=S" (esi) : "d" (edx), "0" (esi));
-        }
+       if (size == 4)
+           asm volatile ("cld; outsl"
+            : "=S" (esi) : "d" (edx), "0" (esi));
+       else if (size == 2)
+           asm volatile ("cld; outsw"
+            : "=S" (esi) : "d" (edx), "0" (esi));
+       else
+           asm volatile ("cld; outsb"
+            : "=S" (esi) : "d" (edx), "0" (esi));
+       }
 
     esi -= (unsigned int)context.vm.regs.ds << 4;
     context.vm.regs.esi &= 0xffff0000;
@@ -1218,33 +1218,33 @@ static void em_rep_outs(int size)
     esi = context.vm.regs.esi & 0xffff;
     esi += (unsigned int)context.vm.regs.ds << 4;
     if (context.vm.regs.eflags & DIRECTION_FLAG) {
-        if (size == 4)
-            asm volatile ("std; rep; outsl; cld"
-             : "=S" (esi), "=c" (ecx)
-             : "d" (edx), "0" (esi), "1" (ecx));
-        else if (size == 2)
-            asm volatile ("std; rep; outsw; cld"
-             : "=S" (esi), "=c" (ecx)
-             : "d" (edx), "0" (esi), "1" (ecx));
-        else
-            asm volatile ("std; rep; outsb; cld"
-             : "=S" (esi), "=c" (ecx)
-             : "d" (edx), "0" (esi), "1" (ecx));
-        }
+       if (size == 4)
+           asm volatile ("std; rep; outsl; cld"
+            : "=S" (esi), "=c" (ecx)
+            : "d" (edx), "0" (esi), "1" (ecx));
+       else if (size == 2)
+           asm volatile ("std; rep; outsw; cld"
+            : "=S" (esi), "=c" (ecx)
+            : "d" (edx), "0" (esi), "1" (ecx));
+       else
+           asm volatile ("std; rep; outsb; cld"
+            : "=S" (esi), "=c" (ecx)
+            : "d" (edx), "0" (esi), "1" (ecx));
+       }
     else {
-        if (size == 4)
-            asm volatile ("cld; rep; outsl"
-             : "=S" (esi), "=c" (ecx)
-             : "d" (edx), "0" (esi), "1" (ecx));
-        else if (size == 2)
-            asm volatile ("cld; rep; outsw"
-             : "=S" (esi), "=c" (ecx)
-             : "d" (edx), "0" (esi), "1" (ecx));
-        else
-            asm volatile ("cld; rep; outsb"
-             : "=S" (esi), "=c" (ecx)
-             : "d" (edx), "0" (esi), "1" (ecx));
-        }
+       if (size == 4)
+           asm volatile ("cld; rep; outsl"
+            : "=S" (esi), "=c" (ecx)
+            : "d" (edx), "0" (esi), "1" (ecx));
+       else if (size == 2)
+           asm volatile ("cld; rep; outsw"
+            : "=S" (esi), "=c" (ecx)
+            : "d" (edx), "0" (esi), "1" (ecx));
+       else
+           asm volatile ("cld; rep; outsb"
+            : "=S" (esi), "=c" (ecx)
+            : "d" (edx), "0" (esi), "1" (ecx));
+       }
 
     esi -= (unsigned int)context.vm.regs.ds << 4;
     context.vm.regs.esi &= 0xffff0000;
@@ -1257,9 +1257,9 @@ static int emulate(void)
 {
     unsigned char *insn;
     struct {
-        unsigned int size : 1;
-        unsigned int rep : 1;
-        } prefix = { 0, 0 };
+       unsigned int size : 1;
+       unsigned int rep : 1;
+       } prefix = { 0, 0 };
     int i = 0;
 
     insn = (unsigned char *)((unsigned int)context.vm.regs.cs << 4);
@@ -1267,101 +1267,101 @@ static int emulate(void)
 
     while (1) {
 #ifdef TRACE_IO
-        traceAddr = ((ulong)context.vm.regs.cs << 16) + context.vm.regs.eip + i;
+       traceAddr = ((ulong)context.vm.regs.cs << 16) + context.vm.regs.eip + i;
 #endif
-        if (insn[i] == 0x66) {
-            prefix.size = 1 - prefix.size;
-            i++;
-            }
-        else if (insn[i] == 0xf3) {
-            prefix.rep = 1;
-            i++;
-            }
-        else if (insn[i] == 0xf0 || insn[i] == 0xf2
-             || insn[i] == 0x26 || insn[i] == 0x2e
-             || insn[i] == 0x36 || insn[i] == 0x3e
-             || insn[i] == 0x64 || insn[i] == 0x65
-             || insn[i] == 0x67) {
-            /* these prefixes are just ignored */
-            i++;
-            }
-        else if (insn[i] == 0x6c) {
-            if (prefix.rep)
-                em_rep_ins(1);
-            else
-                em_ins(1);
-            i++;
-            break;
-            }
-        else if (insn[i] == 0x6d) {
-            if (prefix.rep) {
-                if (prefix.size)
-                    em_rep_ins(4);
-                else
-                    em_rep_ins(2);
-                }
-            else {
-                if (prefix.size)
-                    em_ins(4);
-                else
-                    em_ins(2);
-                }
-            i++;
-            break;
-            }
-        else if (insn[i] == 0x6e) {
-            if (prefix.rep)
-                em_rep_outs(1);
-            else
-                em_outs(1);
-            i++;
-            break;
-            }
-        else if (insn[i] == 0x6f) {
-            if (prefix.rep) {
-                if (prefix.size)
-                    em_rep_outs(4);
-                else
-                    em_rep_outs(2);
-                }
-            else {
-                if (prefix.size)
-                    em_outs(4);
-                else
-                    em_outs(2);
-                }
-            i++;
-            break;
-            }
-        else if (insn[i] == 0xec) {
-            *((uchar*)&context.vm.regs.eax) = port_in(context.vm.regs.edx);
-            i++;
-            break;
-            }
-        else if (insn[i] == 0xed) {
-            if (prefix.size)
-                *((ulong*)&context.vm.regs.eax) = port_inl(context.vm.regs.edx);
-            else
-                *((ushort*)&context.vm.regs.eax) = port_inw(context.vm.regs.edx);
-            i++;
-            break;
-            }
-        else if (insn[i] == 0xee) {
-            port_out(context.vm.regs.eax,context.vm.regs.edx);
-            i++;
-            break;
-            }
-        else if (insn[i] == 0xef) {
-            if (prefix.size)
-                port_outl(context.vm.regs.eax,context.vm.regs.edx);
-            else
-                port_outw(context.vm.regs.eax,context.vm.regs.edx);
-            i++;
-            break;
-            }
-        else
-            return 0;
-        }
+       if (insn[i] == 0x66) {
+           prefix.size = 1 - prefix.size;
+           i++;
+           }
+       else if (insn[i] == 0xf3) {
+           prefix.rep = 1;
+           i++;
+           }
+       else if (insn[i] == 0xf0 || insn[i] == 0xf2
+            || insn[i] == 0x26 || insn[i] == 0x2e
+            || insn[i] == 0x36 || insn[i] == 0x3e
+            || insn[i] == 0x64 || insn[i] == 0x65
+            || insn[i] == 0x67) {
+           /* these prefixes are just ignored */
+           i++;
+           }
+       else if (insn[i] == 0x6c) {
+           if (prefix.rep)
+               em_rep_ins(1);
+           else
+               em_ins(1);
+           i++;
+           break;
+           }
+       else if (insn[i] == 0x6d) {
+           if (prefix.rep) {
+               if (prefix.size)
+                   em_rep_ins(4);
+               else
+                   em_rep_ins(2);
+               }
+           else {
+               if (prefix.size)
+                   em_ins(4);
+               else
+                   em_ins(2);
+               }
+           i++;
+           break;
+           }
+       else if (insn[i] == 0x6e) {
+           if (prefix.rep)
+               em_rep_outs(1);
+           else
+               em_outs(1);
+           i++;
+           break;
+           }
+       else if (insn[i] == 0x6f) {
+           if (prefix.rep) {
+               if (prefix.size)
+                   em_rep_outs(4);
+               else
+                   em_rep_outs(2);
+               }
+           else {
+               if (prefix.size)
+                   em_outs(4);
+               else
+                   em_outs(2);
+               }
+           i++;
+           break;
+           }
+       else if (insn[i] == 0xec) {
+           *((uchar*)&context.vm.regs.eax) = port_in(context.vm.regs.edx);
+           i++;
+           break;
+           }
+       else if (insn[i] == 0xed) {
+           if (prefix.size)
+               *((ulong*)&context.vm.regs.eax) = port_inl(context.vm.regs.edx);
+           else
+               *((ushort*)&context.vm.regs.eax) = port_inw(context.vm.regs.edx);
+           i++;
+           break;
+           }
+       else if (insn[i] == 0xee) {
+           port_out(context.vm.regs.eax,context.vm.regs.edx);
+           i++;
+           break;
+           }
+       else if (insn[i] == 0xef) {
+           if (prefix.size)
+               port_outl(context.vm.regs.eax,context.vm.regs.edx);
+           else
+               port_outw(context.vm.regs.eax,context.vm.regs.edx);
+           i++;
+           break;
+           }
+       else
+           return 0;
+       }
 
     context.vm.regs.eip += i;
     return 1;
@@ -1393,7 +1393,7 @@ static void debug_info(int vret)
     fputs("cs:ip = [ ", stderr);
     p = (unsigned char *)((context.vm.regs.cs << 4) + (context.vm.regs.eip & 0xffff));
     for (i = 0; i < 16; ++i)
-            fprintf(stderr, "%02x ", (unsigned int)p[i]);
+           fprintf(stderr, "%02x ", (unsigned int)p[i]);
     fputs("]\n", stderr);
     fflush(stderr);
 }
@@ -1403,24 +1403,24 @@ static int run_vm86(void)
     unsigned int vret;
 
     for (;;) {
-        vret = vm86(&context.vm);
-        if (VM86_TYPE(vret) == VM86_INTx) {
-            unsigned int v = VM86_ARG(vret);
-            if (v == RETURN_TO_32_INT)
-                return 1;
-            pushw(context.vm.regs.eflags);
-            pushw(context.vm.regs.cs);
-            pushw(context.vm.regs.eip);
-            context.vm.regs.cs = get_int_seg(v);
-            context.vm.regs.eip = get_int_off(v);
-            context.vm.regs.eflags &= ~(VIF_MASK | TF_MASK);
-            continue;
-            }
-        if (VM86_TYPE(vret) != VM86_UNKNOWN)
-            break;
-        if (!emulate())
-            break;
-        }
+       vret = vm86(&context.vm);
+       if (VM86_TYPE(vret) == VM86_INTx) {
+           unsigned int v = VM86_ARG(vret);
+           if (v == RETURN_TO_32_INT)
+               return 1;
+           pushw(context.vm.regs.eflags);
+           pushw(context.vm.regs.cs);
+           pushw(context.vm.regs.eip);
+           context.vm.regs.cs = get_int_seg(v);
+           context.vm.regs.eip = get_int_off(v);
+           context.vm.regs.eflags &= ~(VIF_MASK | TF_MASK);
+           continue;
+           }
+       if (VM86_TYPE(vret) != VM86_UNKNOWN)
+           break;
+       if (!emulate())
+           break;
+       }
     debug_info(vret);
     return 0;
 }
@@ -1431,7 +1431,7 @@ static int run_vm86(void)
 void PMAPI DPMI_int86(int intno, DPMI_regs *regs)
 {
     if (!inited)
-        PM_init();
+       PM_init();
     memset(&context.vm.regs, 0, sizeof(context.vm.regs));
     IND(eax); IND(ebx); IND(ecx); IND(edx); IND(esi); IND(edi);
     context.vm.regs.eflags = DEFAULT_VM86_FLAGS;
@@ -1453,7 +1453,7 @@ void PMAPI DPMI_int86(int intno, DPMI_regs *regs)
 int PMAPI PM_int86(int intno, RMREGS *in, RMREGS *out)
 {
     if (!inited)
-        PM_init();
+       PM_init();
     memset(&context.vm.regs, 0, sizeof(context.vm.regs));
     IN(eax); IN(ebx); IN(ecx); IN(edx); IN(esi); IN(edi);
     context.vm.regs.eflags = DEFAULT_VM86_FLAGS;
@@ -1474,41 +1474,41 @@ int PMAPI PM_int86x(int intno, RMREGS *in, RMREGS *out,
     RMSREGS *sregs)
 {
     if (!inited)
-        PM_init();
+       PM_init();
     if (intno == 0x21) {
-        time_t today = time(NULL);
-        struct tm *t;
-        t = localtime(&today);
-        out->x.cx = t->tm_year + 1900;
-        out->h.dh = t->tm_mon + 1;
-        out->h.dl = t->tm_mday;
-        }
+       time_t today = time(NULL);
+       struct tm *t;
+       t = localtime(&today);
+       out->x.cx = t->tm_year + 1900;
+       out->h.dh = t->tm_mon + 1;
+       out->h.dl = t->tm_mday;
+       }
     else {
-        unsigned int seg, off;
-        seg = get_int_seg(intno);
-        off = get_int_off(intno);
-        memset(&context.vm.regs, 0, sizeof(context.vm.regs));
-        IN(eax); IN(ebx); IN(ecx); IN(edx); IN(esi); IN(edi);
-        context.vm.regs.eflags = DEFAULT_VM86_FLAGS;
-        context.vm.regs.cs = seg;
-        context.vm.regs.eip = off;
-        context.vm.regs.es = sregs->es;
-        context.vm.regs.ds = sregs->ds;
-        context.vm.regs.fs = sregs->fs;
-        context.vm.regs.gs = sregs->gs;
-        context.vm.regs.ss = context.stack_seg;
-        context.vm.regs.esp = context.stack_off;
-        pushw(DEFAULT_VM86_FLAGS);
-        pushw(context.ret_seg);
-        pushw(context.ret_off);
-        run_vm86();
-        OUT(eax); OUT(ebx); OUT(ecx); OUT(edx); OUT(esi); OUT(edi);
-        sregs->es = context.vm.regs.es;
-        sregs->ds = context.vm.regs.ds;
-        sregs->fs = context.vm.regs.fs;
-        sregs->gs = context.vm.regs.gs;
-        out->x.cflag = context.vm.regs.eflags & 1;
-        }
+       unsigned int seg, off;
+       seg = get_int_seg(intno);
+       off = get_int_off(intno);
+       memset(&context.vm.regs, 0, sizeof(context.vm.regs));
+       IN(eax); IN(ebx); IN(ecx); IN(edx); IN(esi); IN(edi);
+       context.vm.regs.eflags = DEFAULT_VM86_FLAGS;
+       context.vm.regs.cs = seg;
+       context.vm.regs.eip = off;
+       context.vm.regs.es = sregs->es;
+       context.vm.regs.ds = sregs->ds;
+       context.vm.regs.fs = sregs->fs;
+       context.vm.regs.gs = sregs->gs;
+       context.vm.regs.ss = context.stack_seg;
+       context.vm.regs.esp = context.stack_off;
+       pushw(DEFAULT_VM86_FLAGS);
+       pushw(context.ret_seg);
+       pushw(context.ret_off);
+       run_vm86();
+       OUT(eax); OUT(ebx); OUT(ecx); OUT(edx); OUT(esi); OUT(edi);
+       sregs->es = context.vm.regs.es;
+       sregs->ds = context.vm.regs.ds;
+       sregs->fs = context.vm.regs.fs;
+       sregs->gs = context.vm.regs.gs;
+       out->x.cflag = context.vm.regs.eflags & 1;
+       }
     return out->e.eax;
 }
 
@@ -1518,7 +1518,7 @@ void PMAPI PM_callRealMode(uint seg,uint off, RMREGS *in,
     RMSREGS *sregs)
 {
     if (!inited)
-        PM_init();
+       PM_init();
     memset(&context.vm.regs, 0, sizeof(context.vm.regs));
     IN(eax); IN(ebx); IN(ecx); IN(edx); IN(esi); IN(edi);
     context.vm.regs.eflags = DEFAULT_VM86_FLAGS;
@@ -1558,32 +1558,32 @@ void PMAPI PM_availableMemory(ulong *physical,ulong *total)
 
 void * PMAPI PM_allocLockedMem(uint size,ulong *physAddr,ibool contiguous,ibool below16M)
 {
-    // TODO: Implement this for Linux
+    /* TODO: Implement this for Linux */
     return NULL;
 }
 
 void PMAPI PM_freeLockedMem(void *p,uint size,ibool contiguous)
 {
-    // TODO: Implement this for Linux
+    /* TODO: Implement this for Linux */
 }
 
 void * PMAPI PM_allocPage(
     ibool locked)
 {
-    // TODO: Implement this for Linux
+    /* TODO: Implement this for Linux */
     return NULL;
 }
 
 void PMAPI PM_freePage(
     void *p)
 {
-    // TODO: Implement this for Linux
+    /* TODO: Implement this for Linux */
 }
 
 void PMAPI PM_setBankA(int bank)
 {
     if (!inited)
-        PM_init();
+       PM_init();
     memset(&context.vm.regs, 0, sizeof(context.vm.regs));
     context.vm.regs.eax = 0x4F05;
     context.vm.regs.ebx = 0x0000;
@@ -1602,7 +1602,7 @@ void PMAPI PM_setBankA(int bank)
 void PMAPI PM_setBankAB(int bank)
 {
     if (!inited)
-        PM_init();
+       PM_init();
     memset(&context.vm.regs, 0, sizeof(context.vm.regs));
     context.vm.regs.eax = 0x4F05;
     context.vm.regs.ebx = 0x0000;
@@ -1633,7 +1633,7 @@ void PMAPI PM_setBankAB(int bank)
 void PMAPI PM_setCRTStart(int x,int y,int waitVRT)
 {
     if (!inited)
-        PM_init();
+       PM_init();
     memset(&context.vm.regs, 0, sizeof(context.vm.regs));
     context.vm.regs.eax = 0x4F07;
     context.vm.regs.ebx = waitVRT;
@@ -1656,14 +1656,14 @@ int PMAPI PM_enableWriteCombine(ulong base,ulong length,uint type)
     struct mtrr_sentry sentry;
 
     if (mtrr_fd < 0)
-        return PM_MTRR_ERR_NO_OS_SUPPORT;
+       return PM_MTRR_ERR_NO_OS_SUPPORT;
     sentry.base = base;
     sentry.size = length;
     sentry.type = type;
     if (ioctl(mtrr_fd, MTRRIOC_ADD_ENTRY, &sentry) == -1) {
-        // TODO: Need to decode MTRR error codes!!
-        return PM_MTRR_NOT_SUPPORTED;
-        }
+       /* TODO: Need to decode MTRR error codes!! */
+       return PM_MTRR_NOT_SUPPORTED;
+       }
     return PM_MTRR_ERR_OK;
 #else
     return PM_MTRR_ERR_NO_OS_SUPPORT;
@@ -1685,15 +1685,15 @@ int PMAPI PM_enumWriteCombine(
     struct mtrr_gentry gentry;
 
     if (mtrr_fd < 0)
-        return PM_MTRR_ERR_NO_OS_SUPPORT;
+       return PM_MTRR_ERR_NO_OS_SUPPORT;
 
     for (gentry.regnum = 0; ioctl (mtrr_fd, MTRRIOC_GET_ENTRY, &gentry) == 0;
-         ++gentry.regnum) {
-        if (gentry.size > 0) {
-            // WARNING: This code assumes that the types in pmapi.h match the ones
-            // in the Linux kernel (mtrr.h)
-            callback(gentry.base, gentry.size, gentry.type);
-        }
+        ++gentry.regnum) {
+       if (gentry.size > 0) {
+           /* WARNING: This code assumes that the types in pmapi.h match the ones */
+           /* in the Linux kernel (mtrr.h) */
+           callback(gentry.base, gentry.size, gentry.type);
+       }
     }
 
     return PM_MTRR_ERR_OK;
@@ -1719,13 +1719,13 @@ ibool PMAPI PM_doBIOSPOST(
      * the secondary BIOS image over the top of the old one.
      */
     if (!inited)
-        PM_init();
+       PM_init();
     if ((old_bios = PM_malloc(BIOSLen)) == NULL)
-        return false;
+       return false;
     if (BIOSPhysAddr != 0xC0000) {
-        memcpy(old_bios,bios_ptr,BIOSLen);
-        memcpy(bios_ptr,copyOfBIOS,BIOSLen);
-        }
+       memcpy(old_bios,bios_ptr,BIOSLen);
+       memcpy(bios_ptr,copyOfBIOS,BIOSLen);
+       }
 
     /* The interrupt vectors should already be mmap()'ed from 0-0x400 in PM_init */
     Current10 = rvec[0x10];
@@ -1742,7 +1742,7 @@ ibool PMAPI PM_doBIOSPOST(
 
     /* Restore original BIOS image */
     if (BIOSPhysAddr != 0xC0000)
-        memcpy(bios_ptr,old_bios,BIOSLen);
+       memcpy(bios_ptr,old_bios,BIOSLen);
     PM_free(old_bios);
     return true;
 }
@@ -1774,7 +1774,7 @@ int PMAPI PM_unlockCodePages(void (*p)(),uint len,PM_lockHandle *lh)
 PM_MODULE PMAPI PM_loadLibrary(
     const char *szDLLName)
 {
-    // TODO: Implement this to load shared libraries!
+    /* TODO: Implement this to load shared libraries! */
     (void)szDLLName;
     return NULL;
 }
@@ -1783,7 +1783,7 @@ void * PMAPI PM_getProcAddress(
     PM_MODULE hModule,
     const char *szProcName)
 {
-    // TODO: Implement this!
+    /* TODO: Implement this! */
     (void)hModule;
     (void)szProcName;
     return NULL;
@@ -1792,19 +1792,18 @@ void * PMAPI PM_getProcAddress(
 void PMAPI PM_freeLibrary(
     PM_MODULE hModule)
 {
-    // TODO: Implement this!
+    /* TODO: Implement this! */
     (void)hModule;
 }
 
 int PMAPI PM_setIOPL(
     int level)
 {
-    // TODO: Move the IOPL switching into this function!!
+    /* TODO: Move the IOPL switching into this function!! */
     return level;
 }
 
 void PMAPI PM_flushTLB(void)
 {
-    // Do nothing on Linux.
+    /* Do nothing on Linux. */
 }
-