From b93785370d0be893e0a484ec22f1365db184dcce Mon Sep 17 00:00:00 2001 From: Andrew Waterman Date: Tue, 3 Aug 2010 20:48:02 -0700 Subject: [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. --- boot.S | 10 +++++----- cop0.h | 11 ----------- entry.S | 10 +++++----- frontend.c | 6 +++--- pcr.h | 11 +++++++++++ 5 files changed, 24 insertions(+), 24 deletions(-) delete mode 100644 cop0.h create mode 100644 pcr.h 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 -- cgit v1.1