diff --git a/aes.c b/aes.c
index bb1e104..3700894 100644
--- a/aes.c
+++ b/aes.c
@@ -30,7 +30,10 @@
 #include "qemu-common.h"
 #include "aes.h"
 
+#ifndef NDEBUG
 #define NDEBUG
+#endif
+
 #include <assert.h>
 
 typedef uint32_t u32;
diff --git a/hw/adlib.c b/hw/adlib.c
index 1376db9..7a9c2e7 100644
--- a/hw/adlib.c
+++ b/hw/adlib.c
@@ -26,6 +26,7 @@
 #include "hw.h"
 #include "audiodev.h"
 #include "audio/audio.h"
+#include "isa.h"
 
 //#define DEBUG
 
diff --git a/hw/ide.c b/hw/ide.c
index bc82bb2..3715b9c 100644
--- a/hw/ide.c
+++ b/hw/ide.c
@@ -430,8 +430,7 @@
             v = *src++;
         else
             v = ' ';
-        *(char *)((long)str ^ 1) = v;
-        str++;
+        str[i^1] = v;
     }
 }
 
diff --git a/hw/pcnet.c b/hw/pcnet.c
index 3466082..40070ee 100644
--- a/hw/pcnet.c
+++ b/hw/pcnet.c
@@ -350,8 +350,8 @@
     } else {
         s->phys_mem_read(s->dma_opaque, addr, (void *)tmd, sizeof(*tmd), 0);
         le32_to_cpus(&tmd->tbadr);
-        le16_to_cpus(&tmd->length);
-        le16_to_cpus(&tmd->status);
+        le16_to_cpus((uint16_t *)&tmd->length);
+        le16_to_cpus((uint16_t *)&tmd->status);
         le32_to_cpus(&tmd->misc);
         le32_to_cpus(&tmd->res);
         if (BCR_SWSTYLE(s) == 3) {
@@ -416,8 +416,8 @@
     } else {
         s->phys_mem_read(s->dma_opaque, addr, (void *)rmd, sizeof(*rmd), 0);
         le32_to_cpus(&rmd->rbadr);
-        le16_to_cpus(&rmd->buf_length);
-        le16_to_cpus(&rmd->status);
+        le16_to_cpus((uint16_t *)&rmd->buf_length);
+        le16_to_cpus((uint16_t *)&rmd->status);
         le32_to_cpus(&rmd->msg_length);
         le32_to_cpus(&rmd->res);
         if (BCR_SWSTYLE(s) == 3) {
diff --git a/monitor.c b/monitor.c
index 97ac583..0783eaf 100644
--- a/monitor.c
+++ b/monitor.c
@@ -1824,7 +1824,7 @@
     case '$':
         {
             char buf[128], *q;
-            target_long reg;
+            target_long reg=0;
 
             pch++;
             q = buf;
diff --git a/vl.c b/vl.c
index 70950f8..3c1a476 100644
--- a/vl.c
+++ b/vl.c
@@ -4423,7 +4423,8 @@
 {
     int so_type=-1, optlen=sizeof(so_type);
 
-    if(getsockopt(fd, SOL_SOCKET, SO_TYPE, (char *)&so_type, &optlen)< 0) {
+    if(getsockopt(fd, SOL_SOCKET, SO_TYPE, (char *)&so_type,
+        (socklen_t *)&optlen)< 0) {
 	fprintf(stderr, "qemu: error: getsockopt(SO_TYPE) for fd=%d failed\n", fd);
 	return NULL;
     }
