diff options
author | Chris Metcalf <cmetcalf@tilera.com> | 2013-07-23 17:32:04 -0400 |
---|---|---|
committer | Chris Metcalf <cmetcalf@tilera.com> | 2013-07-31 11:51:19 -0400 |
commit | dd78bc11fb2050b6a3990d0421feca4c68ca4335 (patch) | |
tree | 7147fe5e0b3815443eea608d3dd0950ba53bb47d /arch/tile/lib/usercopy_32.S | |
parent | 7d937719e3c5c6c9ad00584f6b62230d2ef7f9f1 (diff) | |
download | linux-dd78bc11fb2050b6a3990d0421feca4c68ca4335.tar.bz2 |
tile: convert uses of "inv" to "finv"
The "inv" (invalidate) instruction is generally less safe than "finv"
(flush and invalidate), as it will drop dirty data from the cache.
It turns out we have almost no need for "inv" (other than for the
older 32-bit architecture in some limited cases), so convert to
"finv" where possible and delete the extra "inv" infrastructure.
Signed-off-by: Chris Metcalf <cmetcalf@tilera.com>
Diffstat (limited to 'arch/tile/lib/usercopy_32.S')
-rw-r--r-- | arch/tile/lib/usercopy_32.S | 19 |
1 files changed, 0 insertions, 19 deletions
diff --git a/arch/tile/lib/usercopy_32.S b/arch/tile/lib/usercopy_32.S index b62d002af009..21ffa88ffe5f 100644 --- a/arch/tile/lib/usercopy_32.S +++ b/arch/tile/lib/usercopy_32.S @@ -109,25 +109,6 @@ STD_ENTRY(flush_user_asm) .popsection /* - * inv_user_asm takes the user target address in r0 and the - * number of bytes to invalidate in r1. - * It returns the number of not inv'able bytes (hopefully zero) in r0. - */ -STD_ENTRY(inv_user_asm) - bz r1, 2f - { movei r2, L2_CACHE_BYTES; add r1, r0, r1 } - { sub r2, zero, r2; addi r1, r1, L2_CACHE_BYTES-1 } - { and r0, r0, r2; and r1, r1, r2 } - { sub r1, r1, r0 } -1: { inv r0; addi r1, r1, -CHIP_INV_STRIDE() } - { addi r0, r0, CHIP_INV_STRIDE(); bnzt r1, 1b } -2: { move r0, r1; jrp lr } - STD_ENDPROC(inv_user_asm) - .pushsection __ex_table,"a" - .word 1b, 2b - .popsection - -/* * finv_user_asm takes the user target address in r0 and the * number of bytes to flush-invalidate in r1. * It returns the number of not finv'able bytes (hopefully zero) in r0. |