.section .text.init .global _entry _entry: # Configura o tratador de interrupções la t0, MEI_handler # Grava o endereço do rótulo trap_handler csrw mtvec, t0 # no registrador mtvec li t3, 0xffffffff # Habilita todas as interrupções externas la t4, 0x70000008 # endereço do registrador ie sw t3, 0(t4) # Habilita Interrupções Global li t1, 0x80 # Seta o bit 7 (MPIE) csrs mstatus, t1 # do registrador mstatus # Habilita Interrupções Externas li t2, 0x800 # Seta os bits 11, 7 e 3 (MEIE, MTIE e MSIE) csrs mie, t2 # do registrador mie la t0, loop # Grava o endereço do rótulo main csrw mepc, t0 # no registrador mepc mret loop: j loop .align 4 MEI_handler: li t1, 0x80005000 # uart_rx lw t2, 0(t1) # byte recebido li a1,0x80001000 # uart_tx sw t2,0(a1) # byte recebido j return return: mret .end: li s10, 0x80000000 # this will interrupt the simulation (assertion) sw zero, 0(s10) jal zero, .end