Index: HelenOS.config
===================================================================
--- HelenOS.config	(revision eda925ad3905a0c8e5cc3f1d3908e5bb1d14bcae)
+++ HelenOS.config	(revision d32358f46cafe03f9b3c769982c62f90757ba1c4)
@@ -310,5 +310,5 @@
 
 % Support for SMP
-! [(PLATFORM=ia32&PROCESSOR!=athlon_xp)|PLATFORM=amd64|PLATFORM=sparc64|PLATFORM=ia64|(PLATFORM=mips32&MACHINE=msim)] CONFIG_SMP (y/n)
+! [(PLATFORM=ia32&PROCESSOR!=athlon_xp)|PLATFORM=amd64|PLATFORM=sparc64|PLATFORM=ia64|(PLATFORM=mips32&MACHINE=msim)|PLATFORM=abs32le] CONFIG_SMP (y/n)
 
 % Debug build
Index: defaults/special/Makefile.config
===================================================================
--- defaults/special/Makefile.config	(revision eda925ad3905a0c8e5cc3f1d3908e5bb1d14bcae)
+++ defaults/special/Makefile.config	(revision d32358f46cafe03f9b3c769982c62f90757ba1c4)
@@ -4,4 +4,7 @@
 # Compiler
 COMPILER = gcc_native
+
+# Support for SMP
+CONFIG_SMP = y
 
 # Debug build
Index: kernel/arch/abs32le/Makefile.inc
===================================================================
--- kernel/arch/abs32le/Makefile.inc	(revision eda925ad3905a0c8e5cc3f1d3908e5bb1d14bcae)
+++ kernel/arch/abs32le/Makefile.inc	(revision d32358f46cafe03f9b3c769982c62f90757ba1c4)
@@ -41,4 +41,6 @@
 	arch/$(KARCH)/src/userspace.c \
 	arch/$(KARCH)/src/cpu/cpu.c \
+	arch/$(KARCH)/src/ddi/ddi.c \
+	arch/$(KARCH)/src/smp/smp.c \
 	arch/$(KARCH)/src/mm/as.c \
 	arch/$(KARCH)/src/mm/frame.c \
Index: kernel/arch/abs32le/include/context.h
===================================================================
--- kernel/arch/abs32le/include/context.h	(revision eda925ad3905a0c8e5cc3f1d3908e5bb1d14bcae)
+++ kernel/arch/abs32le/include/context.h	(revision d32358f46cafe03f9b3c769982c62f90757ba1c4)
@@ -36,16 +36,6 @@
 #define KERN_abs32le_CONTEXT_H_
 
-#ifdef KERNEL
-#include <arch/types.h>
-
 #define STACK_ITEM_SIZE  4
 #define SP_DELTA         0
-
-#define context_set(c, _pc, stack, size) \
-	do { \
-		(c)->pc = (uintptr_t) (_pc); \
-	} while (0)
-
-#endif /* KERNEL */
 
 /*
Index: kernel/arch/abs32le/include/interrupt.h
===================================================================
--- kernel/arch/abs32le/include/interrupt.h	(revision eda925ad3905a0c8e5cc3f1d3908e5bb1d14bcae)
+++ kernel/arch/abs32le/include/interrupt.h	(revision d32358f46cafe03f9b3c769982c62f90757ba1c4)
@@ -40,4 +40,6 @@
 #define IVT_ITEMS  0
 #define IVT_FIRST  0
+
+#define VECTOR_TLB_SHOOTDOWN_IPI  0
 
 /*
Index: kernel/arch/abs32le/src/abs32le.c
===================================================================
--- kernel/arch/abs32le/src/abs32le.c	(revision eda925ad3905a0c8e5cc3f1d3908e5bb1d14bcae)
+++ kernel/arch/abs32le/src/abs32le.c	(revision d32358f46cafe03f9b3c769982c62f90757ba1c4)
@@ -39,5 +39,7 @@
 #include <arch/asm.h>
 
+#include <func.h>
 #include <config.h>
+#include <context.h>
 #include <interrupt.h>
 #include <ddi/irq.h>
@@ -128,4 +130,14 @@
 }
 
+int context_save_arch(context_t *ctx)
+{
+	return 1;
+}
+
+void context_restore_arch(context_t *ctx)
+{
+	while (true);
+}
+
 /** @}
  */
Index: kernel/arch/abs32le/src/ddi/ddi.c
===================================================================
--- kernel/arch/abs32le/src/ddi/ddi.c	(revision d32358f46cafe03f9b3c769982c62f90757ba1c4)
+++ kernel/arch/abs32le/src/ddi/ddi.c	(revision d32358f46cafe03f9b3c769982c62f90757ba1c4)
@@ -0,0 +1,49 @@
+/*
+ * Copyright (c) 2010 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 abs32leddi
+ * @{
+ */
+/** @file
+ *  @brief DDI.
+ */
+
+#include <ddi/ddi.h>
+#include <proc/task.h>
+#include <arch/types.h>
+
+/** Enable I/O space range for task.
+ *
+ */
+int ddi_iospace_enable_arch(task_t *task, uintptr_t ioaddr, size_t size)
+{
+	return 0;
+}
+
+/** @}
+ */
Index: kernel/arch/abs32le/src/debug/stacktrace.c
===================================================================
--- kernel/arch/abs32le/src/debug/stacktrace.c	(revision eda925ad3905a0c8e5cc3f1d3908e5bb1d14bcae)
+++ kernel/arch/abs32le/src/debug/stacktrace.c	(revision d32358f46cafe03f9b3c769982c62f90757ba1c4)
@@ -27,5 +27,5 @@
  */
 
-/** @addtogroup ia32
+/** @addtogroup abs32le
  * @{
  */
@@ -38,16 +38,11 @@
 #include <typedefs.h>
 
-#define FRAME_OFFSET_FP_PREV	0
-#define FRAME_OFFSET_RA		1
-
 bool kernel_frame_pointer_validate(uintptr_t fp)
 {
-	return fp != 0;
+	return true;;
 }
 
 bool kernel_frame_pointer_prev(uintptr_t fp, uintptr_t *prev)
 {
-	uint32_t *stack = (void *) fp;
-	*prev = stack[FRAME_OFFSET_FP_PREV];
 	return true;
 }
@@ -55,6 +50,4 @@
 bool kernel_return_address_get(uintptr_t fp, uintptr_t *ra)
 {
-	uint32_t *stack = (void *) fp;
-	*ra = stack[FRAME_OFFSET_RA];
 	return true;
 }
@@ -62,17 +55,25 @@
 bool uspace_frame_pointer_validate(uintptr_t fp)
 {
-	return fp != 0;
+	return true;
 }
 
 bool uspace_frame_pointer_prev(uintptr_t fp, uintptr_t *prev)
 {
-	return !copy_from_uspace((void *) prev,
-	    (uint32_t *) fp + FRAME_OFFSET_FP_PREV, sizeof(*prev));
+	return true;
 }
 
 bool uspace_return_address_get(uintptr_t fp, uintptr_t *ra)
 {
-	return !copy_from_uspace((void *) ra, (uint32_t *) fp + FRAME_OFFSET_RA,
-	    sizeof(*ra));
+	return true;
+}
+
+uintptr_t frame_pointer_get(void)
+{
+	return 0;
+}
+
+uintptr_t program_counter_get(void)
+{
+	return 0;
 }
 
Index: kernel/arch/abs32le/src/smp/smp.c
===================================================================
--- kernel/arch/abs32le/src/smp/smp.c	(revision d32358f46cafe03f9b3c769982c62f90757ba1c4)
+++ kernel/arch/abs32le/src/smp/smp.c	(revision d32358f46cafe03f9b3c769982c62f90757ba1c4)
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2010 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 abs32le
+ * @{
+ */
+/** @file
+ */
+
+#include <smp/smp.h>
+
+void smp_init(void)
+{
+}
+
+void kmp(void *arg)
+{
+}
+
+/** @}
+ */
Index: kernel/generic/include/stacktrace.h
===================================================================
--- kernel/generic/include/stacktrace.h	(revision eda925ad3905a0c8e5cc3f1d3908e5bb1d14bcae)
+++ kernel/generic/include/stacktrace.h	(revision d32358f46cafe03f9b3c769982c62f90757ba1c4)
@@ -60,5 +60,5 @@
  */
 extern uintptr_t frame_pointer_get(void);
-extern uintptr_t program_counter_get();
+extern uintptr_t program_counter_get(void);
 
 extern bool kernel_frame_pointer_validate(uintptr_t);
