Added basic SBI support

This commit is contained in:
2023-10-11 19:48:01 +02:00
parent 31941c0813
commit d7e684ad91
5 changed files with 43 additions and 2 deletions
+27
View File
@@ -0,0 +1,27 @@
#include "sbi.h"
#include <stdio.h>
void sbi_call(rv32_cpu_t* cpu, uint32_t extension_id, uint32_t func_id)
{
switch(extension_id)
{
case SBI_EXTENSION_LEGACY_CONSOLE_PUTCHAR:
{
printf("%c", cpu->regs.a0);
cpu->regs.a0 = 0;
break;
}
case SBI_EXTENSION_LEGACY_SHUTDOWN:
{
printf("sbi_call: shutdown, goodbye !\n");
cpu->sim_ticks_left = 1;
break;
}
default:
{
fprintf(stderr, "sbi_call: unknown extension id 0x%x\n", extension_id);
break;
}
}
}
+11
View File
@@ -0,0 +1,11 @@
#ifndef SBI_H
#define SBI_H
#include "cpu/rv32cpu.h"
#define SBI_EXTENSION_LEGACY_CONSOLE_PUTCHAR 0x1
#define SBI_EXTENSION_LEGACY_SHUTDOWN 0x8
void sbi_call(rv32_cpu_t* cpu, uint32_t extension_id, uint32_t func_id);
#endif