Added noreturn, removed logs
This commit is contained in:
		@@ -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
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user