aboutsummaryrefslogtreecommitdiff
path: root/pk/riscv-pk.c
diff options
context:
space:
mode:
authorAndrew Waterman <waterman@s144.Millennium.Berkeley.EDU>2011-04-15 15:52:00 -0700
committerAndrew Waterman <waterman@s144.Millennium.Berkeley.EDU>2011-04-15 15:52:00 -0700
commit0d603acb91f455adb879ea45fdb84313067f4293 (patch)
treec74a7524a52e898237446e0c2da55ac9be06f51c /pk/riscv-pk.c
parentba0cf0546686acac7e891d9740009bcc4ada73ee (diff)
downloadpk-0d603acb91f455adb879ea45fdb84313067f4293.zip
pk-0d603acb91f455adb879ea45fdb84313067f4293.tar.gz
pk-0d603acb91f455adb879ea45fdb84313067f4293.tar.bz2
[pk] load pk at addr 0; user stack top = MEMSIZE
Diffstat (limited to 'pk/riscv-pk.c')
-rw-r--r--pk/riscv-pk.c32
1 files changed, 0 insertions, 32 deletions
diff --git a/pk/riscv-pk.c b/pk/riscv-pk.c
deleted file mode 100644
index 0af487d..0000000
--- a/pk/riscv-pk.c
+++ /dev/null
@@ -1,32 +0,0 @@
-#include "pcr.h"
-#include "pk.h"
-
-void __attribute__((section(".boottext"))) __start()
-{
- extern char stack_top;
- asm volatile("move $sp,%0" : : "r"(&stack_top-64) : "memory");
-
- extern char trap_entry;
- register void* te = &trap_entry;
- mtpcr(te,PCR_EVEC);
-
- mtpcr(0,PCR_COUNT);
- mtpcr(0,PCR_COMPARE);
-
- register long sr0 = SR_S | SR_PS | SR_ET | SR_IM | SR_EC;
- if(sizeof(void*) == 8)
- sr0 |= SR_SX;
-
- mtpcr(sr0 | SR_EF, PCR_SR);
- have_fp = mfpcr(PCR_SR) & SR_EF;
- mtpcr(sr0, PCR_SR);
-
- mtpcr(sr0 | SR_EV, PCR_SR);
- have_vector = mfpcr(PCR_SR) & SR_EV;
- mtpcr(sr0, PCR_SR);
-
- extern void boot();
- register void (*boot_p)() = &boot;
- asm("" : "=r"(boot_p) : "0"(boot_p));
- boot_p();
-}