import PULS_20160108
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / arch / arm64 / include / asm / fpsimdmacros.h
index bbec599c96bd61df88740e7e1295d81540189edc..768414d55e642f461788c0a031e1749c83cfac86 100644 (file)
        ldr     w\tmpnr, [\state, #16 * 2 + 4]
        msr     fpcr, x\tmpnr
 .endm
+
+.altmacro
+.macro fpsimd_save_partial state, numnr, tmpnr1, tmpnr2
+       mrs     x\tmpnr1, fpsr
+       str     w\numnr, [\state, #8]
+       mrs     x\tmpnr2, fpcr
+       stp     w\tmpnr1, w\tmpnr2, [\state]
+       adr     x\tmpnr1, 0f
+       add     \state, \state, x\numnr, lsl #4
+       sub     x\tmpnr1, x\tmpnr1, x\numnr, lsl #1
+       br      x\tmpnr1
+       .irp    qa, 30, 28, 26, 24, 22, 20, 18, 16, 14, 12, 10, 8, 6, 4, 2, 0
+       .irp    qb, %(qa + 1)
+       stp     q\qa, q\qb, [\state, # -16 * \qa - 16]
+       .endr
+       .endr
+0:
+.endm
+
+.macro fpsimd_restore_partial state, tmpnr1, tmpnr2
+       ldp     w\tmpnr1, w\tmpnr2, [\state]
+       msr     fpsr, x\tmpnr1
+       msr     fpcr, x\tmpnr2
+       adr     x\tmpnr1, 0f
+       ldr     w\tmpnr2, [\state, #8]
+       add     \state, \state, x\tmpnr2, lsl #4
+       sub     x\tmpnr1, x\tmpnr1, x\tmpnr2, lsl #1
+       br      x\tmpnr1
+       .irp    qa, 30, 28, 26, 24, 22, 20, 18, 16, 14, 12, 10, 8, 6, 4, 2, 0
+       .irp    qb, %(qa + 1)
+       ldp     q\qa, q\qb, [\state, # -16 * \qa - 16]
+       .endr
+       .endr
+0:
+.endm