summaryrefslogtreecommitdiff
path: root/nuttx/arch/arm/src/common/up_arch.h
diff options
context:
space:
mode:
Diffstat (limited to 'nuttx/arch/arm/src/common/up_arch.h')
-rw-r--r--nuttx/arch/arm/src/common/up_arch.h23
1 files changed, 20 insertions, 3 deletions
diff --git a/nuttx/arch/arm/src/common/up_arch.h b/nuttx/arch/arm/src/common/up_arch.h
index 1ad0381ed..71a33bb3e 100644
--- a/nuttx/arch/arm/src/common/up_arch.h
+++ b/nuttx/arch/arm/src/common/up_arch.h
@@ -82,11 +82,28 @@ static inline void putreg16(uint16 val, unsigned int addr)
__asm__ __volatile__("\tstrh %0, [%1]\n\t": : "r"(val), "r"(addr));
}
-/* Most DM320 registers are 16-bits wide */
+/****************************************************************************
+ * Public Function Prototypes
+ ****************************************************************************/
+
+#undef EXTERN
+#if defined(__cplusplus)
+#define EXTERN extern "C"
+extern "C" {
+#else
+#define EXTERN extern
+#endif
+
+/* Atomic modification of registers */
-#define getreg(a) getreg16(a)
-#define putreg(v,a) putreg16(v,a)
+EXTERN void modifyreg8(unsigned int addr, ubyte clearbits, ubyte setbits);
+EXTERN void modifyreg16(unsigned int addr, uint16 clearbits, uint16 setbits);
+EXTERN void modifyreg32(unsigned int addr, uint32 clearbits, uint32 setbits);
+#undef EXTERN
+#if defined(__cplusplus)
+}
#endif
+#endif /* __ASSEMBLY__ */
#endif /* ___ARCH_ARM_SRC_COMMON_UP_ARCH_H */