Added noreturn, removed logs

master
vhaudiquet 1 year ago
parent 5727356559
commit ce89df1ed4
  1. 8
      src/cpu/rv32cpu.c
  2. 2
      src/cpu/rv32cpu.h

@ -501,7 +501,7 @@ static void cpu_execute(rv32_cpu_t* cpu, instruction_t* instruction)
case OPCODE_NOP:
{
// TODO : Implement PAUSE, FENCE, FENCE.TSO
fprintf(stderr, "Warning: Unsupported NOP instruction\n");
// fprintf(stderr, "Warning: Unsupported NOP instruction\n");
break;
}
case OPCODE_SYSTEM:
@ -602,14 +602,14 @@ static void cpu_execute(rv32_cpu_t* cpu, instruction_t* instruction)
// Load-Reserved Word
cpu->regs.x[instruction->rd] = mem_read32(address);
// TODO register reservation set that subsumes the bytes in word
fprintf(stderr, "LR.W\n");
// fprintf(stderr, "LR.W\n");
break;
case FUNC75_SCW:
// Store-Conditional Word
// TODO succeed only if the reservation is still valid and the reservation set contains the bytes written
mem_write32(address, cpu->regs.x[instruction->rs2]);
cpu->regs.x[instruction->rd] = 0; // TODO write 1 in rd on failure
fprintf(stderr, "SC.W\n");
// fprintf(stderr, "SC.W\n");
break;
case FUNC75_AMOSWAPW:
// Atomic Memory Operation SWAP Word
@ -681,7 +681,7 @@ static void cpu_execute(rv32_cpu_t* cpu, instruction_t* instruction)
}
}
void cpu_loop(rv32_cpu_t* cpu)
__attribute__((noreturn)) void cpu_loop(rv32_cpu_t* cpu)
{
while(1)
{

@ -201,6 +201,6 @@ typedef struct RV32_CPU
extern rv32_cpu_t* cpu0;
extern pthread_mutex_t cpu0_mutex;
void cpu_init();
void cpu_loop(rv32_cpu_t* cpu);
__attribute__((noreturn)) void cpu_loop(rv32_cpu_t* cpu);
#endif

Loading…
Cancel
Save