summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libcpu/powerpc/shared
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2013-08-01 16:36:55 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2013-08-09 23:02:43 +0200
commitc6c998b000afa2a221de6dc02a82a36f5652ef06 (patch)
treebc1fe5e4c178af4d0a1693e50109a6557c96a822 /c/src/lib/libcpu/powerpc/shared
parentscore: Per-CPU thread dispatch disable level (diff)
downloadrtems-c6c998b000afa2a221de6dc02a82a36f5652ef06.tar.bz2
bsps/powerpc: Per-CPU thread dispatch disable
Interrupt support for per-CPU thread dispatch disable level.
Diffstat (limited to 'c/src/lib/libcpu/powerpc/shared')
-rw-r--r--c/src/lib/libcpu/powerpc/shared/include/powerpc-utility.h26
1 files changed, 20 insertions, 6 deletions
diff --git a/c/src/lib/libcpu/powerpc/shared/include/powerpc-utility.h b/c/src/lib/libcpu/powerpc/shared/include/powerpc-utility.h
index 71567d5814..3994255080 100644
--- a/c/src/lib/libcpu/powerpc/shared/include/powerpc-utility.h
+++ b/c/src/lib/libcpu/powerpc/shared/include/powerpc-utility.h
@@ -8,12 +8,13 @@
*/
/*
- * Copyright (c) 2008, 2010, 2011
- * Embedded Brains GmbH
- * Obere Lagerstr. 30
- * D-82178 Puchheim
- * Germany
- * rtems@embedded-brains.de
+ * Copyright (c) 2008-2013 embedded brains GmbH.
+ *
+ * embedded brains GmbH
+ * Dornierstr. 4
+ * 82178 Puchheim
+ * Germany
+ * <rtems@embedded-brains.de>
*
* access function for Device Control Registers inspired by "ppc405common.h"
* from Michael Hamel ADInstruments May 2008
@@ -893,6 +894,19 @@ void ppc_code_copy(void *dest, const void *src, size_t n);
mtmsr \level
.endm
+.macro GET_SELF_CPU_CONTROL reg
+#if defined(RTEMS_SMP)
+ /* Use Book E Processor ID Register (PIR) */
+ mfspr \reg, 286
+ slwi \reg, \reg, PER_CPU_CONTROL_SIZE_LOG2
+ addis \reg, \reg, _Per_CPU_Information@ha
+ addi \reg, \reg, _Per_CPU_Information@l
+#else
+ lis \reg, _Per_CPU_Information@h
+ ori \reg, \reg, _Per_CPU_Information@l
+#endif
+.endm
+
#define LINKER_SYMBOL(sym) .extern sym
#endif /* ASM */