tishift.S 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. /* SPDX-License-Identifier: GPL-2.0 */
  2. #include <linux/export.h>
  3. #include <linux/linkage.h>
  4. #include <asm/nospec-insn.h>
  5. .section .noinstr.text, "ax"
  6. GEN_BR_THUNK %r14
  7. SYM_FUNC_START(__ashlti3)
  8. lmg %r0,%r1,0(%r3)
  9. cije %r4,0,1f
  10. lhi %r3,64
  11. sr %r3,%r4
  12. jnh 0f
  13. srlg %r3,%r1,0(%r3)
  14. sllg %r0,%r0,0(%r4)
  15. sllg %r1,%r1,0(%r4)
  16. ogr %r0,%r3
  17. j 1f
  18. 0: sllg %r0,%r1,-64(%r4)
  19. lghi %r1,0
  20. 1: stmg %r0,%r1,0(%r2)
  21. BR_EX %r14
  22. SYM_FUNC_END(__ashlti3)
  23. EXPORT_SYMBOL(__ashlti3)
  24. SYM_FUNC_START(__ashrti3)
  25. lmg %r0,%r1,0(%r3)
  26. cije %r4,0,1f
  27. lhi %r3,64
  28. sr %r3,%r4
  29. jnh 0f
  30. sllg %r3,%r0,0(%r3)
  31. srlg %r1,%r1,0(%r4)
  32. srag %r0,%r0,0(%r4)
  33. ogr %r1,%r3
  34. j 1f
  35. 0: srag %r1,%r0,-64(%r4)
  36. srag %r0,%r0,63
  37. 1: stmg %r0,%r1,0(%r2)
  38. BR_EX %r14
  39. SYM_FUNC_END(__ashrti3)
  40. EXPORT_SYMBOL(__ashrti3)
  41. SYM_FUNC_START(__lshrti3)
  42. lmg %r0,%r1,0(%r3)
  43. cije %r4,0,1f
  44. lhi %r3,64
  45. sr %r3,%r4
  46. jnh 0f
  47. sllg %r3,%r0,0(%r3)
  48. srlg %r1,%r1,0(%r4)
  49. srlg %r0,%r0,0(%r4)
  50. ogr %r1,%r3
  51. j 1f
  52. 0: srlg %r1,%r0,-64(%r4)
  53. lghi %r0,0
  54. 1: stmg %r0,%r1,0(%r2)
  55. BR_EX %r14
  56. SYM_FUNC_END(__lshrti3)
  57. EXPORT_SYMBOL(__lshrti3)