diff options
| author | Babu Moger <babu.moger@oracle.com> | 2017-08-07 19:52:49 -0400 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2017-08-10 17:55:35 -0400 |
| commit | de5c073e383d884da391627dbab8e0e7cfe48558 (patch) | |
| tree | ab356e700f5267b3e6ba8194dd34fe2ec0818048 /arch/sparc | |
| parent | 061273f9ecdb9e55e80676bbbb8f65ecd3b9699a (diff) | |
arch/sparc: Separate the exception handlers from NG4memcpy
Separate the exception handlers from NG4memcpy so that it can be
used with new memcpy routines. Make a separate file for all these handlers.
Signed-off-by: Babu Moger <babu.moger@oracle.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'arch/sparc')
| -rw-r--r-- | arch/sparc/lib/Makefile | 2 | ||||
| -rw-r--r-- | arch/sparc/lib/Memcpy_utils.S | 163 | ||||
| -rw-r--r-- | arch/sparc/lib/NG4memcpy.S | 149 |
3 files changed, 165 insertions, 149 deletions
diff --git a/arch/sparc/lib/Makefile b/arch/sparc/lib/Makefile index 07c03e72d812..37930c0777fe 100644 --- a/arch/sparc/lib/Makefile +++ b/arch/sparc/lib/Makefile | |||
| @@ -36,6 +36,8 @@ lib-$(CONFIG_SPARC64) += NG2patch.o | |||
| 36 | lib-$(CONFIG_SPARC64) += NG4memcpy.o NG4copy_from_user.o NG4copy_to_user.o | 36 | lib-$(CONFIG_SPARC64) += NG4memcpy.o NG4copy_from_user.o NG4copy_to_user.o |
| 37 | lib-$(CONFIG_SPARC64) += NG4patch.o NG4copy_page.o NG4clear_page.o NG4memset.o | 37 | lib-$(CONFIG_SPARC64) += NG4patch.o NG4copy_page.o NG4clear_page.o NG4memset.o |
| 38 | 38 | ||
| 39 | lib-$(CONFIG_SPARC64) += Memcpy_utils.o | ||
| 40 | |||
| 39 | lib-$(CONFIG_SPARC64) += GENmemcpy.o GENcopy_from_user.o GENcopy_to_user.o | 41 | lib-$(CONFIG_SPARC64) += GENmemcpy.o GENcopy_from_user.o GENcopy_to_user.o |
| 40 | lib-$(CONFIG_SPARC64) += GENpatch.o GENpage.o GENbzero.o | 42 | lib-$(CONFIG_SPARC64) += GENpatch.o GENpage.o GENbzero.o |
| 41 | 43 | ||
diff --git a/arch/sparc/lib/Memcpy_utils.S b/arch/sparc/lib/Memcpy_utils.S new file mode 100644 index 000000000000..f7a26e0be94f --- /dev/null +++ b/arch/sparc/lib/Memcpy_utils.S | |||
| @@ -0,0 +1,163 @@ | |||
| 1 | #ifndef __ASM_MEMCPY_UTILS | ||
| 2 | #define __ASM_MEMCPY_UTILS | ||
| 3 | |||
| 4 | #include <linux/linkage.h> | ||
| 5 | #include <asm/asi.h> | ||
| 6 | #include <asm/visasm.h> | ||
| 7 | |||
| 8 | ENTRY(__restore_asi_fp) | ||
| 9 | VISExitHalf | ||
| 10 | retl | ||
| 11 | wr %g0, ASI_AIUS, %asi | ||
| 12 | ENDPROC(__restore_asi_fp) | ||
| 13 | |||
| 14 | ENTRY(__restore_asi) | ||
| 15 | retl | ||
| 16 | wr %g0, ASI_AIUS, %asi | ||
| 17 | ENDPROC(__restore_asi) | ||
| 18 | |||
| 19 | ENTRY(NG4_retl_o2) | ||
| 20 | ba,pt %xcc, __restore_asi | ||
| 21 | mov %o2, %o0 | ||
| 22 | ENDPROC(NG4_retl_o2) | ||
| 23 | ENTRY(NG4_retl_o2_plus_1) | ||
| 24 | ba,pt %xcc, __restore_asi | ||
| 25 | add %o2, 1, %o0 | ||
| 26 | ENDPROC(NG4_retl_o2_plus_1) | ||
| 27 | ENTRY(NG4_retl_o2_plus_4) | ||
| 28 | ba,pt %xcc, __restore_asi | ||
| 29 | add %o2, 4, %o0 | ||
| 30 | ENDPROC(NG4_retl_o2_plus_4) | ||
| 31 | ENTRY(NG4_retl_o2_plus_o5) | ||
| 32 | ba,pt %xcc, __restore_asi | ||
| 33 | add %o2, %o5, %o0 | ||
| 34 | ENDPROC(NG4_retl_o2_plus_o5) | ||
| 35 | ENTRY(NG4_retl_o2_plus_o5_plus_4) | ||
| 36 | add %o5, 4, %o5 | ||
| 37 | ba,pt %xcc, __restore_asi | ||
| 38 | add %o2, %o5, %o0 | ||
| 39 | ENDPROC(NG4_retl_o2_plus_o5_plus_4) | ||
| 40 | ENTRY(NG4_retl_o2_plus_o5_plus_8) | ||
| 41 | add %o5, 8, %o5 | ||
| 42 | ba,pt %xcc, __restore_asi | ||
| 43 | add %o2, %o5, %o0 | ||
| 44 | ENDPROC(NG4_retl_o2_plus_o5_plus_8) | ||
| 45 | ENTRY(NG4_retl_o2_plus_o5_plus_16) | ||
| 46 | add %o5, 16, %o5 | ||
| 47 | ba,pt %xcc, __restore_asi | ||
| 48 | add %o2, %o5, %o0 | ||
| 49 | ENDPROC(NG4_retl_o2_plus_o5_plus_16) | ||
| 50 | ENTRY(NG4_retl_o2_plus_o5_plus_24) | ||
| 51 | add %o5, 24, %o5 | ||
| 52 | ba,pt %xcc, __restore_asi | ||
| 53 | add %o2, %o5, %o0 | ||
| 54 | ENDPROC(NG4_retl_o2_plus_o5_plus_24) | ||
| 55 | ENTRY(NG4_retl_o2_plus_o5_plus_32) | ||
| 56 | add %o5, 32, %o5 | ||
| 57 | ba,pt %xcc, __restore_asi | ||
| 58 | add %o2, %o5, %o0 | ||
| 59 | ENDPROC(NG4_retl_o2_plus_o5_plus_32) | ||
| 60 | ENTRY(NG4_retl_o2_plus_g1) | ||
| 61 | ba,pt %xcc, __restore_asi | ||
| 62 | add %o2, %g1, %o0 | ||
| 63 | ENDPROC(NG4_retl_o2_plus_g1) | ||
| 64 | ENTRY(NG4_retl_o2_plus_g1_plus_1) | ||
| 65 | add %g1, 1, %g1 | ||
| 66 | ba,pt %xcc, __restore_asi | ||
| 67 | add %o2, %g1, %o0 | ||
| 68 | ENDPROC(NG4_retl_o2_plus_g1_plus_1) | ||
| 69 | ENTRY(NG4_retl_o2_plus_g1_plus_8) | ||
| 70 | add %g1, 8, %g1 | ||
| 71 | ba,pt %xcc, __restore_asi | ||
| 72 | add %o2, %g1, %o0 | ||
| 73 | ENDPROC(NG4_retl_o2_plus_g1_plus_8) | ||
| 74 | ENTRY(NG4_retl_o2_plus_o4) | ||
| 75 | ba,pt %xcc, __restore_asi | ||
| 76 | add %o2, %o4, %o0 | ||
| 77 | ENDPROC(NG4_retl_o2_plus_o4) | ||
| 78 | ENTRY(NG4_retl_o2_plus_o4_plus_8) | ||
| 79 | add %o4, 8, %o4 | ||
| 80 | ba,pt %xcc, __restore_asi | ||
| 81 | add %o2, %o4, %o0 | ||
| 82 | ENDPROC(NG4_retl_o2_plus_o4_plus_8) | ||
| 83 | ENTRY(NG4_retl_o2_plus_o4_plus_16) | ||
| 84 | add %o4, 16, %o4 | ||
| 85 | ba,pt %xcc, __restore_asi | ||
| 86 | add %o2, %o4, %o0 | ||
| 87 | ENDPROC(NG4_retl_o2_plus_o4_plus_16) | ||
| 88 | ENTRY(NG4_retl_o2_plus_o4_plus_24) | ||
| 89 | add %o4, 24, %o4 | ||
| 90 | ba,pt %xcc, __restore_asi | ||
| 91 | add %o2, %o4, %o0 | ||
| 92 | ENDPROC(NG4_retl_o2_plus_o4_plus_24) | ||
| 93 | ENTRY(NG4_retl_o2_plus_o4_plus_32) | ||
| 94 | add %o4, 32, %o4 | ||
| 95 | ba,pt %xcc, __restore_asi | ||
| 96 | add %o2, %o4, %o0 | ||
| 97 | ENDPROC(NG4_retl_o2_plus_o4_plus_32) | ||
| 98 | ENTRY(NG4_retl_o2_plus_o4_plus_40) | ||
| 99 | add %o4, 40, %o4 | ||
| 100 | ba,pt %xcc, __restore_asi | ||
| 101 | add %o2, %o4, %o0 | ||
| 102 | ENDPROC(NG4_retl_o2_plus_o4_plus_40) | ||
| 103 | ENTRY(NG4_retl_o2_plus_o4_plus_48) | ||
| 104 | add %o4, 48, %o4 | ||
| 105 | ba,pt %xcc, __restore_asi | ||
| 106 | add %o2, %o4, %o0 | ||
| 107 | ENDPROC(NG4_retl_o2_plus_o4_plus_48) | ||
| 108 | ENTRY(NG4_retl_o2_plus_o4_plus_56) | ||
| 109 | add %o4, 56, %o4 | ||
| 110 | ba,pt %xcc, __restore_asi | ||
| 111 | add %o2, %o4, %o0 | ||
| 112 | ENDPROC(NG4_retl_o2_plus_o4_plus_56) | ||
| 113 | ENTRY(NG4_retl_o2_plus_o4_plus_64) | ||
| 114 | add %o4, 64, %o4 | ||
| 115 | ba,pt %xcc, __restore_asi | ||
| 116 | add %o2, %o4, %o0 | ||
| 117 | ENDPROC(NG4_retl_o2_plus_o4_plus_64) | ||
| 118 | ENTRY(NG4_retl_o2_plus_o4_fp) | ||
| 119 | ba,pt %xcc, __restore_asi_fp | ||
| 120 | add %o2, %o4, %o0 | ||
| 121 | ENDPROC(NG4_retl_o2_plus_o4_fp) | ||
| 122 | ENTRY(NG4_retl_o2_plus_o4_plus_8_fp) | ||
| 123 | add %o4, 8, %o4 | ||
| 124 | ba,pt %xcc, __restore_asi_fp | ||
| 125 | add %o2, %o4, %o0 | ||
| 126 | ENDPROC(NG4_retl_o2_plus_o4_plus_8_fp) | ||
| 127 | ENTRY(NG4_retl_o2_plus_o4_plus_16_fp) | ||
| 128 | add %o4, 16, %o4 | ||
| 129 | ba,pt %xcc, __restore_asi_fp | ||
| 130 | add %o2, %o4, %o0 | ||
| 131 | ENDPROC(NG4_retl_o2_plus_o4_plus_16_fp) | ||
| 132 | ENTRY(NG4_retl_o2_plus_o4_plus_24_fp) | ||
| 133 | add %o4, 24, %o4 | ||
| 134 | ba,pt %xcc, __restore_asi_fp | ||
| 135 | add %o2, %o4, %o0 | ||
| 136 | ENDPROC(NG4_retl_o2_plus_o4_plus_24_fp) | ||
| 137 | ENTRY(NG4_retl_o2_plus_o4_plus_32_fp) | ||
| 138 | add %o4, 32, %o4 | ||
| 139 | ba,pt %xcc, __restore_asi_fp | ||
| 140 | add %o2, %o4, %o0 | ||
| 141 | ENDPROC(NG4_retl_o2_plus_o4_plus_32_fp) | ||
| 142 | ENTRY(NG4_retl_o2_plus_o4_plus_40_fp) | ||
| 143 | add %o4, 40, %o4 | ||
| 144 | ba,pt %xcc, __restore_asi_fp | ||
| 145 | add %o2, %o4, %o0 | ||
| 146 | ENDPROC(NG4_retl_o2_plus_o4_plus_40_fp) | ||
| 147 | ENTRY(NG4_retl_o2_plus_o4_plus_48_fp) | ||
| 148 | add %o4, 48, %o4 | ||
| 149 | ba,pt %xcc, __restore_asi_fp | ||
| 150 | add %o2, %o4, %o0 | ||
| 151 | ENDPROC(NG4_retl_o2_plus_o4_plus_48_fp) | ||
| 152 | ENTRY(NG4_retl_o2_plus_o4_plus_56_fp) | ||
| 153 | add %o4, 56, %o4 | ||
| 154 | ba,pt %xcc, __restore_asi_fp | ||
| 155 | add %o2, %o4, %o0 | ||
| 156 | ENDPROC(NG4_retl_o2_plus_o4_plus_56_fp) | ||
| 157 | ENTRY(NG4_retl_o2_plus_o4_plus_64_fp) | ||
| 158 | add %o4, 64, %o4 | ||
| 159 | ba,pt %xcc, __restore_asi_fp | ||
| 160 | add %o2, %o4, %o0 | ||
| 161 | ENDPROC(NG4_retl_o2_plus_o4_plus_64_fp) | ||
| 162 | |||
| 163 | #endif | ||
diff --git a/arch/sparc/lib/NG4memcpy.S b/arch/sparc/lib/NG4memcpy.S index 78ea962edcbe..e20d6541fb68 100644 --- a/arch/sparc/lib/NG4memcpy.S +++ b/arch/sparc/lib/NG4memcpy.S | |||
| @@ -94,155 +94,6 @@ | |||
| 94 | .text | 94 | .text |
| 95 | #ifndef EX_RETVAL | 95 | #ifndef EX_RETVAL |
| 96 | #define EX_RETVAL(x) x | 96 | #define EX_RETVAL(x) x |
| 97 | __restore_asi_fp: | ||
| 98 | VISExitHalf | ||
| 99 | __restore_asi: | ||
| 100 | retl | ||
| 101 | wr %g0, ASI_AIUS, %asi | ||
| 102 | |||
| 103 | ENTRY(NG4_retl_o2) | ||
| 104 | ba,pt %xcc, __restore_asi | ||
| 105 | mov %o2, %o0 | ||
| 106 | ENDPROC(NG4_retl_o2) | ||
| 107 | ENTRY(NG4_retl_o2_plus_1) | ||
| 108 | ba,pt %xcc, __restore_asi | ||
| 109 | add %o2, 1, %o0 | ||
| 110 | ENDPROC(NG4_retl_o2_plus_1) | ||
| 111 | ENTRY(NG4_retl_o2_plus_4) | ||
| 112 | ba,pt %xcc, __restore_asi | ||
| 113 | add %o2, 4, %o0 | ||
| 114 | ENDPROC(NG4_retl_o2_plus_4) | ||
| 115 | ENTRY(NG4_retl_o2_plus_o5) | ||
| 116 | ba,pt %xcc, __restore_asi | ||
| 117 | add %o2, %o5, %o0 | ||
| 118 | ENDPROC(NG4_retl_o2_plus_o5) | ||
| 119 | ENTRY(NG4_retl_o2_plus_o5_plus_4) | ||
| 120 | add %o5, 4, %o5 | ||
| 121 | ba,pt %xcc, __restore_asi | ||
| 122 | add %o2, %o5, %o0 | ||
| 123 | ENDPROC(NG4_retl_o2_plus_o5_plus_4) | ||
| 124 | ENTRY(NG4_retl_o2_plus_o5_plus_8) | ||
| 125 | add %o5, 8, %o5 | ||
| 126 | ba,pt %xcc, __restore_asi | ||
| 127 | add %o2, %o5, %o0 | ||
| 128 | ENDPROC(NG4_retl_o2_plus_o5_plus_8) | ||
| 129 | ENTRY(NG4_retl_o2_plus_o5_plus_16) | ||
| 130 | add %o5, 16, %o5 | ||
| 131 | ba,pt %xcc, __restore_asi | ||
| 132 | add %o2, %o5, %o0 | ||
| 133 | ENDPROC(NG4_retl_o2_plus_o5_plus_16) | ||
| 134 | ENTRY(NG4_retl_o2_plus_o5_plus_24) | ||
| 135 | add %o5, 24, %o5 | ||
| 136 | ba,pt %xcc, __restore_asi | ||
| 137 | add %o2, %o5, %o0 | ||
| 138 | ENDPROC(NG4_retl_o2_plus_o5_plus_24) | ||
| 139 | ENTRY(NG4_retl_o2_plus_o5_plus_32) | ||
| 140 | add %o5, 32, %o5 | ||
| 141 | ba,pt %xcc, __restore_asi | ||
| 142 | add %o2, %o5, %o0 | ||
| 143 | ENDPROC(NG4_retl_o2_plus_o5_plus_32) | ||
| 144 | ENTRY(NG4_retl_o2_plus_g1) | ||
| 145 | ba,pt %xcc, __restore_asi | ||
| 146 | add %o2, %g1, %o0 | ||
| 147 | ENDPROC(NG4_retl_o2_plus_g1) | ||
| 148 | ENTRY(NG4_retl_o2_plus_g1_plus_1) | ||
| 149 | add %g1, 1, %g1 | ||
| 150 | ba,pt %xcc, __restore_asi | ||
| 151 | add %o2, %g1, %o0 | ||
| 152 | ENDPROC(NG4_retl_o2_plus_g1_plus_1) | ||
| 153 | ENTRY(NG4_retl_o2_plus_g1_plus_8) | ||
| 154 | add %g1, 8, %g1 | ||
| 155 | ba,pt %xcc, __restore_asi | ||
| 156 | add %o2, %g1, %o0 | ||
| 157 | ENDPROC(NG4_retl_o2_plus_g1_plus_8) | ||
| 158 | ENTRY(NG4_retl_o2_plus_o4) | ||
| 159 | ba,pt %xcc, __restore_asi | ||
| 160 | add %o2, %o4, %o0 | ||
| 161 | ENDPROC(NG4_retl_o2_plus_o4) | ||
| 162 | ENTRY(NG4_retl_o2_plus_o4_plus_8) | ||
| 163 | add %o4, 8, %o4 | ||
| 164 | ba,pt %xcc, __restore_asi | ||
| 165 | add %o2, %o4, %o0 | ||
| 166 | ENDPROC(NG4_retl_o2_plus_o4_plus_8) | ||
| 167 | ENTRY(NG4_retl_o2_plus_o4_plus_16) | ||
| 168 | add %o4, 16, %o4 | ||
| 169 | ba,pt %xcc, __restore_asi | ||
| 170 | add %o2, %o4, %o0 | ||
| 171 | ENDPROC(NG4_retl_o2_plus_o4_plus_16) | ||
| 172 | ENTRY(NG4_retl_o2_plus_o4_plus_24) | ||
| 173 | add %o4, 24, %o4 | ||
| 174 | ba,pt %xcc, __restore_asi | ||
| 175 | add %o2, %o4, %o0 | ||
| 176 | ENDPROC(NG4_retl_o2_plus_o4_plus_24) | ||
| 177 | ENTRY(NG4_retl_o2_plus_o4_plus_32) | ||
| 178 | add %o4, 32, %o4 | ||
| 179 | ba,pt %xcc, __restore_asi | ||
| 180 | add %o2, %o4, %o0 | ||
| 181 | ENDPROC(NG4_retl_o2_plus_o4_plus_32) | ||
| 182 | ENTRY(NG4_retl_o2_plus_o4_plus_40) | ||
| 183 | add %o4, 40, %o4 | ||
| 184 | ba,pt %xcc, __restore_asi | ||
| 185 | add %o2, %o4, %o0 | ||
| 186 | ENDPROC(NG4_retl_o2_plus_o4_plus_40) | ||
| 187 | ENTRY(NG4_retl_o2_plus_o4_plus_48) | ||
| 188 | add %o4, 48, %o4 | ||
| 189 | ba,pt %xcc, __restore_asi | ||
| 190 | add %o2, %o4, %o0 | ||
| 191 | ENDPROC(NG4_retl_o2_plus_o4_plus_48) | ||
| 192 | ENTRY(NG4_retl_o2_plus_o4_plus_56) | ||
| 193 | add %o4, 56, %o4 | ||
| 194 | ba,pt %xcc, __restore_asi | ||
| 195 | add %o2, %o4, %o0 | ||
| 196 | ENDPROC(NG4_retl_o2_plus_o4_plus_56) | ||
| 197 | ENTRY(NG4_retl_o2_plus_o4_plus_64) | ||
| 198 | add %o4, 64, %o4 | ||
| 199 | ba,pt %xcc, __restore_asi | ||
| 200 | add %o2, %o4, %o0 | ||
| 201 | ENDPROC(NG4_retl_o2_plus_o4_plus_64) | ||
| 202 | ENTRY(NG4_retl_o2_plus_o4_fp) | ||
| 203 | ba,pt %xcc, __restore_asi_fp | ||
| 204 | add %o2, %o4, %o0 | ||
| 205 | ENDPROC(NG4_retl_o2_plus_o4_fp) | ||
| 206 | ENTRY(NG4_retl_o2_plus_o4_plus_8_fp) | ||
| 207 | add %o4, 8, %o4 | ||
| 208 | ba,pt %xcc, __restore_asi_fp | ||
| 209 | add %o2, %o4, %o0 | ||
| 210 | ENDPROC(NG4_retl_o2_plus_o4_plus_8_fp) | ||
| 211 | ENTRY(NG4_retl_o2_plus_o4_plus_16_fp) | ||
| 212 | add %o4, 16, %o4 | ||
| 213 | ba,pt %xcc, __restore_asi_fp | ||
| 214 | add %o2, %o4, %o0 | ||
| 215 | ENDPROC(NG4_retl_o2_plus_o4_plus_16_fp) | ||
| 216 | ENTRY(NG4_retl_o2_plus_o4_plus_24_fp) | ||
| 217 | add %o4, 24, %o4 | ||
| 218 | ba,pt %xcc, __restore_asi_fp | ||
| 219 | add %o2, %o4, %o0 | ||
| 220 | ENDPROC(NG4_retl_o2_plus_o4_plus_24_fp) | ||
| 221 | ENTRY(NG4_retl_o2_plus_o4_plus_32_fp) | ||
| 222 | add %o4, 32, %o4 | ||
| 223 | ba,pt %xcc, __restore_asi_fp | ||
| 224 | add %o2, %o4, %o0 | ||
| 225 | ENDPROC(NG4_retl_o2_plus_o4_plus_32_fp) | ||
| 226 | ENTRY(NG4_retl_o2_plus_o4_plus_40_fp) | ||
| 227 | add %o4, 40, %o4 | ||
| 228 | ba,pt %xcc, __restore_asi_fp | ||
| 229 | add %o2, %o4, %o0 | ||
| 230 | ENDPROC(NG4_retl_o2_plus_o4_plus_40_fp) | ||
| 231 | ENTRY(NG4_retl_o2_plus_o4_plus_48_fp) | ||
| 232 | add %o4, 48, %o4 | ||
| 233 | ba,pt %xcc, __restore_asi_fp | ||
| 234 | add %o2, %o4, %o0 | ||
| 235 | ENDPROC(NG4_retl_o2_plus_o4_plus_48_fp) | ||
| 236 | ENTRY(NG4_retl_o2_plus_o4_plus_56_fp) | ||
| 237 | add %o4, 56, %o4 | ||
| 238 | ba,pt %xcc, __restore_asi_fp | ||
| 239 | add %o2, %o4, %o0 | ||
| 240 | ENDPROC(NG4_retl_o2_plus_o4_plus_56_fp) | ||
| 241 | ENTRY(NG4_retl_o2_plus_o4_plus_64_fp) | ||
| 242 | add %o4, 64, %o4 | ||
| 243 | ba,pt %xcc, __restore_asi_fp | ||
| 244 | add %o2, %o4, %o0 | ||
| 245 | ENDPROC(NG4_retl_o2_plus_o4_plus_64_fp) | ||
| 246 | #endif | 97 | #endif |
| 247 | .align 64 | 98 | .align 64 |
| 248 | 99 | ||
