summaryrefslogtreecommitdiff
path: root/c/randomnumbers
diff options
context:
space:
mode:
Diffstat (limited to 'c/randomnumbers')
-rw-r--r--c/randomnumbers/Makefile20
-rw-r--r--c/randomnumbers/randomnumbers.c14
-rwxr-xr-xc/randomnumbers/randomnumbers.elfbin0 -> 6288 bytes
-rw-r--r--c/randomnumbers/randomnumbers.hex13
-rw-r--r--c/randomnumbers/randomnumbers.obin0 -> 1420 bytes
-rw-r--r--c/randomnumbers/rvcontroller.ld45
6 files changed, 92 insertions, 0 deletions
diff --git a/c/randomnumbers/Makefile b/c/randomnumbers/Makefile
new file mode 100644
index 0000000..4fa36c6
--- /dev/null
+++ b/c/randomnumbers/Makefile
@@ -0,0 +1,20 @@
+all: randomnumbers.hex
+
+randomnumbers.o: randomnumbers.c
+ clang -target riscv32-none-elf -I../rvcontroller-libraries -march=rv32imacb_zicntr_zicond_zicsr_zifencei_zihintpause_zilsd_zclsd_zabha_zacas_zbkb_zbkx_zcb_zcmp_zcmt -ffreestanding -O3 -c -o randomnumbers.o randomnumbers.c
+
+randomnumbers.elf: ../rvcontroller-libraries/rvcontroller-init.o ../rvcontroller-libraries/rvcontroller-ecalls.o randomnumbers.o
+ clang -target riscv32-none-elf -T rvcontroller.ld -nostdlib -nostartfiles -Xlinker --no-warn-rwx-segments -o randomnumbers.elf ../rvcontroller-libraries/rvcontroller-init.o randomnumbers.o ../rvcontroller-libraries/rvcontroller-ecalls.o
+
+dump: randomnumbers.elf
+ riscv32-none-elf-objdump -d randomnumbers.elf
+
+randomnumbers.hex: randomnumbers.elf
+ riscv32-none-elf-objcopy -O ihex randomnumbers.elf randomnumbers.hex
+
+load: randomnumbers.hex
+ bash -c "wl-copy < randomnumbers.hex"
+
+clean:
+ rm -f randomnumbers.hex randomnumbers.elf randomnumbers.o init.o
+
diff --git a/c/randomnumbers/randomnumbers.c b/c/randomnumbers/randomnumbers.c
new file mode 100644
index 0000000..b0e0d13
--- /dev/null
+++ b/c/randomnumbers/randomnumbers.c
@@ -0,0 +1,14 @@
+/* Random Number Thing for RVController
+ * A product of Advanced Mesecons Devices, a Cheapie Systems company
+ * This is free and unencumbered software released into the public domain.
+ * See http://unlicense.org/ for more information */
+
+#include <stdint.h>
+#include "rvcontroller-ecalls.h"
+
+void main(void) {
+ for (;;) {
+ printint(randomint(0,999999));
+ printchar('\n');
+ }
+}
diff --git a/c/randomnumbers/randomnumbers.elf b/c/randomnumbers/randomnumbers.elf
new file mode 100755
index 0000000..d9ac97e
--- /dev/null
+++ b/c/randomnumbers/randomnumbers.elf
Binary files differ
diff --git a/c/randomnumbers/randomnumbers.hex b/c/randomnumbers/randomnumbers.hex
new file mode 100644
index 0000000..c61811b
--- /dev/null
+++ b/c/randomnumbers/randomnumbers.hex
@@ -0,0 +1,13 @@
+:10000000370101002920A94873000000828052B8FE
+:1000100037440F001304F4230145A2858D282120C5
+:1000200029451128D5BF854873000000828091487A
+:10003000730000008280AD48730000008280930846
+:1000400010087300000082809308500873000000BD
+:10005000828093087008730000008280732510C0AE
+:100060008280732500C082809308600873000000BE
+:1000700082800589F322008093920248B3E2A200B5
+:1000800073900280828095487300000082809308FC
+:100090000008730000008280A14873000000828085
+:1000A00093083008730000008280930840087300B2
+:0400B000000082804A
+:00000001FF
diff --git a/c/randomnumbers/randomnumbers.o b/c/randomnumbers/randomnumbers.o
new file mode 100644
index 0000000..b922158
--- /dev/null
+++ b/c/randomnumbers/randomnumbers.o
Binary files differ
diff --git a/c/randomnumbers/rvcontroller.ld b/c/randomnumbers/rvcontroller.ld
new file mode 100644
index 0000000..985892b
--- /dev/null
+++ b/c/randomnumbers/rvcontroller.ld
@@ -0,0 +1,45 @@
+/* Thanks https://github.com/darklife/darkriscv */
+ __heap_size = 0x200; /* required amount of heap */
+ __stack_size = 0x800; /* required amount of stack */
+ ENTRY(_start);
+ MEMORY
+ {
+ RAM (rwx) : ORIGIN = 0x00000000, LENGTH = 0x10000
+ }
+ SECTIONS
+ {
+ .text :
+ {
+ *(.text.startup)
+ *(.text)
+ *(.text)
+ *(.rodata*)
+ } > RAM
+ .data :
+ {
+ *(.sbss)
+ *(.data)
+ *(.bss)
+ *(.rela*)
+ *(COMMON)
+ } > RAM
+
+ .heap :
+ {
+ . = ALIGN(4);
+ PROVIDE ( end = . );
+ _sheap = .;
+ . = . + __heap_size;
+ . = ALIGN(4);
+ _eheap = .;
+ } >RAM
+
+ .stack :
+ {
+ . = ALIGN(4);
+ _estack = .;
+ . = . + __stack_size;
+ . = ALIGN(4);
+ _sstack = .;
+ } >RAM
+ }