aboutsummaryrefslogtreecommitdiff
path: root/debug/programs
diff options
context:
space:
mode:
authorTim Newsome <tim@sifive.com>2022-04-25 08:05:08 -0700
committerGitHub <noreply@github.com>2022-04-25 08:05:08 -0700
commit4f37484c91fe97c9cca7e0ca6cfe98c63c365a12 (patch)
tree219a00d051dd3500e5006a7737aca3188846e615 /debug/programs
parent2285a9083adf587507aa12802ce0ff763628ce9e (diff)
downloadriscv-tests-4f37484c91fe97c9cca7e0ca6cfe98c63c365a12.zip
riscv-tests-4f37484c91fe97c9cca7e0ca6cfe98c63c365a12.tar.gz
riscv-tests-4f37484c91fe97c9cca7e0ca6cfe98c63c365a12.tar.bz2
Add EbreakTest. (#380)
* Add EbreakTest. Confirm correct behavior when somebody bakes an ebreak instruction into their code. * Forgot to commit ebreak.c
Diffstat (limited to 'debug/programs')
-rw-r--r--debug/programs/ebreak.c31
1 files changed, 31 insertions, 0 deletions
diff --git a/debug/programs/ebreak.c b/debug/programs/ebreak.c
new file mode 100644
index 0000000..466c4e7
--- /dev/null
+++ b/debug/programs/ebreak.c
@@ -0,0 +1,31 @@
+#include <stdint.h>
+
+void ebreak()
+{
+ asm volatile("ebreak");
+}
+
+unsigned int fib(unsigned int n)
+{
+ if (n == 0) {
+ return 0;
+ }
+
+ unsigned int a = 0;
+ unsigned int b = 1;
+
+ for (unsigned int i = 1; i < n; i++) {
+ unsigned int next = a + b;
+ a = b;
+ b = next;
+ ebreak();
+ }
+
+ return b;
+}
+
+int main()
+{
+begin:
+ fib(4);
+}