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 | ||
