diff --git a/darwin-user/mmap.c b/darwin-user/mmap.c
index ada613d..b4055ab 100644
--- a/darwin-user/mmap.c
+++ b/darwin-user/mmap.c
@@ -199,7 +199,7 @@
 
     if (!(flags & MAP_FIXED)) {
 #if defined(__alpha__) || defined(__sparc__) || defined(__x86_64__)
-        /* tell the kenel to search at the same place as i386 */
+        /* tell the kernel to search at the same place as i386 */
         if (host_start == 0) {
             host_start = last_start;
             last_start += HOST_PAGE_ALIGN(len);
diff --git a/disas.c b/disas.c
index fd14f68..2642c77 100644
--- a/disas.c
+++ b/disas.c
@@ -134,7 +134,7 @@
 }
 #endif
 
-/* Disassemble this for me please... (debugging). 'flags' has teh following
+/* Disassemble this for me please... (debugging). 'flags' has the following
    values:
     i386 - nonzero means 16 bit code
     arm  - nonzero means thumb code 
diff --git a/exec.c b/exec.c
index 61d8f61..0e415a5 100644
--- a/exec.c
+++ b/exec.c
@@ -1220,7 +1220,7 @@
     { CPU_LOG_EXEC, "exec",
       "show trace before each executed TB (lots of logs)" },
     { CPU_LOG_TB_CPU, "cpu",
-      "show CPU state before bloc translation" },
+      "show CPU state before block translation" },
 #ifdef TARGET_I386
     { CPU_LOG_PCALL, "pcall",
       "show protected mode far calls/returns/exceptions" },
diff --git a/hw/cirrus_vga.c b/hw/cirrus_vga.c
index 2cbafe1..e5b0cfb 100644
--- a/hw/cirrus_vga.c
+++ b/hw/cirrus_vga.c
@@ -2784,7 +2784,7 @@
 	case 0x09:
 	case 0x0c:
 	case 0x0d:
-	case 0x12:		/* veritcal display end */
+	case 0x12:		/* vertical display end */
 	    s->cr[s->cr_index] = val;
 	    break;
 
diff --git a/hw/cuda.c b/hw/cuda.c
index c290450..dc143e2 100644
--- a/hw/cuda.c
+++ b/hw/cuda.c
@@ -445,9 +445,9 @@
             cuda_update_irq(s);
         } else {
             if (!(s->last_b & TIP)) {
-                /* handle end of host to cuda transfert */
+                /* handle end of host to cuda transfer */
                 packet_received = (s->data_out_index > 0);
-                /* always an IRQ at the end of transfert */
+                /* always an IRQ at the end of transfer */
                 s->ifr |= SR_INT;
                 cuda_update_irq(s);
             }
diff --git a/hw/ne2000.c b/hw/ne2000.c
index 1830ab5..1625c55 100644
--- a/hw/ne2000.c
+++ b/hw/ne2000.c
@@ -325,7 +325,7 @@
         s->cmd = val;
         if (!(val & E8390_STOP)) { /* START bit makes no sense on RTL8029... */
             s->isr &= ~ENISR_RESET;
-            /* test specific case: zero length transfert */
+            /* test specific case: zero length transfer */
             if ((val & (E8390_RREAD | E8390_RWRITE)) &&
                 s->rcnt == 0) {
                 s->isr |= ENISR_RDC;
@@ -340,7 +340,7 @@
                 if (index + s->tcnt <= NE2000_PMEM_END) {
                     qemu_send_packet(s->vc, s->mem + index, s->tcnt);
                 }
-                /* signal end of transfert */
+                /* signal end of transfer */
                 s->tsr = ENTSR_PTX;
                 s->isr |= ENISR_TX;
                 s->cmd &= ~E8390_TRANS; 
@@ -550,7 +550,7 @@
 
     if (s->rcnt <= len) {
         s->rcnt = 0;
-        /* signal end of transfert */
+        /* signal end of transfer */
         s->isr |= ENISR_RDC;
         ne2000_update_irq(s);
     } else {
diff --git a/hw/scsi-disk.c b/hw/scsi-disk.c
index 92f7457..384c098 100644
--- a/hw/scsi-disk.c
+++ b/hw/scsi-disk.c
@@ -489,7 +489,7 @@
         is_write = 1;
         break;
     case 0x35:
-        DPRINTF("Syncronise cache (sector %d, count %d)\n", lba, len);
+        DPRINTF("Synchronise cache (sector %d, count %d)\n", lba, len);
         bdrv_flush(s->bdrv);
         break;
     case 0x43:
diff --git a/hw/vga.c b/hw/vga.c
index 9dbbfe2..8661d00 100644
--- a/hw/vga.c
+++ b/hw/vga.c
@@ -346,7 +346,7 @@
         case 0x09:
         case 0x0c:
         case 0x0d:
-        case 0x12: /* veritcal display end */
+        case 0x12: /* vertical display end */
             s->cr[s->cr_index] = val;
             break;
         default:
diff --git a/linux-user/elfload.c b/linux-user/elfload.c
index c130692..c0845fe 100644
--- a/linux-user/elfload.c
+++ b/linux-user/elfload.c
@@ -799,7 +799,7 @@
 #endif
 
         if (interp_elf_ex->e_type == ET_DYN) {
-            /* in order to avoid harcoding the interpreter load
+            /* in order to avoid hardcoding the interpreter load
                address in qemu, we allocate a big enough memory zone */
             error = target_mmap(0, INTERP_MAP_SIZE,
                                 PROT_NONE, MAP_PRIVATE | MAP_ANON, 
@@ -1191,7 +1191,7 @@
                base, as well as whatever program they might try to exec.  This
                is because the brk will follow the loader, and is not movable.  */
             /* NOTE: for qemu, we do a big mmap to get enough space
-               without harcoding any address */
+               without hardcoding any address */
             error = target_mmap(0, ET_DYN_MAP_SIZE,
                                 PROT_NONE, MAP_PRIVATE | MAP_ANON, 
                                 -1, 0);
diff --git a/sdl.c b/sdl.c
index 6c30db1..dc11937 100644
--- a/sdl.c
+++ b/sdl.c
@@ -407,7 +407,8 @@
                         case SDLK_END: keysym = QEMU_KEY_END; break;
                         case SDLK_PAGEUP: keysym = QEMU_KEY_PAGEUP; break;
                         case SDLK_PAGEDOWN: keysym = QEMU_KEY_PAGEDOWN; break;
-                        case SDLK_BACKSPACE: keysym = QEMU_KEY_BACKSPACE; break;                        case SDLK_DELETE: keysym = QEMU_KEY_DELETE; break;
+                        case SDLK_BACKSPACE: keysym = QEMU_KEY_BACKSPACE; break;
+                        case SDLK_DELETE: keysym = QEMU_KEY_DELETE; break;
                         default: break;
                         }
                     }
diff --git a/target-i386/translate.c b/target-i386/translate.c
index e36e03d..96e72c9 100644
--- a/target-i386/translate.c
+++ b/target-i386/translate.c
@@ -6431,7 +6431,7 @@
 
     opc_ptr = opc_buf + opc_buf_len;
     /* live_flags contains the flags needed by the next instructions
-       in the code. At the end of the bloc, we consider that all the
+       in the code. At the end of the block, we consider that all the
        flags are live. */
     live_flags = CC_OSZAPC;
     while (opc_ptr > opc_buf) {
