aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Waterman <waterman@s141.Millennium.Berkeley.EDU>2010-08-03 20:48:02 -0700
committerAndrew Waterman <waterman@s141.Millennium.Berkeley.EDU>2010-08-03 20:48:02 -0700
commitb93785370d0be893e0a484ec22f1365db184dcce (patch)
tree4d2feed338dad348f69213bc655d7f49feadb2d0
parent8b9b445a198d40e7076ca88c5aa742cd3dc72bd4 (diff)
downloadpk-b93785370d0be893e0a484ec22f1365db184dcce.zip
pk-b93785370d0be893e0a484ec22f1365db184dcce.tar.gz
pk-b93785370d0be893e0a484ec22f1365db184dcce.tar.bz2
[pk,sim,xcc] Renamed instructions to RISC-V spec
All word-sized arithmetic operations are now postfixed with 'w', and all double-word-sized arithmetic operations are no longer prefixed with 'd'. mtc0/mfc0 are removed and replaced with mfpcr/mtpcr/mwfpcr/mwtpcr.
-rw-r--r--boot.S10
-rw-r--r--cop0.h11
-rw-r--r--entry.S10
-rw-r--r--frontend.c6
-rw-r--r--pcr.h11
5 files changed, 24 insertions, 24 deletions
diff --git a/boot.S b/boot.S
index 073f0f0..c74327a 100644
--- a/boot.S
+++ b/boot.S
@@ -5,17 +5,17 @@ __start:
# set up SR
li $t0, 0xFF
- dmtc0 $t0, $0
+ mtpcr $t0, $0
# set up trap table
- dla $t0, trap_table
- dmtc0 $t0, $3
+ la $t0, trap_table
+ mtpcr $t0, $3
# set up stack
- dla $sp,stack_top-64
+ la $sp,stack_top-64
# call into kernel
- dla $t0, boot
+ la $t0, boot
jr $t0
.end __start
diff --git a/cop0.h b/cop0.h
deleted file mode 100644
index 29456a0..0000000
--- a/cop0.h
+++ /dev/null
@@ -1,11 +0,0 @@
-#ifndef _RISCV_COP0_H
-#define _RISCV_COP0_H
-
-#define dmtc0(val,reg) ({ long __tmp = (long)(val); \
- asm volatile ("dmtc0 %0,$%1"::"r"(__tmp),"i"(reg)); })
-
-#define dmfc0(reg) ({ long __tmp; \
- asm volatile ("dmfc0 %0,$%1" : "=r"(__tmp) : "i"(reg)); \
- __tmp; })
-
-#endif
diff --git a/entry.S b/entry.S
index a50894a..ae76962 100644
--- a/entry.S
+++ b/entry.S
@@ -32,11 +32,11 @@ save_tf: # write the trap frame onto the stack
sd $30,240($k1)
sd $k0,248($k1) # $ra is actually in $k0
# get sr, epc, badvaddr
- dmfc0 $t0,$0 # sr
+ mfpcr $t0,$0 # sr
sd $t0,256($k1)
- dmfc0 $t0,$1 # epc
+ mfpcr $t0,$1 # epc
sd $t0,264($k1)
- dmfc0 $t0,$2 # badvaddr
+ mfpcr $t0,$2 # badvaddr
sd $t0,272($k1)
jr $ra
@@ -77,7 +77,7 @@ pop_tf: # write the trap frame onto the stack
# gtfo!
ld $k0,264($k0)
- dmtc0 $k0,$1
+ mtpcr $k0,$1
eret
@@ -85,7 +85,7 @@ pop_tf: # write the trap frame onto the stack
#define TRAP_TABLE_ENTRY(x) \
.align 7; \
move $k0,$ra; \
- dla $k1,stack_top-320; \
+ la $k1,stack_top-320; \
jal save_tf; \
move $sp,$k1; \
move $a0,$k1; \
diff --git a/frontend.c b/frontend.c
index b194751..c4e799b 100644
--- a/frontend.c
+++ b/frontend.c
@@ -1,7 +1,7 @@
#include "pk.h"
#include "atomic.h"
#include "frontend.h"
-#include "cop0.h"
+#include "pcr.h"
sysret_t frontend_syscall(long n, long a0, long a1, long a2, long a3)
{
@@ -16,8 +16,8 @@ sysret_t frontend_syscall(long n, long a0, long a1, long a2, long a3)
magic_mem[3] = a2;
magic_mem[4] = a3;
- dmtc0(magic_mem,16);
- while(dmfc0(17) == 0);
+ mtpcr(magic_mem,16);
+ while(mfpcr(17) == 0);
sysret_t ret = {magic_mem[0],magic_mem[1]};
diff --git a/pcr.h b/pcr.h
new file mode 100644
index 0000000..22650a3
--- /dev/null
+++ b/pcr.h
@@ -0,0 +1,11 @@
+#ifndef _RISCV_COP0_H
+#define _RISCV_COP0_H
+
+#define mtpcr(val,reg) ({ long __tmp = (long)(val); \
+ asm volatile ("mtpcr %0,$%1"::"r"(__tmp),"i"(reg)); })
+
+#define mfpcr(reg) ({ long __tmp; \
+ asm volatile ("mfpcr %0,$%1" : "=r"(__tmp) : "i"(reg)); \
+ __tmp; })
+
+#endif