aboutsummaryrefslogtreecommitdiff
path: root/pk/sbi_impl.c
diff options
context:
space:
mode:
authorAndrew Waterman <waterman@cs.berkeley.edu>2015-03-12 17:38:04 -0700
committerAndrew Waterman <waterman@cs.berkeley.edu>2015-03-12 17:38:04 -0700
commit6517fe26a2a0c89c3112f4a383c601572c71d64a (patch)
treed37eea7ae6f3e15eee94afb5c9c749a4cd800577 /pk/sbi_impl.c
parenta4ae7da6ef0c09c2616a0b82f7f569e4e134f75c (diff)
downloadriscv-pk-6517fe26a2a0c89c3112f4a383c601572c71d64a.zip
riscv-pk-6517fe26a2a0c89c3112f4a383c601572c71d64a.tar.gz
riscv-pk-6517fe26a2a0c89c3112f4a383c601572c71d64a.tar.bz2
Update to new privileged spec
Diffstat (limited to 'pk/sbi_impl.c')
-rw-r--r--pk/sbi_impl.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/pk/sbi_impl.c b/pk/sbi_impl.c
new file mode 100644
index 0000000..03a56bc
--- /dev/null
+++ b/pk/sbi_impl.c
@@ -0,0 +1,23 @@
+#include "pk.h"
+#include "vm.h"
+#include "frontend.h"
+#include "sbi.h"
+#include "mcall.h"
+#include <errno.h>
+
+#define sbi_printk(str, ...) ({ \
+ char buf[1024]; /* XXX */ \
+ sprintk(buf, str, __VA_ARGS__); \
+ for (size_t i = 0; buf[i]; i++) \
+ do_mcall(MCALL_CONSOLE_PUTCHAR, buf[i]); })
+
+uintptr_t __sbi_query_memory(uintptr_t id, memory_block_info *p)
+{
+ if (id == 0) {
+ p->base = current.first_free_paddr;
+ p->size = mem_size - p->base;
+ return 0;
+ }
+
+ return -1;
+}