diff -uNr -x HelenOS.vpj -x HelenOS.vtg -x HelenOS.vpw -x HelenOS.vpwhistu -x '*tar.bz2' -x '*svn*' HelenOS.rev1517/boot/arch/arm32/include/arch.h HelenOS.rev1517.versatilepb/boot/arch/arm32/include/arch.h
--- HelenOS.rev1517/boot/arch/arm32/include/arch.h	2012-06-05 11:51:54.000000000 +0200
+++ HelenOS.rev1517.versatilepb/boot/arch/arm32/include/arch.h	2012-06-13 21:45:21.000000000 +0200
@@ -41,6 +41,8 @@
  */
 #ifdef MACHINE_gta02
 #define BOOT_BASE	0x30008000
+#elif defined(MACHINE_versatilepb)
+#define BOOT_BASE	0x00010000
 #else
 #define BOOT_BASE	0x00000000
 #endif
diff -uNr -x HelenOS.vpj -x HelenOS.vtg -x HelenOS.vpw -x HelenOS.vpwhistu -x '*tar.bz2' -x '*svn*' HelenOS.rev1517/boot/arch/arm32/include/main.h HelenOS.rev1517.versatilepb/boot/arch/arm32/include/main.h
--- HelenOS.rev1517/boot/arch/arm32/include/main.h	2012-06-05 11:51:54.000000000 +0200
+++ HelenOS.rev1517.versatilepb/boot/arch/arm32/include/main.h	2012-06-13 21:45:36.000000000 +0200
@@ -56,6 +56,9 @@
 /** IntegratorCP serial console output register */
 #define ICP_SCONS_ADDR 		0x16000000
 
+/** Versatile-PB serial console output register */
+#define VERSATILEPB_SCONS_ADDR			0x101F1000
+
 extern void bootstrap(void);
 
 #endif
diff -uNr -x HelenOS.vpj -x HelenOS.vtg -x HelenOS.vpw -x HelenOS.vpwhistu -x '*tar.bz2' -x '*svn*' HelenOS.rev1517/boot/arch/arm32/Makefile.inc HelenOS.rev1517.versatilepb/boot/arch/arm32/Makefile.inc
--- HelenOS.rev1517/boot/arch/arm32/Makefile.inc	2012-06-05 11:51:54.000000000 +0200
+++ HelenOS.rev1517.versatilepb/boot/arch/arm32/Makefile.inc	2012-06-13 21:46:52.000000000 +0200
@@ -38,7 +38,11 @@
 
 BITS = 32
 ENDIANESS = LE
-EXTRA_CFLAGS = -march=armv4
+ifeq ($(MACHINE),versatilepb)
+	EXTRA_CFLAGS = -march=armv5te -mtune=arm926ej-s
+else
+	EXTRA_CFLAGS = -march=armv4
+endif
 
 RD_SRVS_ESSENTIAL += \
 	$(USPACE_PATH)/srv/hid/s3c24xx_ts/s3c24xx_ts \
diff -uNr -x HelenOS.vpj -x HelenOS.vtg -x HelenOS.vpw -x HelenOS.vpwhistu -x '*tar.bz2' -x '*svn*' HelenOS.rev1517/boot/arch/arm32/src/main.c HelenOS.rev1517.versatilepb/boot/arch/arm32/src/main.c
--- HelenOS.rev1517/boot/arch/arm32/src/main.c	2012-06-05 11:51:54.000000000 +0200
+++ HelenOS.rev1517.versatilepb/boot/arch/arm32/src/main.c	2012-06-13 21:45:57.000000000 +0200
@@ -91,17 +91,17 @@
 		cnt++;
 	}
 	
-	printf("\nInflating components ... ");
+	printf("\nInflating %u components ... ", cnt);
 	
 	for (i = cnt; i > 0; i--) {
-		void *tail = components[i - 1].start + components[i - 1].size;
+		const void *tail = components[i - 1].start + components[i - 1].size;
 		if (tail >= dest[i - 1]) {
 			printf("\n%s: Image too large to fit (%p >= %p), halting.\n",
 			    components[i].name, tail, dest[i - 1]);
 			halt();
 		}
 		
-		printf("%s ", components[i - 1].name);
+		printf("%s(at %p) ", components[i - 1].name, dest[i - 1]);
 		
 		int err = inflate(components[i - 1].start, components[i - 1].size,
 		    dest[i - 1], components[i - 1].inflated);
@@ -114,7 +114,7 @@
 	
 	printf(".\n");
 	
-	printf("Booting the kernel... \n");
+	printf("Booting the kernel at %#x... \n", PA2KA(BOOT_OFFSET));
 	jump_to_kernel((void *) PA2KA(BOOT_OFFSET), &bootinfo);
 }
 
diff -uNr -x HelenOS.vpj -x HelenOS.vtg -x HelenOS.vpw -x HelenOS.vpwhistu -x '*tar.bz2' -x '*svn*' HelenOS.rev1517/boot/arch/arm32/src/mm.c HelenOS.rev1517.versatilepb/boot/arch/arm32/src/mm.c
--- HelenOS.rev1517/boot/arch/arm32/src/mm.c	2012-06-05 11:51:54.000000000 +0200
+++ HelenOS.rev1517.versatilepb/boot/arch/arm32/src/mm.c	2012-06-13 21:46:06.000000000 +0200
@@ -66,7 +66,7 @@
 /** Initialize page table used while booting the kernel. */
 static void init_boot_pt(void)
 {
-	pfn_t split_page = 0x800;
+	const pfn_t split_page = 0x800;
 	
 	/* Create 1:1 virtual-physical mapping (in lower 2 GB). */
 	pfn_t page;
@@ -77,8 +77,14 @@
 	 * Create 1:1 virtual-physical mapping in kernel space
 	 * (upper 2 GB), physical addresses start from 0.
 	 */
-	for (page = split_page; page < PTL0_ENTRIES; page++)
-		init_ptl0_section(&boot_pt[page], page - split_page);
+	for (page = split_page; page < PTL0_ENTRIES - 256; page++)
+		init_ptl0_section(&boot_pt[page], page - split_page);	
+
+	/*
+	 * Exclude peripherals address space.
+	 */
+	for (page = PTL0_ENTRIES - 256; page < PTL0_ENTRIES; page++)
+		init_ptl0_section(&boot_pt[page], page);	
 	
 	asm volatile (
 		"mcr p15, 0, %[pt], c2, c0, 0\n"
diff -uNr -x HelenOS.vpj -x HelenOS.vtg -x HelenOS.vpw -x HelenOS.vpwhistu -x '*tar.bz2' -x '*svn*' HelenOS.rev1517/boot/arch/arm32/src/putchar.c HelenOS.rev1517.versatilepb/boot/arch/arm32/src/putchar.c
--- HelenOS.rev1517/boot/arch/arm32/src/putchar.c	2012-06-05 11:51:54.000000000 +0200
+++ HelenOS.rev1517.versatilepb/boot/arch/arm32/src/putchar.c	2012-06-14 11:53:44.000000000 +0200
@@ -90,6 +90,17 @@
 
 #endif
 
+#ifdef MACHINE_versatilepb
+
+static void scons_sendb_versatilepb(uint8_t c)
+{
+	volatile unsigned int * const UART0DR = (unsigned int *)VERSATILEPB_SCONS_ADDR;
+	
+	*UART0DR = (unsigned int)c; /* Transmit char */
+}
+
+#endif
+
 /** Send a byte to the serial console.
  *
  * @param byte		Byte to send.
@@ -105,6 +116,9 @@
 #ifdef MACHINE_integratorcp
 	scons_sendb_icp(byte);
 #endif
+#ifdef MACHINE_versatilepb
+	scons_sendb_versatilepb(byte);
+#endif
 }
 
 /** Display a character
diff -uNr -x HelenOS.vpj -x HelenOS.vtg -x HelenOS.vpw -x HelenOS.vpwhistu -x '*tar.bz2' -x '*svn*' HelenOS.rev1517/defaults/arm32/versatilepb/Makefile.config HelenOS.rev1517.versatilepb/defaults/arm32/versatilepb/Makefile.config
--- HelenOS.rev1517/defaults/arm32/versatilepb/Makefile.config	1970-01-01 01:00:00.000000000 +0100
+++ HelenOS.rev1517.versatilepb/defaults/arm32/versatilepb/Makefile.config	2012-06-13 18:22:06.000000000 +0200
@@ -0,0 +1,5 @@
+# Machine type
+MACHINE = versatilepb
+
+# RAM disk format
+RDFMT = tmpfs
diff -uNr -x HelenOS.vpj -x HelenOS.vtg -x HelenOS.vpw -x HelenOS.vpwhistu -x '*tar.bz2' -x '*svn*' HelenOS.rev1517/HelenOS.config HelenOS.rev1517.versatilepb/HelenOS.config
--- HelenOS.rev1517/HelenOS.config	2012-06-05 11:51:54.000000000 +0200
+++ HelenOS.rev1517.versatilepb/HelenOS.config	2012-06-13 21:43:28.000000000 +0200
@@ -64,6 +64,7 @@
 @ "gta02" GTA02 / Neo FreeRunner
 @ "testarm" GXEmul Testarm
 @ "integratorcp" Integratorcp
+@ "versatilepb" Versatile-PB
 ! [PLATFORM=arm32] MACHINE (choice)
 
 % CPU type
diff -uNr -x HelenOS.vpj -x HelenOS.vtg -x HelenOS.vpw -x HelenOS.vpwhistu -x '*tar.bz2' -x '*svn*' HelenOS.rev1517/kernel/arch/arm32/include/mach/versatilepb/versatilepb.h HelenOS.rev1517.versatilepb/kernel/arch/arm32/include/mach/versatilepb/versatilepb.h
--- HelenOS.rev1517/kernel/arch/arm32/include/mach/versatilepb/versatilepb.h	1970-01-01 01:00:00.000000000 +0100
+++ HelenOS.rev1517.versatilepb/kernel/arch/arm32/include/mach/versatilepb/versatilepb.h	2012-06-13 19:12:49.000000000 +0200
@@ -0,0 +1,48 @@
+/*
+ * Copyright (c) 2012 Alexander Heide
+ * 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 arm32versatilepb VERSATILEPB
+ *  @brief VERSATILEPB board.
+ *  @ingroup arm32
+ * @{
+ */
+/** @file
+ *  @brief VERSATILEPB board driver.
+ */
+
+#ifndef KERN_arm32_versatilepb_H_
+#define KERN_arm32_versatilepb_H_
+
+#include <arch/machine_func.h>
+
+extern struct arm_machine_ops versatilepb_machine_ops;
+
+#endif
+
+/** @}
+ */
diff -uNr -x HelenOS.vpj -x HelenOS.vtg -x HelenOS.vpw -x HelenOS.vpwhistu -x '*tar.bz2' -x '*svn*' HelenOS.rev1517/kernel/arch/arm32/include/mm/frame.h HelenOS.rev1517.versatilepb/kernel/arch/arm32/include/mm/frame.h
--- HelenOS.rev1517/kernel/arch/arm32/include/mm/frame.h	2012-06-05 11:51:54.000000000 +0200
+++ HelenOS.rev1517.versatilepb/kernel/arch/arm32/include/mm/frame.h	2012-06-13 21:47:30.000000000 +0200
@@ -46,19 +46,17 @@
 #define BOOT_PAGE_TABLE_SIZE     0x4000
 
 #ifdef MACHINE_gta02
-#define BOOT_PAGE_TABLE_ADDRESS  0x30010000
+#define PHYSMEM_START_ADDR		 0x30008000
+#elif defined(MACHINE_versatilepb)
+#define PHYSMEM_START_ADDR  	 0x00010000
 #else
-#define BOOT_PAGE_TABLE_ADDRESS  0x00008000
+#define PHYSMEM_START_ADDR		 0x00000000
 #endif
 
 #define BOOT_PAGE_TABLE_START_FRAME     (BOOT_PAGE_TABLE_ADDRESS >> FRAME_WIDTH)
 #define BOOT_PAGE_TABLE_SIZE_IN_FRAMES  (BOOT_PAGE_TABLE_SIZE >> FRAME_WIDTH)
-
-#ifdef MACHINE_gta02
-#define PHYSMEM_START_ADDR	0x30008000
-#else
-#define PHYSMEM_START_ADDR	0x00000000
-#endif
+#define BOOT_PAGE_TABLE_OFFSET		 	0x8000
+#define BOOT_PAGE_TABLE_ADDRESS  		(PHYSMEM_START_ADDR+BOOT_PAGE_TABLE_OFFSET)
 
 extern void frame_low_arch_init(void);
 extern void frame_high_arch_init(void);
diff -uNr -x HelenOS.vpj -x HelenOS.vtg -x HelenOS.vpw -x HelenOS.vpwhistu -x '*tar.bz2' -x '*svn*' HelenOS.rev1517/kernel/arch/arm32/_link.ld.in HelenOS.rev1517.versatilepb/kernel/arch/arm32/_link.ld.in
--- HelenOS.rev1517/kernel/arch/arm32/_link.ld.in	2012-06-05 11:51:54.000000000 +0200
+++ HelenOS.rev1517.versatilepb/kernel/arch/arm32/_link.ld.in	2012-06-13 21:45:00.000000000 +0200
@@ -8,6 +8,8 @@
 
 #ifdef MACHINE_gta02
 #define KERNEL_LOAD_ADDRESS 0xb0a08000
+#elif defined(MACHINE_versatilepb)
+#define KERNEL_LOAD_ADDRESS 0x80a10000
 #else
 #define KERNEL_LOAD_ADDRESS 0x80a00000
 #endif
diff -uNr -x HelenOS.vpj -x HelenOS.vtg -x HelenOS.vpw -x HelenOS.vpwhistu -x '*tar.bz2' -x '*svn*' HelenOS.rev1517/kernel/arch/arm32/Makefile.inc HelenOS.rev1517.versatilepb/kernel/arch/arm32/Makefile.inc
--- HelenOS.rev1517/kernel/arch/arm32/Makefile.inc	2012-06-05 11:51:54.000000000 +0200
+++ HelenOS.rev1517.versatilepb/kernel/arch/arm32/Makefile.inc	2012-06-14 11:52:55.000000000 +0200
@@ -32,7 +32,11 @@
 
 ATSIGN = %
 
-GCC_CFLAGS += -march=armv4
+ifeq ($(MACHINE),versatilepb)
+	GCC_CFLAGS += -march=armv5te -mtune=arm926ej-s	
+else
+	GCC_CFLAGS += -march=armv4
+endif
 
 BITS = 32
 ENDIANESS = LE
@@ -73,6 +77,10 @@
 	ARCH_SOURCES += arch/$(KARCH)/src/mach/integratorcp/integratorcp.c
 endif
 
+ifeq ($(MACHINE),versatilepb)
+	ARCH_SOURCES += arch/$(KARCH)/src/mach/versatilepb/versatilepb.c
+endif
+
 ifeq ($(CONFIG_PL050),y)
 	ARCH_SOURCES += genarch/src/drivers/pl050/pl050.c
 endif
diff -uNr -x HelenOS.vpj -x HelenOS.vtg -x HelenOS.vpw -x HelenOS.vpwhistu -x '*tar.bz2' -x '*svn*' HelenOS.rev1517/kernel/arch/arm32/src/asm.S HelenOS.rev1517.versatilepb/kernel/arch/arm32/src/asm.S
--- HelenOS.rev1517/kernel/arch/arm32/src/asm.S	2012-06-05 11:51:54.000000000 +0200
+++ HelenOS.rev1517.versatilepb/kernel/arch/arm32/src/asm.S	2012-06-13 21:48:04.000000000 +0200
@@ -100,4 +100,9 @@
 	ldmia sp!, {r4, r5, pc}
 
 early_putchar:
+#if defined(MACHINE_versatilepb)
+	ldr  r1, =0x101F1000
+	strb r0, [r1]
+#endif	
+
 	mov pc, lr
diff -uNr -x HelenOS.vpj -x HelenOS.vtg -x HelenOS.vpw -x HelenOS.vpwhistu -x '*tar.bz2' -x '*svn*' HelenOS.rev1517/kernel/arch/arm32/src/exception.c HelenOS.rev1517.versatilepb/kernel/arch/arm32/src/exception.c
--- HelenOS.rev1517/kernel/arch/arm32/src/exception.c	2012-06-05 11:51:54.000000000 +0200
+++ HelenOS.rev1517.versatilepb/kernel/arch/arm32/src/exception.c	2012-06-14 11:56:51.000000000 +0200
@@ -121,6 +121,8 @@
 {
 	uint32_t control_reg;
 	
+	// TODO: Check if it schould not be "mrc p15, 0, %[control_reg], c1, c0, 0"
+	// In accordance to http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0198e/I1039296.html
 	asm volatile (
 		"mrc p15, 0, %[control_reg], c1, c1"
 		: [control_reg] "=r" (control_reg)
diff -uNr -x HelenOS.vpj -x HelenOS.vtg -x HelenOS.vpw -x HelenOS.vpwhistu -x '*tar.bz2' -x '*svn*' HelenOS.rev1517/kernel/arch/arm32/src/mach/versatilepb/versatilepb.c HelenOS.rev1517.versatilepb/kernel/arch/arm32/src/mach/versatilepb/versatilepb.c
--- HelenOS.rev1517/kernel/arch/arm32/src/mach/versatilepb/versatilepb.c	1970-01-01 01:00:00.000000000 +0100
+++ HelenOS.rev1517.versatilepb/kernel/arch/arm32/src/mach/versatilepb/versatilepb.c	2012-06-13 20:57:35.000000000 +0200
@@ -0,0 +1,125 @@
+/*
+ * Copyright (c) 2012 Alexander Heide
+ * 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 arm32versatilepb VERSATILEPB
+ * @{
+ */
+/** @file
+ *  @brief VERSATILEPB board driver.
+ */
+
+#include <arch/exception.h>
+#include <arch/mach/versatilepb/versatilepb.h>
+#include <arch/mm/page.h>
+#include <mm/page.h>
+#include <mm/km.h>
+#include <genarch/fb/fb.h>
+#include <abi/fb/visuals.h>
+#include <genarch/srln/srln.h>
+#include <sysinfo/sysinfo.h>
+#include <interrupt.h>
+#include <ddi/ddi.h>
+#include <ddi/device.h>
+
+#define VERSATILEPB_MEMORY_START	0x00010000		/* SD-RAM Bank */
+#define VERSATILEPB_MEMORY_SIZE		64*1024*1024	/* 64 MB */
+
+static void versatilepb_init(void);
+static void versatilepb_timer_irq_start(void);
+static void versatilepb_cpu_halt(void);
+static void versatilepb_get_memory_extents(uintptr_t *start, size_t *size);
+static void versatilepb_irq_exception(unsigned int exc_no, istate_t *istate);
+static void versatilepb_frame_init(void);
+static void versatilepb_output_init(void);
+static void versatilepb_input_init(void);
+static size_t versatilepb_get_irq_count(void);
+static const char *versatilepb_get_platform_name(void);
+
+struct arm_machine_ops versatilepb_machine_ops = {
+	versatilepb_init,
+	versatilepb_timer_irq_start,
+	versatilepb_cpu_halt,
+	versatilepb_get_memory_extents,
+	versatilepb_irq_exception,
+	versatilepb_frame_init,
+	versatilepb_output_init,
+	versatilepb_input_init,
+	versatilepb_get_irq_count,
+	versatilepb_get_platform_name
+};
+
+static void versatilepb_init(void)
+{	
+}
+
+static void versatilepb_timer_irq_start(void)
+{
+}
+
+static void versatilepb_cpu_halt(void)
+{
+}
+
+/** Get extents of available memory.
+ *
+ * @param start		Place to store memory start address (physical).
+ * @param size		Place to store memory size.
+ */
+static void versatilepb_get_memory_extents(uintptr_t *start, size_t *size)
+{
+	*start = VERSATILEPB_MEMORY_START;
+	*size  = VERSATILEPB_MEMORY_SIZE;
+}
+
+static void versatilepb_irq_exception(unsigned int exc_no, istate_t *istate)
+{
+}
+
+static void versatilepb_frame_init(void)
+{
+}
+
+static void versatilepb_output_init(void)
+{
+}
+
+static void versatilepb_input_init(void)
+{
+}
+
+size_t versatilepb_get_irq_count(void)
+{
+	return 0;
+}
+
+const char *versatilepb_get_platform_name(void)
+{
+	return "versatilepb";
+}
+/** @}
+ */
diff -uNr -x HelenOS.vpj -x HelenOS.vtg -x HelenOS.vpw -x HelenOS.vpwhistu -x '*tar.bz2' -x '*svn*' HelenOS.rev1517/kernel/arch/arm32/src/machine_func.c HelenOS.rev1517.versatilepb/kernel/arch/arm32/src/machine_func.c
--- HelenOS.rev1517/kernel/arch/arm32/src/machine_func.c	2012-06-05 11:51:54.000000000 +0200
+++ HelenOS.rev1517.versatilepb/kernel/arch/arm32/src/machine_func.c	2012-06-13 21:53:33.000000000 +0200
@@ -41,6 +41,7 @@
 #include <arch/mach/gta02/gta02.h>
 #include <arch/mach/integratorcp/integratorcp.h>
 #include <arch/mach/testarm/testarm.h>
+#include <arch/mach/versatilepb/versatilepb.h>
 
 /** Pointer to machine_ops structure being used. */
 struct arm_machine_ops *machine_ops;
@@ -54,6 +55,8 @@
 	machine_ops = &gxemul_machine_ops;
 #elif defined(MACHINE_integratorcp)
 	machine_ops = &icp_machine_ops;
+#elif defined(MACHINE_versatilepb)
+	machine_ops = &versatilepb_machine_ops;
 #else
 #error Machine type not defined.
 #endif
diff -uNr -x HelenOS.vpj -x HelenOS.vtg -x HelenOS.vpw -x HelenOS.vpwhistu -x '*tar.bz2' -x '*svn*' HelenOS.rev1517/uspace/lib/c/arch/arm32/Makefile.common HelenOS.rev1517.versatilepb/uspace/lib/c/arch/arm32/Makefile.common
--- HelenOS.rev1517/uspace/lib/c/arch/arm32/Makefile.common	2012-06-05 11:51:54.000000000 +0200
+++ HelenOS.rev1517.versatilepb/uspace/lib/c/arch/arm32/Makefile.common	2012-06-13 22:01:29.000000000 +0200
@@ -27,7 +27,13 @@
 # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 #
 
-GCC_CFLAGS += -ffixed-r9 -mtp=soft -fno-omit-frame-pointer -march=armv4
+GCC_CFLAGS += -ffixed-r9 -mtp=soft -fno-omit-frame-pointer
+
+ifeq ($(MACHINE),versatilepb)
+	GCC_CFLAGS += -march=armv5te -mtune=arm926ej-s
+else
+	GCC_CFLAGS += -march=armv4
+endif
 
 ENDIANESS = LE
 
