Index: kernel/generic/include/mm/slab.h
===================================================================
--- kernel/generic/include/mm/slab.h	(revision 1295a1da3e76dbd378b542634f4fd849fc544070)
+++ kernel/generic/include/mm/slab.h	(revision 25ebfbd4eb608d82bc8db3a27ab0f3eea9a10a33)
@@ -81,5 +81,5 @@
 	slab_magazine_t *current;
 	slab_magazine_t *last;
-	SPINLOCK_DECLARE(lock);
+	IRQ_SPINLOCK_DECLARE(lock);
 } slab_mag_cache_t;
 
Index: kernel/generic/src/mm/slab.c
===================================================================
--- kernel/generic/src/mm/slab.c	(revision 1295a1da3e76dbd378b542634f4fd849fc544070)
+++ kernel/generic/src/mm/slab.c	(revision 25ebfbd4eb608d82bc8db3a27ab0f3eea9a10a33)
@@ -366,6 +366,6 @@
 		atomic_dec(&cache->magazine_counter);
 	}
-	
 	spinlock_unlock(&cache->maglock);
+
 	return mag;
 }
@@ -414,5 +414,5 @@
 	slab_magazine_t *lastmag = cache->mag_cache[CPU->id].last;
 	
-	ASSERT(spinlock_locked(&cache->mag_cache[CPU->id].lock));
+	ASSERT(irq_spinlock_locked(&cache->mag_cache[CPU->id].lock));
 	
 	if (cmag) { /* First try local CPU magazines */
@@ -451,14 +451,14 @@
 		return NULL;
 	
-	spinlock_lock(&cache->mag_cache[CPU->id].lock);
+	irq_spinlock_lock(&cache->mag_cache[CPU->id].lock, true);
 	
 	slab_magazine_t *mag = get_full_current_mag(cache);
 	if (!mag) {
-		spinlock_unlock(&cache->mag_cache[CPU->id].lock);
+		irq_spinlock_unlock(&cache->mag_cache[CPU->id].lock, true);
 		return NULL;
 	}
 	
 	void *obj = mag->objs[--mag->busy];
-	spinlock_unlock(&cache->mag_cache[CPU->id].lock);
+	irq_spinlock_unlock(&cache->mag_cache[CPU->id].lock, true);
 	
 	atomic_dec(&cache->cached_objs);
@@ -481,5 +481,5 @@
 	slab_magazine_t *lastmag = cache->mag_cache[CPU->id].last;
 	
-	ASSERT(spinlock_locked(&cache->mag_cache[CPU->id].lock));
+	ASSERT(irq_spinlock_locked(&cache->mag_cache[CPU->id].lock));
 	
 	if (cmag) {
@@ -531,9 +531,9 @@
 		return -1;
 	
-	spinlock_lock(&cache->mag_cache[CPU->id].lock);
+	irq_spinlock_lock(&cache->mag_cache[CPU->id].lock, true);
 	
 	slab_magazine_t *mag = make_empty_current_mag(cache);
 	if (!mag) {
-		spinlock_unlock(&cache->mag_cache[CPU->id].lock);
+		irq_spinlock_unlock(&cache->mag_cache[CPU->id].lock, true);
 		return -1;
 	}
@@ -541,5 +541,5 @@
 	mag->objs[mag->busy++] = obj;
 	
-	spinlock_unlock(&cache->mag_cache[CPU->id].lock);
+	irq_spinlock_unlock(&cache->mag_cache[CPU->id].lock, true);
 	
 	atomic_inc(&cache->cached_objs);
@@ -593,5 +593,5 @@
 	for (i = 0; i < config.cpu_count; i++) {
 		memsetb(&cache->mag_cache[i], sizeof(cache->mag_cache[i]), 0);
-		spinlock_initialize(&cache->mag_cache[i].lock,
+		irq_spinlock_initialize(&cache->mag_cache[i].lock,
 		    "slab.cache.mag_cache[].lock");
 	}
@@ -704,5 +704,5 @@
 		size_t i;
 		for (i = 0; i < config.cpu_count; i++) {
-			spinlock_lock(&cache->mag_cache[i].lock);
+			irq_spinlock_lock(&cache->mag_cache[i].lock, true);
 			
 			mag = cache->mag_cache[i].current;
@@ -716,5 +716,5 @@
 			cache->mag_cache[i].last = NULL;
 			
-			spinlock_unlock(&cache->mag_cache[i].lock);
+			irq_spinlock_unlock(&cache->mag_cache[i].lock, true);
 		}
 	}
