Added noreturn, removed logs
This commit is contained in:
parent
5727356559
commit
ce89df1ed4
@ -501,7 +501,7 @@ static void cpu_execute(rv32_cpu_t* cpu, instruction_t* instruction)
|
|||||||
case OPCODE_NOP:
|
case OPCODE_NOP:
|
||||||
{
|
{
|
||||||
// TODO : Implement PAUSE, FENCE, FENCE.TSO
|
// TODO : Implement PAUSE, FENCE, FENCE.TSO
|
||||||
fprintf(stderr, "Warning: Unsupported NOP instruction\n");
|
// fprintf(stderr, "Warning: Unsupported NOP instruction\n");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case OPCODE_SYSTEM:
|
case OPCODE_SYSTEM:
|
||||||
@ -602,14 +602,14 @@ static void cpu_execute(rv32_cpu_t* cpu, instruction_t* instruction)
|
|||||||
// Load-Reserved Word
|
// Load-Reserved Word
|
||||||
cpu->regs.x[instruction->rd] = mem_read32(address);
|
cpu->regs.x[instruction->rd] = mem_read32(address);
|
||||||
// TODO register reservation set that subsumes the bytes in word
|
// TODO register reservation set that subsumes the bytes in word
|
||||||
fprintf(stderr, "LR.W\n");
|
// fprintf(stderr, "LR.W\n");
|
||||||
break;
|
break;
|
||||||
case FUNC75_SCW:
|
case FUNC75_SCW:
|
||||||
// Store-Conditional Word
|
// Store-Conditional Word
|
||||||
// TODO succeed only if the reservation is still valid and the reservation set contains the bytes written
|
// 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]);
|
mem_write32(address, cpu->regs.x[instruction->rs2]);
|
||||||
cpu->regs.x[instruction->rd] = 0; // TODO write 1 in rd on failure
|
cpu->regs.x[instruction->rd] = 0; // TODO write 1 in rd on failure
|
||||||
fprintf(stderr, "SC.W\n");
|
// fprintf(stderr, "SC.W\n");
|
||||||
break;
|
break;
|
||||||
case FUNC75_AMOSWAPW:
|
case FUNC75_AMOSWAPW:
|
||||||
// Atomic Memory Operation SWAP Word
|
// 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)
|
while(1)
|
||||||
{
|
{
|
||||||
|
@ -201,6 +201,6 @@ typedef struct RV32_CPU
|
|||||||
extern rv32_cpu_t* cpu0;
|
extern rv32_cpu_t* cpu0;
|
||||||
extern pthread_mutex_t cpu0_mutex;
|
extern pthread_mutex_t cpu0_mutex;
|
||||||
void cpu_init();
|
void cpu_init();
|
||||||
void cpu_loop(rv32_cpu_t* cpu);
|
__attribute__((noreturn)) void cpu_loop(rv32_cpu_t* cpu);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
x
Reference in New Issue
Block a user