diff options
author | Markos Chandras <markos.chandras@imgtec.com> | 2014-01-17 06:36:16 -0500 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 2014-03-26 18:09:17 -0400 |
commit | 6f85cebe49a4cd25a381f356ad51ccc376d00a7c (patch) | |
tree | d24ed8dd25c014de73d123cc1eb9a5dee6f93c4c /arch/mips/lib | |
parent | e89fb56c8bcf5514cfe7abd7a3dda9e6007b7238 (diff) |
MIPS: lib: csum_partial: Add EVA support
Use EVA specific functions to read and write data to
user address space.
Signed-off-by: Markos Chandras <markos.chandras@imgtec.com>
Diffstat (limited to 'arch/mips/lib')
-rw-r--r-- | arch/mips/lib/csum_partial.S | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/arch/mips/lib/csum_partial.S b/arch/mips/lib/csum_partial.S index 62c8768a59ce..2e4825e48388 100644 --- a/arch/mips/lib/csum_partial.S +++ b/arch/mips/lib/csum_partial.S | |||
@@ -352,6 +352,19 @@ LEAF(csum_partial) | |||
352 | .section __ex_table,"a"; \ | 352 | .section __ex_table,"a"; \ |
353 | PTR 9b, handler; \ | 353 | PTR 9b, handler; \ |
354 | .previous; \ | 354 | .previous; \ |
355 | /* This is enabled in EVA mode */ \ | ||
356 | .else; \ | ||
357 | /* If loading from user or storing to user */ \ | ||
358 | .if ((\from == USEROP) && (type == LD_INSN)) || \ | ||
359 | ((\to == USEROP) && (type == ST_INSN)); \ | ||
360 | 9: __BUILD_EVA_INSN(insn##e, reg, addr); \ | ||
361 | .section __ex_table,"a"; \ | ||
362 | PTR 9b, handler; \ | ||
363 | .previous; \ | ||
364 | .else; \ | ||
365 | /* EVA without exception */ \ | ||
366 | insn reg, addr; \ | ||
367 | .endif; \ | ||
355 | .endif | 368 | .endif |
356 | 369 | ||
357 | #undef LOAD | 370 | #undef LOAD |
@@ -795,7 +808,19 @@ LEAF(csum_partial) | |||
795 | .endm | 808 | .endm |
796 | 809 | ||
797 | LEAF(__csum_partial_copy_kernel) | 810 | LEAF(__csum_partial_copy_kernel) |
811 | #ifndef CONFIG_EVA | ||
798 | FEXPORT(__csum_partial_copy_to_user) | 812 | FEXPORT(__csum_partial_copy_to_user) |
799 | FEXPORT(__csum_partial_copy_from_user) | 813 | FEXPORT(__csum_partial_copy_from_user) |
814 | #endif | ||
800 | __BUILD_CSUM_PARTIAL_COPY_USER LEGACY_MODE USEROP USEROP 1 | 815 | __BUILD_CSUM_PARTIAL_COPY_USER LEGACY_MODE USEROP USEROP 1 |
801 | END(__csum_partial_copy_kernel) | 816 | END(__csum_partial_copy_kernel) |
817 | |||
818 | #ifdef CONFIG_EVA | ||
819 | LEAF(__csum_partial_copy_to_user) | ||
820 | __BUILD_CSUM_PARTIAL_COPY_USER EVA_MODE KERNELOP USEROP 0 | ||
821 | END(__csum_partial_copy_to_user) | ||
822 | |||
823 | LEAF(__csum_partial_copy_from_user) | ||
824 | __BUILD_CSUM_PARTIAL_COPY_USER EVA_MODE USEROP KERNELOP 0 | ||
825 | END(__csum_partial_copy_from_user) | ||
826 | #endif | ||