diff --git a/bin/jmk2 b/bin/jmk2
index 186344c..92b703a 100755
--- a/bin/jmk2
+++ b/bin/jmk2
@@ -38,6 +38,7 @@
 set root {$root}
 set jmk_build_cmd {$0 $*}
 set jmk_build_dir {$(pwd)}
+set jmk_makefile_dir {$PWD/$outdir}
 cd {$outdir}
 array set options {$options}
 source {$root/share/jmk/multiplat.jmk}
diff --git a/include/kernel/sync.h b/include/kernel/sync.h
index 3fbe209..6dfdae4 100644
--- a/include/kernel/sync.h
+++ b/include/kernel/sync.h
@@ -5,14 +5,14 @@
 // Synchronization primitives
 
 /// Spinlock
-typedef volatile int spinlock_t;
+typedef int spinlock_t;
 
 void sl_acquire(spinlock_t *sl);
 void sl_release(spinlock_t *sl);
 spinlock_t sl_new();
 
 /// Semaphore
-typedef volatile int semaphore_t;
+typedef int semaphore_t;
 
 void sm_wait(semaphore_t sm);
 void sm_signal(semaphore_t sm);
diff --git a/share/jmk/jmk.m4 b/share/jmk/jmk.m4
index aa3ad79..ee4fef7 100644
--- a/share/jmk/jmk.m4
+++ b/share/jmk/jmk.m4
@@ -45,7 +45,7 @@
         $1, `debug', `CFLAGS += -g
 ASMFLAGS += -Fdwarf',
         $1, `32', `CFLAGS += -m32',
-        $1, `warn', `CFLAGS += -Wall -Wextra -Wno-unused-function -Wno-unused-variable -Wno-incompatible-pointer-types',
+        $1, `warn', `CFLAGS += -Wall -Wextra -Wno-unused-function -Wno-unused-variable -Wno-incompatible-pointer-types -Wno-unused-parameter',
         $1, `nasm', `ASM = nasm',
 		$1, `glossaries', `LATEX_MAKE_GLOSSARIES = 1',
 		$1, xelatex, `LATEXC = xelatex')')
diff --git a/share/jmk/jmk.tcl b/share/jmk/jmk.tcl
index 13f3fca..2c949f4 100644
--- a/share/jmk/jmk.tcl
+++ b/share/jmk/jmk.tcl
@@ -145,6 +145,8 @@
 		variable obj [regsub -- {(.+)\.\w+} $src {\1.o}]
 		set ::objs "$::objs $obj"
 
+		set relpath [exec sh -c "realpath --relative-to '$::jmk_makefile_dir' '$src'"]
+
 		if {[string match *.c $src]} {
 			variable cc $::cc
 			if {[string match *distcc* $cc]} {
@@ -157,9 +159,14 @@
 				rule $obj $src {}
 			}
 
-			log CC $src
+			log CC $relpath
 			cc "-c $::first_src -o $::target"
 			puts ""
+		} elseif {[string match *.s $src]} {
+			log ASM $relpath
+			rule $obj $src {
+				asm "$::asmflags $::first_src -o $::target"
+			}
 		}
 	}
 }
@@ -214,11 +221,6 @@
 	# 	cc "-c $::first_src -o $::target"
 	# }
 
-	rule .s.o {} {
-		log ASM $::first_src
-		asm "$::asmflags $::first_src -o $::target"
-	}
-
 	rule clean {} {
 		shell "rm -f **/*.o **/*.a *.so $::jmk_target $::objs"
 
@@ -243,7 +245,7 @@
 	}
 
 	proc warn {} {
-		cflags -Wall -Wno-unused-function -Wno-unused-variable -Wno-incompatible-pointer-types -Wno-sign-compare
+		cflags -Wall
 	}
 
 	proc 32 {} {
diff --git a/src/kernel/Jmk2 b/src/kernel/Jmk2
index 57a657a..39d795f 100644
--- a/src/kernel/Jmk2
+++ b/src/kernel/Jmk2
@@ -4,7 +4,7 @@
 
 presets freestanding debug warn
 
-cflags -I$root/include/kernel -I$root/include -I[pwd] -O0 -Wno-ignored-qualifiers -Wno-unused-params -Wno-sign-compare
+cflags -I$root/include/kernel -I$root/include -I[pwd] -O0 -Wno-ignored-qualifiers -Wno-unused-params
 
 # Sources are mostly platform dependent (for now ;D )
 enable_multiplat
diff --git a/src/kernel/dri/fs/ext2/ext2.c b/src/kernel/dri/fs/ext2/ext2.c
index 99d5e9d..b526e8f 100644
--- a/src/kernel/dri/fs/ext2/ext2.c
+++ b/src/kernel/dri/fs/ext2/ext2.c
@@ -417,7 +417,7 @@
 	const uint block_size = ext2_block_size(sb);
 	char transfer[block_size];
 
-	uint fsize = MIN(inode->size, size);
+	uint fsize = MIN(inode->size, (uint)size);
 	uint i;
 
 	// Transfer full blocks straight to the output buffer
@@ -478,8 +478,8 @@
 	return true;
 }
 
-static const uint ext2_bitmap_block(struct ext2_superblock *sb,
-									uint *bitmap_block, uint *index)
+static uint ext2_bitmap_block(struct ext2_superblock *sb,
+							  uint *bitmap_block, uint *index)
 {
 	const uint block_size = ext2_block_size(sb);
 
@@ -539,7 +539,7 @@
 		ext2_read_block(sb, buffer, block);
 
 		// If this is the first block start at start_at, otherwise 0
-		for (int i = 0; i < block_size / 4; i++)
+		for (uint i = 0; i < block_size / 4; i++)
 		{
 			// The bitwise negative will be non-zero if there are zero bits in
 			// the original.
@@ -577,7 +577,7 @@
 
 	kprintf(INFO "%d block groups\n", num_block_groups);
 
-	for (int bg_num = 0; bg_num < num_block_groups; bg_num++)
+	for (uint bg_num = 0; bg_num < num_block_groups; bg_num++)
 	{
 		struct ext2_block_group_descriptor bgd =
 			ext2_load_bgd(sb, 0);
@@ -607,7 +607,7 @@
 {
 	uint num_block_groups = ext2_num_block_groups(sb);
 
-	for (int bg_num = 0; bg_num < num_block_groups; bg_num++)
+	for (uint bg_num = 0; bg_num < num_block_groups; bg_num++)
 	{
 		struct ext2_block_group_descriptor bgd =
 			ext2_load_bgd(sb, 0);
diff --git a/src/kernel/dri/pci/pci.c b/src/kernel/dri/pci/pci.c
index bb0b36c..df958b1 100644
--- a/src/kernel/dri/pci/pci.c
+++ b/src/kernel/dri/pci/pci.c
@@ -119,7 +119,7 @@
 
 				// Do any drivers support this?
 
-				for (int i = 0; i < num_drivers; i++)
+				for (uint i = 0; i < num_drivers; i++)
 				{
 					if (drivers[i].supports(&dev))
 					{
@@ -136,9 +136,9 @@
 void pci_print_drivers()
 {
 	kprintf(INFO "Enumerating PCI device drivers:\n");
-	for (int i = 0; i < num_drivers; i++)
+	for (uint i = 0; i < num_drivers; i++)
 	{
-		for (int j = 0; j < drivers[i].loaded; j++)
+		for (uint j = 0; j < drivers[i].loaded; j++)
 		{
 			struct pci_device_driver d = drivers[i];
 			kprintf(INFO "Driver: %s, vendor: %s\n", d.generic_name, d.dev.vendor->name);
diff --git a/src/kernel/x86_32/descriptor_tables.c b/src/kernel/x86_32/descriptor_tables.c
index 339162e..56ea13f 100644
--- a/src/kernel/x86_32/descriptor_tables.c
+++ b/src/kernel/x86_32/descriptor_tables.c
@@ -47,6 +47,7 @@
 	e->access = access;
 }
 
+/*
 static void init_tss(uint num, uint ss, uint esp)
 {
 	gdt_set_gate(num, (uint)&tss_entry, (uint)&tss_entry+1, 0xe9, 0x00);
@@ -60,6 +61,7 @@
 	// can switch to kernel mode using this tss
 	tss_entry.ss = tss_entry.ds = tss_entry.es = tss_entry.fs = tss_entry.gs = 0x13;
 }
+*/
 
 void init_gdt()
 {
diff --git a/src/kernel/x86_32/main.c b/src/kernel/x86_32/main.c
index 4d3d868..e1963e8 100644
--- a/src/kernel/x86_32/main.c
+++ b/src/kernel/x86_32/main.c
@@ -75,7 +75,7 @@
 
 #ifdef TEST_THREADS
 	kprintf(DEBUG "Spawning test thread\n");
-	spawn_thread(other_thread, NULL);
+	spawn_thread((task_function_t)other_thread, NULL);
 
 	greet();
 #endif
diff --git a/src/kernel/x86_32/paging.c b/src/kernel/x86_32/paging.c
index c77f499..ff6226b 100644
--- a/src/kernel/x86_32/paging.c
+++ b/src/kernel/x86_32/paging.c
@@ -17,7 +17,6 @@
 /* frames bitset, 0 = free, 1 = used */
 static uint frames[NUM_FRAMES];
 
-static uint first_page_table[1024] __attribute__((aligned(4096)));
 uint kernel_page_directory[1024] __attribute__((aligned(4096)));
 
 
@@ -31,12 +30,6 @@
 	frames[frame / BITS] |= 1 << (frame % BITS);
 }
 
-static bool test_frame(size_t frame_addr)
-{
-	uint frame = frame_addr / 0x1000; // page aligned
-	return frames[frame / BITS] & 1 << (frame % BITS);
-}
-
 static void clear_frame(size_t frame_addr)
 {
 	uint frame = frame_addr / 0x1000; // page aligned
@@ -90,7 +83,6 @@
 void map_4mb(uint *dir, size_t virt_start, size_t phys_start, bool user,
 			 bool rw)
 {
-	uint page = virt_start / 0x1000;
 	uint table = virt_start >> 22;
 
 	for (uint i = 0; i < 1024 * 0x1000; i += 0x1000)
@@ -238,6 +230,7 @@
 	load_page_directory(VIRT_TO_PHYS(kernel_page_directory));
 }
 
+#ifdef TEST_PAGING
 void test_paging()
 {
 	// a random page base address
@@ -252,3 +245,4 @@
 		base[i] = i;
 	}
 }
+#endif
diff --git a/src/kernel/x86_32/timer.c b/src/kernel/x86_32/timer.c
index 0e52d0e..59af51d 100644
--- a/src/kernel/x86_32/timer.c
+++ b/src/kernel/x86_32/timer.c
@@ -5,8 +5,6 @@
 #include "registers.h"
 #include "task.h"
 
-static ulong tick = 0;
-
 static void timer_cb(struct registers *regs)
 {
 	if (tasks_initialized)
