summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--echo.S18
-rw-r--r--link.ld22
2 files changed, 40 insertions, 0 deletions
diff --git a/echo.S b/echo.S
new file mode 100644
index 0000000..58b2573
--- /dev/null
+++ b/echo.S
@@ -0,0 +1,18 @@
+.section .text
+.globl _start
+
+.equ UART_DATA, 0
+.equ UART_STATUS, 1
+.equ UART_RX_READY = 0b10
+.equ UART_TX_READY = 0b01
+
+_start:
+ li a0, 0x1000
+
+loop:
+ lbu t0, UART_STATUS(a0)
+ andi t0, t0, UART_RX_READY
+ beqz t0, loop
+ lbu t0, UART_DATA(a0)
+ sb t0, UART_DATA(a0)
+ j loop
diff --git a/link.ld b/link.ld
new file mode 100644
index 0000000..3868b23
--- /dev/null
+++ b/link.ld
@@ -0,0 +1,22 @@
+ENTRY(_start)
+
+SECTIONS {
+ . = 0x80000000;
+
+ .text : ALIGN(4) {
+ *(.text*)
+ }
+
+ .rodata : ALIGN(8) {
+ *(.rodata*)
+ }
+
+ .data : ALIGN(8) {
+ *(.data*)
+ }
+
+ .bss : ALIGN(8) {
+ *(.bss*)
+ *(COMMON)
+ }
+}