minabeoki commented on pull request #5662:
URL: https://github.com/apache/incubator-nuttx/pull/5662#issuecomment-1058959569


   @xiaoxiang781216 
   I compiled for sabre-6quad(A9) config, and checked the compiled assemble 
code.
   In case of "-mfpu=neon-vfpv3", GCC uese NEON instructions for integer 
operations.
   In case of "-mfpu=vfpv3", GCC does not uses for integer operations.
   
   "-mfpu=neon-vfpv3" option may be dangerous for the kernel context switch 
mechanism.
   What do you think about this ?
   
   For example, procfs_statfs function,
   
https://github.com/apache/incubator-nuttx/blob/779665c7045b7661ebdf4baf0da8f4a0264795a1/fs/procfs/fs_procfs.c#L997-L1009
   
   "-mfpu=neon-vfpv3" case:
   (vmov and vstr are used for 64bit store.)
   ```
   10807d00 <procfs_statfs>:
   10807d00:       b510            push    {r4, lr}
   10807d02:       460c            mov     r4, r1
   10807d04:       2238            movs    r2, #56 ; 0x38
   10807d06:       2100            movs    r1, #0
   10807d08:       4620            mov     r0, r4
   10807d0a:       f7fb f9d8       bl      108030be <memset>
   10807d0e:       4b07            ldr     r3, [pc, #28]   ; (10807d2c 
<procfs_statfs+0x2c>)
   10807d10:       2000            movs    r0, #0
   10807d12:       efc0 0010       vmov.i32        d16, #0 ; 0x00000000
   10807d16:       60a0            str     r0, [r4, #8]
   10807d18:       6023            str     r3, [r4, #0]
   10807d1a:       2320            movs    r3, #32
   10807d1c:       edc4 0b04       vstr    d16, [r4, #16]
   10807d20:       edc4 0b06       vstr    d16, [r4, #24]
   10807d24:       edc4 0b08       vstr    d16, [r4, #32]
   10807d28:       6063            str     r3, [r4, #4]
   10807d2a:       bd10            pop     {r4, pc}
   10807d2c:       434f5250        .word   0x434f5250
   ```
   
   "-mfpu=vfpv3" case:
   (There are no neon instructions)
   ```
   10807d08 <procfs_statfs>:
   10807d08:   b510        push    {r4, lr}
   10807d0a:   460c        mov r4, r1
   10807d0c:   2238        movs    r2, #56 ; 0x38
   10807d0e:   2100        movs    r1, #0
   10807d10:   4620        mov r0, r4
   10807d12:   f7fb f9d8   bl  108030c6 <memset>
   10807d16:   4b07        ldr r3, [pc, #28]   ; (10807d34 <procfs_statfs+0x2c>)
   10807d18:   2200        movs    r2, #0
   10807d1a:   2000        movs    r0, #0
   10807d1c:   60a0        str r0, [r4, #8]
   10807d1e:   6023        str r3, [r4, #0]
   10807d20:   2300        movs    r3, #0
   10807d22:   e9c4 2304   strd    r2, r3, [r4, #16]
   10807d26:   e9c4 2306   strd    r2, r3, [r4, #24]
   10807d2a:   e9c4 2308   strd    r2, r3, [r4, #32]
   10807d2e:   2320        movs    r3, #32
   10807d30:   6063        str r3, [r4, #4]
   10807d32:   bd10        pop {r4, pc}
   10807d34:   434f5250    .word   0x434f5250
   ```
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscr...@nuttx.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


Reply via email to