Index: c/src/lib/libbsp/arm/realview-pbx-a9/include/bsp.h
===================================================================
--- c/src/lib/libbsp/arm/realview-pbx-a9/include/bsp.h	(revision a91dc98b5ad5ee9bc8d592c62753a467daf4e711)
+++ c/src/lib/libbsp/arm/realview-pbx-a9/include/bsp.h	(revision a91dc98b5ad5ee9bc8d592c62753a467daf4e711)
@@ -0,0 +1,76 @@
+/*
+ * Copyright (c) 2013 embedded brains GmbH.  All rights reserved.
+ *
+ *  embedded brains GmbH
+ *  Dornierstr. 4
+ *  82178 Puchheim
+ *  Germany
+ *  <info@embedded-brains.de>
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rtems.com/license/LICENSE.
+ */
+
+#ifndef LIBBSP_ARM_REALVIEW_PBX_A9_BSP_H
+#define LIBBSP_ARM_REALVIEW_PBX_A9_BSP_H
+
+#include <bspopts.h>
+
+#define BSP_FEATURE_IRQ_EXTENSION
+
+#ifndef ASM
+
+#include <rtems.h>
+#include <rtems/console.h>
+#include <rtems/clockdrv.h>
+
+#include <bsp/default-initial-extension.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+#define BSP_ARM_MMU_CLIENT_DOMAIN 15U
+
+#define BSP_ARM_MMU_READ_ONLY \
+  ((BSP_ARM_MMU_CLIENT_DOMAIN << ARM_MMU_SECT_DOMAIN_SHIFT) \
+    | ARM_MMU_SECT_AP_0 \
+    | ARM_MMU_SECT_AP_2 \
+    | ARM_MMU_SECT_DEFAULT)
+
+#define BSP_ARM_MMU_READ_ONLY_CACHED \
+  (BSP_ARM_MMU_READ_ONLY | ARM_MMU_SECT_C | ARM_MMU_SECT_B)
+
+#define BSP_ARM_MMU_READ_WRITE \
+  ((BSP_ARM_MMU_CLIENT_DOMAIN << ARM_MMU_SECT_DOMAIN_SHIFT) \
+    | ARM_MMU_SECT_AP_0 \
+    | ARM_MMU_SECT_DEFAULT)
+
+#define BSP_ARM_MMU_READ_WRITE_CACHED \
+  (BSP_ARM_MMU_READ_WRITE | ARM_MMU_SECT_C | ARM_MMU_SECT_B)
+
+#define BSP_ARM_MMU_READ_WRITE_DATA \
+  BSP_ARM_MMU_READ_WRITE_CACHED
+
+#define BSP_ARM_MMU_READ_ONLY_DATA \
+  BSP_ARM_MMU_READ_ONLY_CACHED
+
+#define BSP_ARM_MMU_CODE BSP_ARM_MMU_READ_ONLY_CACHED
+
+#define BSP_ARM_A9MPCORE_PT_BASE 0x1f000600
+
+typedef enum {
+  BSP_ARM_A9MPCORE_FATAL_CLOCK_IRQ_INSTALL,
+  BSP_ARM_A9MPCORE_FATAL_CLOCK_IRQ_REMOVE
+} rvpbxa9_fatal_code;
+
+void rvpbxa9_fatal(rvpbxa9_fatal_code code) RTEMS_COMPILER_NO_RETURN_ATTRIBUTE;
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* ASM */
+
+#endif /* LIBBSP_ARM_REALVIEW_PBX_A9_BSP_H */
Index: c/src/lib/libbsp/arm/realview-pbx-a9/include/irq.h
===================================================================
--- c/src/lib/libbsp/arm/realview-pbx-a9/include/irq.h	(revision a91dc98b5ad5ee9bc8d592c62753a467daf4e711)
+++ c/src/lib/libbsp/arm/realview-pbx-a9/include/irq.h	(revision a91dc98b5ad5ee9bc8d592c62753a467daf4e711)
@@ -0,0 +1,90 @@
+/*
+ * Copyright (c) 2013 embedded brains GmbH.  All rights reserved.
+ *
+ *  embedded brains GmbH
+ *  Dornierstr. 4
+ *  82178 Puchheim
+ *  Germany
+ *  <info@embedded-brains.de>
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rtems.com/license/LICENSE.
+ */
+
+#ifndef LIBBSP_ARM_REALVIEW_PBX_A9_IRQ_H
+#define LIBBSP_ARM_REALVIEW_PBX_A9_IRQ_H
+
+#ifndef ASM
+
+#include <rtems/irq.h>
+#include <rtems/irq-extension.h>
+
+#include <bsp/arm-a9mpcore-irq.h>
+#include <bsp/arm-gic-irq.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+#define RVPBXA9_IRQ_WATCHDOG_0 32
+#define RVPBXA9_IRQ_SW_IRQ 33
+#define RVPBXA9_IRQ_TIMER_0_1 36
+#define RVPBXA9_IRQ_TIMER_2_3 37
+#define RVPBXA9_IRQ_GPIO_0 38
+#define RVPBXA9_IRQ_GPIO_1 39
+#define RVPBXA9_IRQ_GPIO_2 40
+#define RVPBXA9_IRQ_RTC 42
+#define RVPBXA9_IRQ_SSP 43
+#define RVPBXA9_IRQ_UART_0 44
+#define RVPBXA9_IRQ_UART_1 45
+#define RVPBXA9_IRQ_UART_2 46
+#define RVPBXA9_IRQ_UART_3 47
+#define RVPBXA9_IRQ_SCI 48
+#define RVPBXA9_IRQ_MCI_A 49
+#define RVPBXA9_IRQ_MCI_B 50
+#define RVPBXA9_IRQ_AACI 51
+#define RVPBXA9_IRQ_KMI0 52
+#define RVPBXA9_IRQ_KMI1 53
+#define RVPBXA9_IRQ_CLCD 55
+#define RVPBXA9_IRQ_DMAC 56
+#define RVPBXA9_IRQ_PWRFAIL 57
+#define RVPBXA9_IRQ_CF_INT 59
+#define RVPBXA9_IRQ_ETHERNET 60
+#define RVPBXA9_IRQ_USB 61
+#define RVPBXA9_IRQ_T1_INT_0 64
+#define RVPBXA9_IRQ_T1_INT_1 65
+#define RVPBXA9_IRQ_T1_INT_2 66
+#define RVPBXA9_IRQ_T1_INT_3 67
+#define RVPBXA9_IRQ_T1_INT_4 68
+#define RVPBXA9_IRQ_T1_INT_5 69
+#define RVPBXA9_IRQ_T1_INT_6 70
+#define RVPBXA9_IRQ_T1_INT_7 71
+#define RVPBXA9_IRQ_WATCHDOG_1 72
+#define RVPBXA9_IRQ_TIMER_4_5 73
+#define RVPBXA9_IRQ_TIMER_6_7 74
+#define RVPBXA9_IRQ_PCI_INTR 80
+#define RVPBXA9_IRQ_P_NMI 81
+#define RVPBXA9_IRQ_P_NINT_0 82
+#define RVPBXA9_IRQ_P_NINT_1 83
+#define RVPBXA9_IRQ_P_NINT_2 84
+#define RVPBXA9_IRQ_P_NINT_3 85
+#define RVPBXA9_IRQ_P_NINT_4 86
+#define RVPBXA9_IRQ_P_NINT_5 87
+#define RVPBXA9_IRQ_P_NINT_6 88
+#define RVPBXA9_IRQ_P_NINT_7 89
+
+#define BSP_INTERRUPT_VECTOR_MIN 0
+#define BSP_INTERRUPT_VECTOR_MAX 89
+
+#define BSP_ARM_GIC_CPUIF_BASE 0x1f000100
+
+#define BSP_ARM_GIC_DIST_BASE 0x1f001000
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* ASM */
+
+#endif /* LIBBSP_ARM_REALVIEW_PBX_A9_IRQ_H */
Index: c/src/lib/libbsp/arm/realview-pbx-a9/include/tm27.h
===================================================================
--- c/src/lib/libbsp/arm/realview-pbx-a9/include/tm27.h	(revision a91dc98b5ad5ee9bc8d592c62753a467daf4e711)
+++ c/src/lib/libbsp/arm/realview-pbx-a9/include/tm27.h	(revision a91dc98b5ad5ee9bc8d592c62753a467daf4e711)
@@ -0,0 +1,81 @@
+/*
+ * Copyright (c) 2013 embedded brains GmbH.  All rights reserved.
+ *
+ *  embedded brains GmbH
+ *  Dornierstr. 4
+ *  82178 Puchheim
+ *  Germany
+ *  <info@embedded-brains.de>
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rtems.com/license/LICENSE.
+ */
+
+#ifndef _RTEMS_TMTEST27
+#error "This is an RTEMS internal file you must not include directly."
+#endif
+
+#ifndef __tm27_h
+#define __tm27_h
+
+#include <assert.h>
+
+#include <bsp.h>
+#include <bsp/irq.h>
+
+#define MUST_WAIT_FOR_INTERRUPT 1
+
+#define RVPBXA9_TM27_IRQ ARM_GIC_IRQ_SGI_13
+
+#define RVPBXA9_TM27_PRIO_LOW 0xfe
+
+#define RVPBXA9_TM27_PRIO_HIGH 0x00
+
+static void Install_tm27_vector(void (*handler)(rtems_vector_number))
+{
+  rtems_status_code sc = rtems_interrupt_handler_install(
+    RVPBXA9_TM27_IRQ,
+    "TM27",
+    RTEMS_INTERRUPT_UNIQUE,
+    (rtems_interrupt_handler) handler,
+    NULL
+  );
+  assert(sc == RTEMS_SUCCESSFUL);
+
+  sc = arm_gic_irq_set_priority(
+    RVPBXA9_TM27_IRQ,
+    RVPBXA9_TM27_PRIO_LOW
+  );
+  assert(sc == RTEMS_SUCCESSFUL);
+}
+
+static void Cause_tm27_intr(void)
+{
+  rtems_status_code sc = arm_gic_irq_generate_software_irq(
+    RVPBXA9_TM27_IRQ,
+    ARM_GIC_IRQ_SOFTWARE_IRQ_TO_SELF,
+    0
+  );
+  assert(sc == RTEMS_SUCCESSFUL);
+}
+
+static void Clear_tm27_intr(void)
+{
+  rtems_status_code sc = arm_gic_irq_set_priority(
+    RVPBXA9_TM27_IRQ,
+    RVPBXA9_TM27_PRIO_LOW
+  );
+  assert(sc == RTEMS_SUCCESSFUL);
+}
+
+static void Lower_tm27_intr(void)
+{
+  rtems_status_code sc = arm_gic_irq_set_priority(
+    RVPBXA9_TM27_IRQ,
+    RVPBXA9_TM27_PRIO_HIGH
+  );
+  assert(sc == RTEMS_SUCCESSFUL);
+}
+
+#endif /* __tm27_h */
