Author: br
Date: Thu Feb  4 14:30:46 2016
New Revision: 295258
URL: https://svnweb.freebsd.org/changeset/base/295258

Log:
  Access pcpup using gp register.

Modified:
  head/sys/riscv/include/asm.h
  head/sys/riscv/riscv/exception.S
  head/sys/riscv/riscv/swtch.S

Modified: head/sys/riscv/include/asm.h
==============================================================================
--- head/sys/riscv/include/asm.h        Thu Feb  4 14:15:24 2016        
(r295257)
+++ head/sys/riscv/include/asm.h        Thu Feb  4 14:30:46 2016        
(r295258)
@@ -59,9 +59,7 @@
        .set alias,sym
 
 #define        SET_FAULT_HANDLER(handler, tmp)                                 
\
-       la      tmp, pcpup;                                             \
-       ld      tmp, 0(tmp);                                            \
-       ld      tmp, PC_CURTHREAD(tmp);                                 \
+       ld      tmp, PC_CURTHREAD(gp);                                  \
        ld      tmp, TD_PCB(tmp);               /* Load the pcb */      \
        sd      handler, PCB_ONFAULT(tmp)       /* Set the handler */
 

Modified: head/sys/riscv/riscv/exception.S
==============================================================================
--- head/sys/riscv/riscv/exception.S    Thu Feb  4 14:15:24 2016        
(r295257)
+++ head/sys/riscv/riscv/exception.S    Thu Feb  4 14:30:46 2016        
(r295258)
@@ -182,9 +182,7 @@ __FBSDID("$FreeBSD$");
 1:
        csrci   sstatus, SSTATUS_IE
 
-       la      a1, pcpup
-       ld      a1, 0(a1)
-       ld      a1, PC_CURTHREAD(a1)
+       ld      a1, PC_CURTHREAD(gp)
        lw      a2, TD_FLAGS(a1)
 
        li      a3, (TDF_ASTPENDING|TDF_NEEDRESCHED)

Modified: head/sys/riscv/riscv/swtch.S
==============================================================================
--- head/sys/riscv/riscv/swtch.S        Thu Feb  4 14:15:24 2016        
(r295257)
+++ head/sys/riscv/riscv/swtch.S        Thu Feb  4 14:30:46 2016        
(r295258)
@@ -46,14 +46,11 @@ __FBSDID("$FreeBSD$");
  * void cpu_throw(struct thread *old, struct thread *new)
  */
 ENTRY(cpu_throw)
-       /* Load pcpu */
-       la      x14, pcpup
-       ld      x14, 0(x14)
        /* Store the new curthread */
-       sd      a1, PC_CURTHREAD(x14)
+       sd      a1, PC_CURTHREAD(gp)
        /* And the new pcb */
        ld      x13, TD_PCB(a1)
-       sd      x13, PC_CURPCB(x14)
+       sd      x13, PC_CURPCB(gp)
 
        sfence.vm
 
@@ -103,14 +100,11 @@ END(cpu_throw)
  * x3 to x7, x16 and x17 are caller saved
  */
 ENTRY(cpu_switch)
-       /* Load pcpu */
-       la      x14, pcpup
-       ld      x14, 0(x14)
        /* Store the new curthread */
-       sd      a1, PC_CURTHREAD(x14)
+       sd      a1, PC_CURTHREAD(gp)
        /* And the new pcb */
        ld      x13, TD_PCB(a1)
-       sd      x13, PC_CURPCB(x14)
+       sd      x13, PC_CURPCB(gp)
 
        /* Save the old context. */
        ld      x13, TD_PCB(a0)
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "[email protected]"

Reply via email to