From 3195459c67e88af9c70a89e4d456d248e361575c Mon Sep 17 00:00:00 2001 From: Alejandro Soto Date: Thu, 23 May 2024 20:22:48 -0600 Subject: rtl/gfx/firmware: implement firmware stub --- rtl/gfx/firmware/start.S | 64 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 rtl/gfx/firmware/start.S (limited to 'rtl/gfx/firmware/start.S') diff --git a/rtl/gfx/firmware/start.S b/rtl/gfx/firmware/start.S new file mode 100644 index 0000000..c696119 --- /dev/null +++ b/rtl/gfx/firmware/start.S @@ -0,0 +1,64 @@ +.section .text.init.enter +.global _start + +_start: + li t0, 0x4a7a7b0c + beq a0, t0, _magic_ok + ret + +_magic_ok: + lui t0, %hi(__img_start) + addi t0, t0, %lo(__img_start) + la t1, __img_start + la t2, _early_copy_end + sub t2, t2, t1 + +_early_copy_loop: + lw t3, 0(t1) + sw t3, 0(t0) + addi t0, t0, 4 + addi t1, t1, 4 + addi t2, t2, -4 + bgtz t2, _early_copy_loop + + lui t2, %hi(_running_on_ram) + addi t2, t2, %lo(_running_on_ram) + jr t2 + +_running_on_ram: + la t2, __img_end + sub t2, t2, t0 + +_full_copy_loop: + lw t3, 0(t1) + lw t4, 4(t1) + lw t5, 8(t1) + lw t6, 12(t1) + sw t3, 0(t0) + sw t4, 4(t0) + sw t5, 8(t0) + sw t6, 12(t0) + addi t0, t0, 16 + addi t1, t1, 16 + addi t2, t2, -16 + bgtz t2, _full_copy_loop + +.balign 4 +_early_copy_end: + la t0, __bss_start + la t2, __bss_end + sub t2, t2, t0 + +_clear_bss_loop: + sw zero, 0(t0) + sw zero, 4(t0) + sw zero, 8(t0) + sw zero, 12(t0) + addi t0, t0, 16 + addi t2, t2, -16 + bgtz t2, _clear_bss_loop + +_start_done: + la sp, __stack + call main + j . -- cgit v1.2.3