Index: HelenOS.config
===================================================================
--- HelenOS.config	(revision 85156d302a086103852bf03ded648aeb26304afa)
+++ HelenOS.config	(revision 7f34182064fa93a69263014cb1b9789bf87da965)
@@ -282,5 +282,5 @@
 
 % Support for SMP
-! [(PLATFORM=ia32&MACHINE!=athlon-xp)|PLATFORM=amd64|PLATFORM=sparc64|PLATFORM=ia64] CONFIG_SMP (y/n)
+! [(PLATFORM=ia32&MACHINE!=athlon-xp)|PLATFORM=amd64|PLATFORM=sparc64|PLATFORM=ia64|(PLATFORM=mips32&MACHINE=msim)] CONFIG_SMP (y/n)
 
 % Improved support for hyperthreading
Index: kernel/arch/mips32/Makefile.inc
===================================================================
--- kernel/arch/mips32/Makefile.inc	(revision 85156d302a086103852bf03ded648aeb26304afa)
+++ kernel/arch/mips32/Makefile.inc	(revision 7f34182064fa93a69263014cb1b9789bf87da965)
@@ -34,9 +34,7 @@
 TOOLCHAIN_DIR = $(CROSS_PREFIX)/mipsel
 
-KERNEL_LOAD_ADDRESS = 0x80100000
-
 GCC_CFLAGS += -mno-abicalls -G 0 -fno-zero-initialized-in-bss
 
-DEFS += -D__32_BITS__ -DKERNEL_LOAD_ADDRESS=$(KERNEL_LOAD_ADDRESS)
+DEFS += -D__32_BITS__
 
 ## Accepted MACHINEs
@@ -75,5 +73,4 @@
 	arch/$(KARCH)/src/panic.S \
 	arch/$(KARCH)/src/mips32.c \
-	arch/$(KARCH)/src/dummy.S \
 	arch/$(KARCH)/src/console.c \
 	arch/$(KARCH)/src/asm.S \
@@ -91,3 +88,4 @@
 	arch/$(KARCH)/src/drivers/msim.c \
 	arch/$(KARCH)/src/drivers/serial.c \
-	arch/$(KARCH)/src/smp/order.c
+	arch/$(KARCH)/src/smp/dorder.c \
+	arch/$(KARCH)/src/smp/smp.c
Index: kernel/arch/mips32/_link.ld.in
===================================================================
--- kernel/arch/mips32/_link.ld.in	(revision 85156d302a086103852bf03ded648aeb26304afa)
+++ kernel/arch/mips32/_link.ld.in	(revision 7f34182064fa93a69263014cb1b9789bf87da965)
@@ -9,4 +9,6 @@
 #undef mips
 #define mips mips
+
+#define KERNEL_LOAD_ADDRESS 0x80100000
 
 OUTPUT_ARCH(mips)
Index: kernel/arch/mips32/include/asm.h
===================================================================
--- kernel/arch/mips32/include/asm.h	(revision 85156d302a086103852bf03ded648aeb26304afa)
+++ kernel/arch/mips32/include/asm.h	(revision 7f34182064fa93a69263014cb1b9789bf87da965)
@@ -56,5 +56,9 @@
 	uintptr_t v;
 	
-	asm volatile ("and %0, $29, %1\n" : "=r" (v) : "r" (~(STACK_SIZE-1)));
+	asm volatile (
+		"and %0, $29, %1\n"
+		: "=r" (v)
+		: "r" (~(STACK_SIZE-1))
+	);
 	
 	return v;
@@ -64,5 +68,5 @@
 extern void asm_delay_loop(uint32_t t);
 extern void userspace_asm(uintptr_t ustack, uintptr_t uspace_uarg,
-			  uintptr_t entry);
+    uintptr_t entry);
 
 extern ipl_t interrupts_disable(void);
@@ -70,4 +74,5 @@
 extern void interrupts_restore(ipl_t ipl);
 extern ipl_t interrupts_read(void);
+extern void asm_delay_loop(uint32_t t);
 
 static inline void pio_write_8(ioport_t port, uint8_t v)
Index: kernel/arch/mips32/include/atomic.h
===================================================================
--- kernel/arch/mips32/include/atomic.h	(revision 85156d302a086103852bf03ded648aeb26304afa)
+++ kernel/arch/mips32/include/atomic.h	(revision 7f34182064fa93a69263014cb1b9789bf87da965)
@@ -36,12 +36,12 @@
 #define KERN_mips32_ATOMIC_H_
 
-#define atomic_inc(x)	((void) atomic_add(x, 1))
-#define atomic_dec(x)	((void) atomic_add(x, -1))
+#define atomic_inc(x)  ((void) atomic_add(x, 1))
+#define atomic_dec(x)  ((void) atomic_add(x, -1))
 
-#define atomic_postinc(x) (atomic_add(x, 1) - 1)
-#define atomic_postdec(x) (atomic_add(x, -1) + 1)
+#define atomic_postinc(x)  (atomic_add(x, 1) - 1)
+#define atomic_postdec(x)  (atomic_add(x, -1) + 1)
 
-#define atomic_preinc(x) atomic_add(x, 1)
-#define atomic_predec(x) atomic_add(x, -1)
+#define atomic_preinc(x)  atomic_add(x, 1)
+#define atomic_predec(x)  atomic_add(x, -1)
 
 /* Atomic addition of immediate value.
@@ -55,17 +55,35 @@
 {
 	long tmp, v;
-
+	
 	asm volatile (
 		"1:\n"
 		"	ll %0, %1\n"
-		"	addu %0, %0, %3\n"	/* same as addi, but never traps on overflow */
-		"       move %2, %0\n"
+		"	addu %0, %0, %3\n"  /* same as addi, but never traps on overflow */
+		"	move %2, %0\n"
 		"	sc %0, %1\n"
-		"	beq %0, %4, 1b\n"	/* if the atomic operation failed, try again */
+		"	beq %0, %4, 1b\n"   /* if the atomic operation failed, try again */
 		"	nop\n"
 		: "=&r" (tmp), "+m" (val->count), "=&r" (v)
 		: "r" (i), "i" (0)
-		);
+	);
+	
+	return v;
+}
 
+static inline uint32_t test_and_set(atomic_t *val) {
+	uint32_t tmp, v;
+	
+	asm volatile (
+		"1:\n"
+		"	ll %2, %1\n"
+		"	bnez %2, 2f\n"
+		"	li %0, %3\n"
+		"	sc %0, %1\n"
+		"	beqz %0, 1b\n"
+		"2:\n"
+		: "=&r" (tmp), "+m" (val->count), "=&r" (v)
+		: "i" (1)
+	);
+	
 	return v;
 }
Index: kernel/arch/mips32/include/cpu.h
===================================================================
--- kernel/arch/mips32/include/cpu.h	(revision 85156d302a086103852bf03ded648aeb26304afa)
+++ kernel/arch/mips32/include/cpu.h	(revision 7f34182064fa93a69263014cb1b9789bf87da965)
@@ -43,5 +43,5 @@
 	uint32_t rev_num;
 } cpu_arch_t;
-	
+
 #endif
 
Index: kernel/arch/mips32/include/interrupt.h
===================================================================
--- kernel/arch/mips32/include/interrupt.h	(revision 85156d302a086103852bf03ded648aeb26304afa)
+++ kernel/arch/mips32/include/interrupt.h	(revision 7f34182064fa93a69263014cb1b9789bf87da965)
@@ -39,6 +39,8 @@
 #include <arch/exception.h>
 
-#define IVT_ITEMS 32
-#define IVT_FIRST 0
+#define IVT_ITEMS  32
+#define IVT_FIRST  0
+
+#define VECTOR_TLB_SHOOTDOWN_IPI  EXC_Int
 
 extern function virtual_timer_fnc;
Index: kernel/arch/mips32/include/smp/dorder.h
===================================================================
--- kernel/arch/mips32/include/smp/dorder.h	(revision 7f34182064fa93a69263014cb1b9789bf87da965)
+++ kernel/arch/mips32/include/smp/dorder.h	(revision 7f34182064fa93a69263014cb1b9789bf87da965)
@@ -0,0 +1,34 @@
+/*
+ * Copyright (c) 2007 Martin Decky
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - Redistributions in binary form must reproduce the above copyright
+ *   notice, this list of conditions and the following disclaimer in the
+ *   documentation and/or other materials provided with the distribution.
+ * - The name of the author may not be used to endorse or promote products
+ *   derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef KERN_mips32_DORDER_H_
+#define KERN_mips32_DORDER_H_
+
+extern void ipi_broadcast_arch(int ipi);
+
+#endif
Index: rnel/arch/mips32/include/smp/order.h
===================================================================
--- kernel/arch/mips32/include/smp/order.h	(revision 85156d302a086103852bf03ded648aeb26304afa)
+++ 	(revision )
@@ -1,34 +1,0 @@
-/*
- * Copyright (c) 2007 Martin Decky
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * - Redistributions in binary form must reproduce the above copyright
- *   notice, this list of conditions and the following disclaimer in the
- *   documentation and/or other materials provided with the distribution.
- * - The name of the author may not be used to endorse or promote products
- *   derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef KERN_mips32_ORDER_H_
-#define KERN_mips32_ORDER_H_
-
-extern void ipi_broadcast_arch(int ipi);
-
-#endif
Index: kernel/arch/mips32/src/asm.S
===================================================================
--- kernel/arch/mips32/src/asm.S	(revision 85156d302a086103852bf03ded648aeb26304afa)
+++ kernel/arch/mips32/src/asm.S	(revision 7f34182064fa93a69263014cb1b9789bf87da965)
@@ -28,5 +28,5 @@
 
 #include <arch/asm/regname.h>
-	
+
 .text
 
@@ -46,4 +46,9 @@
 .set noreorder
 .set nomacro
+
+.global asm_delay_loop
+asm_delay_loop:
+	j $31
+	nop
 
 .global cpu_halt
Index: kernel/arch/mips32/src/debugger.c
===================================================================
--- kernel/arch/mips32/src/debugger.c	(revision 85156d302a086103852bf03ded648aeb26304afa)
+++ kernel/arch/mips32/src/debugger.c	(revision 7f34182064fa93a69263014cb1b9789bf87da965)
@@ -163,5 +163,5 @@
 		if (breakpoints[i].address == (uintptr_t)argv->intval) {
 			printf("Duplicate breakpoint %d.\n", i);
-			spinlock_unlock(&bkpoints_lock);
+			spinlock_unlock(&bkpoint_lock);
 			return 0;
 		} else if (breakpoints[i].address == (uintptr_t)argv->intval +
@@ -170,8 +170,8 @@
 			printf("Adjacent breakpoints not supported, conflict "
 			    "with %d.\n", i);
-			spinlock_unlock(&bkpoints_lock);
+			spinlock_unlock(&bkpoint_lock);
 			return 0;
 		}
-			
+		
 	}
 
Index: rnel/arch/mips32/src/dummy.S
===================================================================
--- kernel/arch/mips32/src/dummy.S	(revision 85156d302a086103852bf03ded648aeb26304afa)
+++ 	(revision )
@@ -1,41 +1,0 @@
-#
-# Copyright (c) 2003-2004 Jakub Jermar
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# - Redistributions of source code must retain the above copyright
-#   notice, this list of conditions and the following disclaimer.
-# - Redistributions in binary form must reproduce the above copyright
-#   notice, this list of conditions and the following disclaimer in the
-#   documentation and/or other materials provided with the distribution.
-# - The name of the author may not be used to endorse or promote products
-#   derived from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
-# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
-# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#
-
-.text
-.set noat
-
-.global calibrate_delay_loop
-.global asm_delay_loop
-.global dummy
-	
-calibrate_delay_loop:
-asm_delay_loop:
-
-dummy:
-	j $31
-	nop
Index: kernel/arch/mips32/src/interrupt.c
===================================================================
--- kernel/arch/mips32/src/interrupt.c	(revision 85156d302a086103852bf03ded648aeb26304afa)
+++ kernel/arch/mips32/src/interrupt.c	(revision 7f34182064fa93a69263014cb1b9789bf87da965)
@@ -42,6 +42,7 @@
 #include <ddi/device.h>
 
-#define IRQ_COUNT 8
-#define TIMER_IRQ 7
+#define IRQ_COUNT   8
+#define TIMER_IRQ   7
+#define DORDER_IRQ  5
 
 function virtual_timer_fnc = NULL;
Index: kernel/arch/mips32/src/mips32.c
===================================================================
--- kernel/arch/mips32/src/mips32.c	(revision 85156d302a086103852bf03ded648aeb26304afa)
+++ kernel/arch/mips32/src/mips32.c	(revision 7f34182064fa93a69263014cb1b9789bf87da965)
@@ -167,4 +167,8 @@
 }
 
+void calibrate_delay_loop(void)
+{
+}
+
 void userspace(uspace_arg_t *kernel_uarg)
 {
Index: kernel/arch/mips32/src/mm/tlb.c
===================================================================
--- kernel/arch/mips32/src/mm/tlb.c	(revision 85156d302a086103852bf03ded648aeb26304afa)
+++ kernel/arch/mips32/src/mm/tlb.c	(revision 7f34182064fa93a69263014cb1b9789bf87da965)
@@ -27,5 +27,5 @@
  */
 
-/** @addtogroup mips32mm	
+/** @addtogroup mips32mm
  * @{
  */
@@ -42,5 +42,5 @@
 #include <arch.h>
 #include <symtab.h>
-#include <synch/spinlock.h>
+#include <synch/mutex.h>
 #include <print.h>
 #include <debug.h>
@@ -93,13 +93,13 @@
 	pte_t *pte;
 	int pfrc;
-
+	
 	badvaddr = cp0_badvaddr_read();
-
-	spinlock_lock(&AS->lock);
+	
+	mutex_lock(&AS->lock);
 	asid = AS->asid;
-	spinlock_unlock(&AS->lock);
-
+	mutex_unlock(&AS->lock);
+	
 	page_table_lock(AS, true);
-
+	
 	pte = find_mapping_and_check(badvaddr, PF_ACCESS_READ, istate, &pfrc);
 	if (!pte) {
Index: kernel/arch/mips32/src/smp/dorder.c
===================================================================
--- kernel/arch/mips32/src/smp/dorder.c	(revision 7f34182064fa93a69263014cb1b9789bf87da965)
+++ kernel/arch/mips32/src/smp/dorder.c	(revision 7f34182064fa93a69263014cb1b9789bf87da965)
@@ -0,0 +1,47 @@
+/*
+ * Copyright (c) 2007 Martin Decky
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - Redistributions in binary form must reproduce the above copyright
+ *   notice, this list of conditions and the following disclaimer in the
+ *   documentation and/or other materials provided with the distribution.
+ * - The name of the author may not be used to endorse or promote products
+ *   derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/** @addtogroup mips32
+ * @{
+ */
+/** @file
+ */
+
+#include <arch/smp/dorder.h>
+
+#define MSIM_DORDER_ADDRESS  0xB0000004
+
+void ipi_broadcast_arch(int ipi)
+{
+#ifdef CONFIG_SMP
+	*((volatile unsigned int *) MSIM_DORDER_ADDRESS) = 0x7FFFFFFF;
+#endif
+}
+
+/** @}
+ */
Index: rnel/arch/mips32/src/smp/order.c
===================================================================
--- kernel/arch/mips32/src/smp/order.c	(revision 85156d302a086103852bf03ded648aeb26304afa)
+++ 	(revision )
@@ -1,45 +1,0 @@
-/*
- * Copyright (c) 2007 Martin Decky
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * - Redistributions in binary form must reproduce the above copyright
- *   notice, this list of conditions and the following disclaimer in the
- *   documentation and/or other materials provided with the distribution.
- * - The name of the author may not be used to endorse or promote products
- *   derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-/** @addtogroup mips32	
- * @{
- */
-/** @file
- */
-
-#include <arch/smp/order.h>
-
-#define MSIM_ORDER_ADDRESS	0xB0000004
-
-void ipi_broadcast_arch(int ipi)
-{
-	*((volatile unsigned int *) MSIM_ORDER_ADDRESS) = 0x7FFFFFFF;
-}
-
-/** @}
- */
Index: kernel/arch/mips32/src/smp/smp.c
===================================================================
--- kernel/arch/mips32/src/smp/smp.c	(revision 7f34182064fa93a69263014cb1b9789bf87da965)
+++ kernel/arch/mips32/src/smp/smp.c	(revision 7f34182064fa93a69263014cb1b9789bf87da965)
@@ -0,0 +1,50 @@
+/*
+ * Copyright (c) 2009 Martin Decky
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - Redistributions in binary form must reproduce the above copyright
+ *   notice, this list of conditions and the following disclaimer in the
+ *   documentation and/or other materials provided with the distribution.
+ * - The name of the author may not be used to endorse or promote products
+ *   derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/** @addtogroup mips32
+ * @{
+ */
+/** @file
+ */
+
+#include <smp/smp.h>
+
+#ifdef CONFIG_SMP
+
+void smp_init(void)
+{
+}
+
+void kmp(void *arg __attribute__((unused)))
+{
+}
+
+#endif /* CONFIG_SMP */
+
+/** @}
+ */
Index: kernel/generic/src/mm/as.c
===================================================================
--- kernel/generic/src/mm/as.c	(revision 85156d302a086103852bf03ded648aeb26304afa)
+++ kernel/generic/src/mm/as.c	(revision 7f34182064fa93a69263014cb1b9789bf87da965)
@@ -123,5 +123,5 @@
 
 	link_initialize(&as->inactive_as_with_asid_link);
-	mutex_initialize(&as->lock, MUTEX_PASSIVE);	
+	mutex_initialize(&as->lock, MUTEX_PASSIVE);
 	
 	rc = as_constructor_arch(as, flags);
