summaryrefslogtreecommitdiff
path: root/c/inline/inline.c
diff options
context:
space:
mode:
authorcheapie <cheapiephp@gmail.com>2026-10-30 09:09:20 -0500
committercheapie <cheapiephp@gmail.com>2026-10-30 09:09:20 -0500
commita16b984f06ca52be0785073ee2c21fcae301fff3 (patch)
tree78dd6761af6088d27e791a533bcb73a974cb3c89 /c/inline/inline.c
parent1feb4eefe87b555a64d51e08eca7315b30521345 (diff)
downloadrvcontroller-a16b984f06ca52be0785073ee2c21fcae301fff3.tar
rvcontroller-a16b984f06ca52be0785073ee2c21fcae301fff3.tar.gz
rvcontroller-a16b984f06ca52be0785073ee2c21fcae301fff3.tar.bz2
rvcontroller-a16b984f06ca52be0785073ee2c21fcae301fff3.tar.xz
rvcontroller-a16b984f06ca52be0785073ee2c21fcae301fff3.zip
Add console interrupt support
Diffstat (limited to 'c/inline/inline.c')
-rw-r--r--c/inline/inline.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/c/inline/inline.c b/c/inline/inline.c
new file mode 100644
index 0000000..c8db8e3
--- /dev/null
+++ b/c/inline/inline.c
@@ -0,0 +1,25 @@
+#include <stdint.h>
+#include <stdbool.h>
+#include "rvcontroller-ecalls.h"
+
+volatile char thischar;
+
+volatile uint32_t nonblocking_read() {
+ volatile uint32_t ret;
+ asm(
+ "li a7,132 \n\
+ ecall \n\
+ mv %0,a0 \n"
+ : "=r" (ret)
+ :
+ : "a0"
+ );
+ return ret;
+}
+
+void main() {
+ while (true) {
+ thischar = nonblocking_read();
+ //printint(thischar);
+ }
+}