Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/arch/arm/vfp Switch to using vfp_kernel_{acquire, release...



details:   https://anonhg.NetBSD.org/src/rev/79d7d19499a5
branches:  trunk
changeset: 783592:79d7d19499a5
user:      matt <matt%NetBSD.org@localhost>
date:      Mon Dec 31 01:19:36 2012 +0000

description:
Switch to using vfp_kernel_{acquire,release} so that softints don't cause
the VFP to become disabled.

diffstat:

 sys/arch/arm/vfp/pmap_vfp.S |  38 ++++++--------------------------------
 1 files changed, 6 insertions(+), 32 deletions(-)

diffs (80 lines):

diff -r bfe614fb94df -r 79d7d19499a5 sys/arch/arm/vfp/pmap_vfp.S
--- a/sys/arch/arm/vfp/pmap_vfp.S       Mon Dec 31 00:01:48 2012 +0000
+++ b/sys/arch/arm/vfp/pmap_vfp.S       Mon Dec 31 01:19:36 2012 +0000
@@ -32,7 +32,7 @@
 #include <machine/asm.h>
 #include "assym.h"
 
-RCSID("$NetBSD: pmap_vfp.S,v 1.5 2012/12/26 18:35:47 matt Exp $")
+RCSID("$NetBSD: pmap_vfp.S,v 1.6 2012/12/31 01:19:36 matt Exp $")
 
 /*
  * This zeroes a page 64-bytes at a time.  64 was chosen over 32 since
@@ -40,16 +40,9 @@
  */
 /* LINTSTUB: void bzero_page_vfp(vaddr_t); */
 ENTRY(bzero_page_vfp)
-#if 0
-       str     lr, [sp, #-8]!
+       push    {r0, lr}
        bl      _C_LABEL(vfp_kernel_acquire)
-#else
-       mrc     p10, 7, r3, c8, c0, 0
-       tst     r3, #VFP_FPEXC_EN
-       orreq   r2, r3, #VFP_FPEXC_EN
-       mcreq   p10, 7, r2, c8, c0, 0
-       vpush   {d0-d7}
-#endif
+       pop     {r0, lr}
 #if (CPU_CORTEX == 0)
        mov     ip, #0
        vmov    s0, ip
@@ -74,14 +67,7 @@
        vstmia  r0!, {d0-d7}
        cmp     r0, r2
        blt     1b
-#if 0
-       ldr     lr, [sp], #8            /* fetch LR */
        b       _C_LABEL(vfp_kernel_release)    /* tailcall the vfp release */
-#else
-       vpop    {d0-d7}
-       mcr     p10, 7, r3, c8, c0, 0
-       RET
-#endif
 END(bzero_page_vfp)
 
 /*
@@ -96,17 +82,12 @@
        pld     [r0, #64]
        pld     [r0, #96]
 #endif
-#if 0
        str     lr, [sp, #-8]!
+       push    {r0, r1}
        bl      _C_LABEL(vfp_kernel_acquire)
-#else
-       mrc     p10, 7, r3, c8, c0, 0
-       tst     r3, #VFP_FPEXC_EN
-       orreq   r2, r3, #VFP_FPEXC_EN
-       mcreq   p10, 7, r2, c8, c0, 0
-       vpush   {d0-d7}
+       pop     {r0, r1}
+       ldr     lr, [sp], #8            /* fetch LR */
        add     r2, r0, #PAGE_SIZE-128
-#endif
 1:     
 #ifdef _ARM_ARCH_DWORD_OK
        pld     [r0, #128]              @ preload the next 128
@@ -121,12 +102,5 @@
        cmp     r0, r2
        blt     1b
        beq     2b
-#if 0
-       ldr     lr, [sp], #8            /* fetch LR */
        b       _C_LABEL(vfp_kernel_release)    /* tailcall the vfp release */
-#else
-       vpop    {d0-d7}
-       mcr     p10, 7, r3, c8, c0, 0
-       RET
-#endif
 END(bcopy_page_vfp)



Home | Main Index | Thread Index | Old Index