linux/arch/sparc/lib/Memcpy_utils.S
<<
>>
Prefs
   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
   8ENTRY(__restore_asi_fp)
   9        VISExitHalf
  10        retl
  11         wr     %g0, ASI_AIUS, %asi
  12ENDPROC(__restore_asi_fp)
  13
  14ENTRY(__restore_asi)
  15        retl
  16         wr     %g0, ASI_AIUS, %asi
  17ENDPROC(__restore_asi)
  18
  19ENTRY(memcpy_retl_o2)
  20        ba,pt   %xcc, __restore_asi
  21         mov    %o2, %o0
  22ENDPROC(memcpy_retl_o2)
  23ENTRY(memcpy_retl_o2_plus_1)
  24        ba,pt   %xcc, __restore_asi
  25         add    %o2, 1, %o0
  26ENDPROC(memcpy_retl_o2_plus_1)
  27ENTRY(memcpy_retl_o2_plus_3)
  28        ba,pt   %xcc, __restore_asi
  29         add    %o2, 3, %o0
  30ENDPROC(memcpy_retl_o2_plus_3)
  31ENTRY(memcpy_retl_o2_plus_4)
  32        ba,pt   %xcc, __restore_asi
  33         add    %o2, 4, %o0
  34ENDPROC(memcpy_retl_o2_plus_4)
  35ENTRY(memcpy_retl_o2_plus_5)
  36        ba,pt   %xcc, __restore_asi
  37         add    %o2, 5, %o0
  38ENDPROC(memcpy_retl_o2_plus_5)
  39ENTRY(memcpy_retl_o2_plus_6)
  40        ba,pt   %xcc, __restore_asi
  41         add    %o2, 6, %o0
  42ENDPROC(memcpy_retl_o2_plus_6)
  43ENTRY(memcpy_retl_o2_plus_7)
  44        ba,pt   %xcc, __restore_asi
  45         add    %o2, 7, %o0
  46ENDPROC(memcpy_retl_o2_plus_7)
  47ENTRY(memcpy_retl_o2_plus_8)
  48        ba,pt   %xcc, __restore_asi
  49         add    %o2, 8, %o0
  50ENDPROC(memcpy_retl_o2_plus_8)
  51ENTRY(memcpy_retl_o2_plus_15)
  52        ba,pt   %xcc, __restore_asi
  53         add    %o2, 15, %o0
  54ENDPROC(memcpy_retl_o2_plus_15)
  55ENTRY(memcpy_retl_o2_plus_15_8)
  56         add    %o2, 15, %o2
  57        ba,pt   %xcc, __restore_asi
  58         add    %o2, 8, %o0
  59ENDPROC(memcpy_retl_o2_plus_15_8)
  60ENTRY(memcpy_retl_o2_plus_16)
  61        ba,pt   %xcc, __restore_asi
  62         add    %o2, 16, %o0
  63ENDPROC(memcpy_retl_o2_plus_16)
  64ENTRY(memcpy_retl_o2_plus_24)
  65        ba,pt   %xcc, __restore_asi
  66         add    %o2, 24, %o0
  67ENDPROC(memcpy_retl_o2_plus_24)
  68ENTRY(memcpy_retl_o2_plus_31)
  69        ba,pt   %xcc, __restore_asi
  70         add    %o2, 31, %o0
  71ENDPROC(memcpy_retl_o2_plus_31)
  72ENTRY(memcpy_retl_o2_plus_32)
  73        ba,pt   %xcc, __restore_asi
  74         add    %o2, 32, %o0
  75ENDPROC(memcpy_retl_o2_plus_32)
  76ENTRY(memcpy_retl_o2_plus_31_32)
  77        add     %o2, 31, %o2
  78        ba,pt   %xcc, __restore_asi
  79         add    %o2, 32, %o0
  80ENDPROC(memcpy_retl_o2_plus_31_32)
  81ENTRY(memcpy_retl_o2_plus_31_24)
  82        add     %o2, 31, %o2
  83        ba,pt   %xcc, __restore_asi
  84         add    %o2, 24, %o0
  85ENDPROC(memcpy_retl_o2_plus_31_24)
  86ENTRY(memcpy_retl_o2_plus_31_16)
  87        add     %o2, 31, %o2
  88        ba,pt   %xcc, __restore_asi
  89         add    %o2, 16, %o0
  90ENDPROC(memcpy_retl_o2_plus_31_16)
  91ENTRY(memcpy_retl_o2_plus_31_8)
  92        add     %o2, 31, %o2
  93        ba,pt   %xcc, __restore_asi
  94         add    %o2, 8, %o0
  95ENDPROC(memcpy_retl_o2_plus_31_8)
  96ENTRY(memcpy_retl_o2_plus_63)
  97        ba,pt   %xcc, __restore_asi
  98         add    %o2, 63, %o0
  99ENDPROC(memcpy_retl_o2_plus_63)
 100ENTRY(memcpy_retl_o2_plus_63_64)
 101         add    %o2, 63, %o2
 102        ba,pt   %xcc, __restore_asi
 103         add    %o2, 64, %o0
 104ENDPROC(memcpy_retl_o2_plus_63_64)
 105ENTRY(memcpy_retl_o2_plus_63_56)
 106         add    %o2, 63, %o2
 107        ba,pt   %xcc, __restore_asi
 108         add    %o2, 56, %o0
 109ENDPROC(memcpy_retl_o2_plus_63_56)
 110ENTRY(memcpy_retl_o2_plus_63_48)
 111         add    %o2, 63, %o2
 112        ba,pt   %xcc, __restore_asi
 113         add    %o2, 48, %o0
 114ENDPROC(memcpy_retl_o2_plus_63_48)
 115ENTRY(memcpy_retl_o2_plus_63_40)
 116         add    %o2, 63, %o2
 117        ba,pt   %xcc, __restore_asi
 118         add    %o2, 40, %o0
 119ENDPROC(memcpy_retl_o2_plus_63_40)
 120ENTRY(memcpy_retl_o2_plus_63_32)
 121         add    %o2, 63, %o2
 122        ba,pt   %xcc, __restore_asi
 123         add    %o2, 32, %o0
 124ENDPROC(memcpy_retl_o2_plus_63_32)
 125ENTRY(memcpy_retl_o2_plus_63_24)
 126         add    %o2, 63, %o2
 127        ba,pt   %xcc, __restore_asi
 128         add    %o2, 24, %o0
 129ENDPROC(memcpy_retl_o2_plus_63_24)
 130ENTRY(memcpy_retl_o2_plus_63_16)
 131         add    %o2, 63, %o2
 132        ba,pt   %xcc, __restore_asi
 133         add    %o2, 16, %o0
 134ENDPROC(memcpy_retl_o2_plus_63_16)
 135ENTRY(memcpy_retl_o2_plus_63_8)
 136         add    %o2, 63, %o2
 137        ba,pt   %xcc, __restore_asi
 138         add    %o2, 8, %o0
 139ENDPROC(memcpy_retl_o2_plus_63_8)
 140ENTRY(memcpy_retl_o2_plus_o5)
 141        ba,pt   %xcc, __restore_asi
 142         add    %o2, %o5, %o0
 143ENDPROC(memcpy_retl_o2_plus_o5)
 144ENTRY(memcpy_retl_o2_plus_o5_plus_1)
 145        add     %o5, 1, %o5
 146        ba,pt   %xcc, __restore_asi
 147         add    %o2, %o5, %o0
 148ENDPROC(memcpy_retl_o2_plus_o5_plus_1)
 149ENTRY(memcpy_retl_o2_plus_o5_plus_4)
 150        add     %o5, 4, %o5
 151        ba,pt   %xcc, __restore_asi
 152         add    %o2, %o5, %o0
 153ENDPROC(memcpy_retl_o2_plus_o5_plus_4)
 154ENTRY(memcpy_retl_o2_plus_o5_plus_8)
 155        add     %o5, 8, %o5
 156        ba,pt   %xcc, __restore_asi
 157         add    %o2, %o5, %o0
 158ENDPROC(memcpy_retl_o2_plus_o5_plus_8)
 159ENTRY(memcpy_retl_o2_plus_o5_plus_16)
 160        add     %o5, 16, %o5
 161        ba,pt   %xcc, __restore_asi
 162         add    %o2, %o5, %o0
 163ENDPROC(memcpy_retl_o2_plus_o5_plus_16)
 164ENTRY(memcpy_retl_o2_plus_o5_plus_24)
 165        add     %o5, 24, %o5
 166        ba,pt   %xcc, __restore_asi
 167         add    %o2, %o5, %o0
 168ENDPROC(memcpy_retl_o2_plus_o5_plus_24)
 169ENTRY(memcpy_retl_o2_plus_o5_plus_32)
 170        add     %o5, 32, %o5
 171        ba,pt   %xcc, __restore_asi
 172         add    %o2, %o5, %o0
 173ENDPROC(memcpy_retl_o2_plus_o5_plus_32)
 174ENTRY(memcpy_retl_o2_plus_o5_64)
 175        add     %o5, 32, %o5
 176        ba,pt   %xcc, __restore_asi
 177         add    %o2, %o5, %o0
 178ENDPROC(memcpy_retl_o2_plus_o5_64)
 179ENTRY(memcpy_retl_o2_plus_g1)
 180        ba,pt   %xcc, __restore_asi
 181         add    %o2, %g1, %o0
 182ENDPROC(memcpy_retl_o2_plus_g1)
 183ENTRY(memcpy_retl_o2_plus_g1_plus_1)
 184        add     %g1, 1, %g1
 185        ba,pt   %xcc, __restore_asi
 186         add    %o2, %g1, %o0
 187ENDPROC(memcpy_retl_o2_plus_g1_plus_1)
 188ENTRY(memcpy_retl_o2_plus_g1_plus_8)
 189        add     %g1, 8, %g1
 190        ba,pt   %xcc, __restore_asi
 191         add    %o2, %g1, %o0
 192ENDPROC(memcpy_retl_o2_plus_g1_plus_8)
 193ENTRY(memcpy_retl_o2_plus_o4)
 194        ba,pt   %xcc, __restore_asi
 195         add    %o2, %o4, %o0
 196ENDPROC(memcpy_retl_o2_plus_o4)
 197ENTRY(memcpy_retl_o2_plus_o4_plus_8)
 198        add     %o4, 8, %o4
 199        ba,pt   %xcc, __restore_asi
 200         add    %o2, %o4, %o0
 201ENDPROC(memcpy_retl_o2_plus_o4_plus_8)
 202ENTRY(memcpy_retl_o2_plus_o4_plus_16)
 203        add     %o4, 16, %o4
 204        ba,pt   %xcc, __restore_asi
 205         add    %o2, %o4, %o0
 206ENDPROC(memcpy_retl_o2_plus_o4_plus_16)
 207ENTRY(memcpy_retl_o2_plus_o4_plus_24)
 208        add     %o4, 24, %o4
 209        ba,pt   %xcc, __restore_asi
 210         add    %o2, %o4, %o0
 211ENDPROC(memcpy_retl_o2_plus_o4_plus_24)
 212ENTRY(memcpy_retl_o2_plus_o4_plus_32)
 213        add     %o4, 32, %o4
 214        ba,pt   %xcc, __restore_asi
 215         add    %o2, %o4, %o0
 216ENDPROC(memcpy_retl_o2_plus_o4_plus_32)
 217ENTRY(memcpy_retl_o2_plus_o4_plus_40)
 218        add     %o4, 40, %o4
 219        ba,pt   %xcc, __restore_asi
 220         add    %o2, %o4, %o0
 221ENDPROC(memcpy_retl_o2_plus_o4_plus_40)
 222ENTRY(memcpy_retl_o2_plus_o4_plus_48)
 223        add     %o4, 48, %o4
 224        ba,pt   %xcc, __restore_asi
 225         add    %o2, %o4, %o0
 226ENDPROC(memcpy_retl_o2_plus_o4_plus_48)
 227ENTRY(memcpy_retl_o2_plus_o4_plus_56)
 228        add     %o4, 56, %o4
 229        ba,pt   %xcc, __restore_asi
 230         add    %o2, %o4, %o0
 231ENDPROC(memcpy_retl_o2_plus_o4_plus_56)
 232ENTRY(memcpy_retl_o2_plus_o4_plus_64)
 233        add     %o4, 64, %o4
 234        ba,pt   %xcc, __restore_asi
 235         add    %o2, %o4, %o0
 236ENDPROC(memcpy_retl_o2_plus_o4_plus_64)
 237ENTRY(memcpy_retl_o2_plus_o5_plus_64)
 238        add     %o5, 64, %o5
 239        ba,pt   %xcc, __restore_asi
 240         add    %o2, %o5, %o0
 241ENDPROC(memcpy_retl_o2_plus_o5_plus_64)
 242ENTRY(memcpy_retl_o2_plus_o3_fp)
 243        ba,pt   %xcc, __restore_asi_fp
 244         add    %o2, %o3, %o0
 245ENDPROC(memcpy_retl_o2_plus_o3_fp)
 246ENTRY(memcpy_retl_o2_plus_o3_plus_1_fp)
 247        add     %o3, 1, %o3
 248        ba,pt   %xcc, __restore_asi_fp
 249         add    %o2, %o3, %o0
 250ENDPROC(memcpy_retl_o2_plus_o3_plus_1_fp)
 251ENTRY(memcpy_retl_o2_plus_o3_plus_4_fp)
 252        add     %o3, 4, %o3
 253        ba,pt   %xcc, __restore_asi_fp
 254         add    %o2, %o3, %o0
 255ENDPROC(memcpy_retl_o2_plus_o3_plus_4_fp)
 256ENTRY(memcpy_retl_o2_plus_o4_fp)
 257        ba,pt   %xcc, __restore_asi_fp
 258         add    %o2, %o4, %o0
 259ENDPROC(memcpy_retl_o2_plus_o4_fp)
 260ENTRY(memcpy_retl_o2_plus_o4_plus_8_fp)
 261        add     %o4, 8, %o4
 262        ba,pt   %xcc, __restore_asi_fp
 263         add    %o2, %o4, %o0
 264ENDPROC(memcpy_retl_o2_plus_o4_plus_8_fp)
 265ENTRY(memcpy_retl_o2_plus_o4_plus_16_fp)
 266        add     %o4, 16, %o4
 267        ba,pt   %xcc, __restore_asi_fp
 268         add    %o2, %o4, %o0
 269ENDPROC(memcpy_retl_o2_plus_o4_plus_16_fp)
 270ENTRY(memcpy_retl_o2_plus_o4_plus_24_fp)
 271        add     %o4, 24, %o4
 272        ba,pt   %xcc, __restore_asi_fp
 273         add    %o2, %o4, %o0
 274ENDPROC(memcpy_retl_o2_plus_o4_plus_24_fp)
 275ENTRY(memcpy_retl_o2_plus_o4_plus_32_fp)
 276        add     %o4, 32, %o4
 277        ba,pt   %xcc, __restore_asi_fp
 278         add    %o2, %o4, %o0
 279ENDPROC(memcpy_retl_o2_plus_o4_plus_32_fp)
 280ENTRY(memcpy_retl_o2_plus_o4_plus_40_fp)
 281        add     %o4, 40, %o4
 282        ba,pt   %xcc, __restore_asi_fp
 283         add    %o2, %o4, %o0
 284ENDPROC(memcpy_retl_o2_plus_o4_plus_40_fp)
 285ENTRY(memcpy_retl_o2_plus_o4_plus_48_fp)
 286        add     %o4, 48, %o4
 287        ba,pt   %xcc, __restore_asi_fp
 288         add    %o2, %o4, %o0
 289ENDPROC(memcpy_retl_o2_plus_o4_plus_48_fp)
 290ENTRY(memcpy_retl_o2_plus_o4_plus_56_fp)
 291        add     %o4, 56, %o4
 292        ba,pt   %xcc, __restore_asi_fp
 293         add    %o2, %o4, %o0
 294ENDPROC(memcpy_retl_o2_plus_o4_plus_56_fp)
 295ENTRY(memcpy_retl_o2_plus_o4_plus_64_fp)
 296        add     %o4, 64, %o4
 297        ba,pt   %xcc, __restore_asi_fp
 298         add    %o2, %o4, %o0
 299ENDPROC(memcpy_retl_o2_plus_o4_plus_64_fp)
 300ENTRY(memcpy_retl_o2_plus_o5_fp)
 301        ba,pt   %xcc, __restore_asi_fp
 302         add    %o2, %o5, %o0
 303ENDPROC(memcpy_retl_o2_plus_o5_fp)
 304ENTRY(memcpy_retl_o2_plus_o5_plus_64_fp)
 305        add     %o5, 64, %o5
 306        ba,pt   %xcc, __restore_asi_fp
 307         add    %o2, %o5, %o0
 308ENDPROC(memcpy_retl_o2_plus_o5_plus_64_fp)
 309ENTRY(memcpy_retl_o2_plus_o5_plus_56_fp)
 310        add     %o5, 56, %o5
 311        ba,pt   %xcc, __restore_asi_fp
 312         add    %o2, %o5, %o0
 313ENDPROC(memcpy_retl_o2_plus_o5_plus_56_fp)
 314ENTRY(memcpy_retl_o2_plus_o5_plus_48_fp)
 315        add     %o5, 48, %o5
 316        ba,pt   %xcc, __restore_asi_fp
 317         add    %o2, %o5, %o0
 318ENDPROC(memcpy_retl_o2_plus_o5_plus_48_fp)
 319ENTRY(memcpy_retl_o2_plus_o5_plus_40_fp)
 320        add     %o5, 40, %o5
 321        ba,pt   %xcc, __restore_asi_fp
 322         add    %o2, %o5, %o0
 323ENDPROC(memcpy_retl_o2_plus_o5_plus_40_fp)
 324ENTRY(memcpy_retl_o2_plus_o5_plus_32_fp)
 325        add     %o5, 32, %o5
 326        ba,pt   %xcc, __restore_asi_fp
 327         add    %o2, %o5, %o0
 328ENDPROC(memcpy_retl_o2_plus_o5_plus_32_fp)
 329ENTRY(memcpy_retl_o2_plus_o5_plus_24_fp)
 330        add     %o5, 24, %o5
 331        ba,pt   %xcc, __restore_asi_fp
 332         add    %o2, %o5, %o0
 333ENDPROC(memcpy_retl_o2_plus_o5_plus_24_fp)
 334ENTRY(memcpy_retl_o2_plus_o5_plus_16_fp)
 335        add     %o5, 16, %o5
 336        ba,pt   %xcc, __restore_asi_fp
 337         add    %o2, %o5, %o0
 338ENDPROC(memcpy_retl_o2_plus_o5_plus_16_fp)
 339ENTRY(memcpy_retl_o2_plus_o5_plus_8_fp)
 340        add     %o5, 8, %o5
 341        ba,pt   %xcc, __restore_asi_fp
 342         add    %o2, %o5, %o0
 343ENDPROC(memcpy_retl_o2_plus_o5_plus_8_fp)
 344
 345#endif
 346