== code 0x80400000 # main: # print device tree info. # OpenSBI calls us with a1 set to the start of the DTB # load 0x10000000 (UART0) into a0 37 05 00 10 93 8a 05 00 # check magic == 0xd00dfeed 37 13 fe ed 13 03 03 dd 83 a2 0a 00 63 9c 62 02 b7 05 50 80 93 85 45 01 ef 00 80 08 83 a5 4a 00 ef 00 40 03 ef 00 00 0a ef 00 00 06 # exit: # system reset (via SBI extension SRST) # a7 = ext id, a6 = fid, a0 = 0, a1 = 0 b7 58 52 53 93 88 48 35 33 08 00 00 33 05 00 00 b3 05 00 00 # ECALL 73 00 00 00 # err_magic: b7 05 50 80 93 85 05 00 ef 00 40 05 6f f0 df fd # bswapw: # byte-order-swap word in a1 # srli a1, a0, 8 # lui a2, 16 # addi a2, a2, -256 # and a1, a1, a2 93 d2 85 00 37 63 01 00 13 03 03 f0 b3 f2 62 00 # srli a2, a0, 24 # or a1, a1, a2 13 d3 85 01 b3 e2 62 00 # slli a2, a0, 8 # lui a3, 4080 # and a2, a2, a3 13 93 85 00 b7 03 ff 00 33 73 73 00 # slli a0, a0, 24 # or a0, a0, a2 # or a0, a0, a1 93 95 85 01 b3 e5 65 00 b3 e5 55 00 # ret 67 80 00 00 # printnl: 13 03 a0 00 # printnl:spin: # spin if FIFO is full (thr_emtpy = UART+5 & 0x20) 83 43 55 00 93 f3 03 02 e3 8c 03 fe # print char 23 20 65 00 # return 67 80 00 00 # print: # print:loop: # load unsigned byte at a1 03 c3 05 00 # break loop if zero 63 0e 03 00 # print:spin: # spin if FIFO is full (thr_emtpy = UART+5 & 0x20) 83 43 55 00 93 f3 03 02 e3 8c 03 fe # print char 23 20 65 00 # increment a1 93 85 15 00 # jump back up 6f f0 5f fe # print:break: # return 67 80 00 00 # print_hex_word: 13 84 05 00 93 04 c0 01 13 89 00 00 # print_hex_word:loop: # shift b3 55 94 00 ef 00 40 01 # break if last shift 63 86 04 00 # subtract shift count, loop 93 84 c4 ff 6f f0 1f ff # print_hex_word:break: # return 67 00 09 00 # print_hex_dgt: # a1 = a1 & 0xf 93 f5 f5 00 # t1 = 0x40 13 03 00 04 # add 0x30 (ascii '0') / 0x61 (ascii 'a') 93 85 05 03 63 c4 65 00 93 85 75 02 # print_hex_dgt:spin: # spin if FIFO is full (thr_emtpy = UART+5 & 0x20) 83 43 55 00 93 f3 03 02 e3 8c 03 fe # print char 23 20 b5 00 # return 67 80 00 00 == data 0x80500000 # E_MAGIC: # "Invalid DTB magic!\n\0" 49 6e 76 61 6c 69 64 20 44 54 42 20 6d 61 67 69 63 21 0a 00 # S_TOTALSZ: 54 6f 74 61 6c 20 53 69 7a 65 3a 20 00