diff options
author | Andrew Waterman <waterman@cs.berkeley.edu> | 2015-03-12 17:38:04 -0700 |
---|---|---|
committer | Andrew Waterman <waterman@cs.berkeley.edu> | 2015-03-12 17:38:04 -0700 |
commit | 6517fe26a2a0c89c3112f4a383c601572c71d64a (patch) | |
tree | d37eea7ae6f3e15eee94afb5c9c749a4cd800577 /pk/sbi_impl.c | |
parent | a4ae7da6ef0c09c2616a0b82f7f569e4e134f75c (diff) | |
download | riscv-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.c | 23 |
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; +} |