aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/priv_gpio.h26
1 files changed, 26 insertions, 0 deletions
diff --git a/include/priv_gpio.h b/include/priv_gpio.h
new file mode 100644
index 0000000..eee5e18
--- /dev/null
+++ b/include/priv_gpio.h
@@ -0,0 +1,26 @@
+#ifndef PRIV_GPIO_H_
+#define PRIV_GPIO_H_
+
+#define GPIO_MODE 0
+#define GPIO_TYPE 1
+#define GPIO_PUPD 2
+#define GPIO_SPEED 3
+#define GPIO_OUT 4
+
+void gpio(uint32_t call, uint32_t port, uint32_t pin, uint32_t value)
+{
+ register uint32_t r0 asm("r0") = call;
+ register uint32_t r1 asm("r1") = port;
+ register uint32_t r2 asm("r2") = pin;
+ register uint32_t r3 asm("r3") = value;
+
+ asm("\
+ mov r0, %0; \
+ mov r1, %1; \
+ mov r2, %2; \
+ mov r3, %3; \
+ svc 1; \
+ " :: "r" (r0), "r" (r1), "r" (r2), "r" (r3));
+}
+
+#endif // PRIV_GPIO_H_