0001
0002
0003
0004
0005
0006
0007
0008 .text
0009
0010 .globl __do_int_store
0011 __do_int_store:
0012 rd %asi, %o4
0013 wr %o3, 0, %asi
0014 mov %o2, %g3
0015 cmp %o1, 2
0016 be,pn %icc, 2f
0017 cmp %o1, 4
0018 be,pt %icc, 1f
0019 srlx %g3, 24, %g2
0020 srlx %g3, 56, %g1
0021 srlx %g3, 48, %g7
0022 4: stba %g1, [%o0] %asi
0023 srlx %g3, 40, %g1
0024 5: stba %g7, [%o0 + 1] %asi
0025 srlx %g3, 32, %g7
0026 6: stba %g1, [%o0 + 2] %asi
0027 7: stba %g7, [%o0 + 3] %asi
0028 srlx %g3, 16, %g1
0029 8: stba %g2, [%o0 + 4] %asi
0030 srlx %g3, 8, %g7
0031 9: stba %g1, [%o0 + 5] %asi
0032 10: stba %g7, [%o0 + 6] %asi
0033 ba,pt %xcc, 0f
0034 11: stba %g3, [%o0 + 7] %asi
0035 1: srl %g3, 16, %g7
0036 12: stba %g2, [%o0] %asi
0037 srl %g3, 8, %g2
0038 13: stba %g7, [%o0 + 1] %asi
0039 14: stba %g2, [%o0 + 2] %asi
0040 ba,pt %xcc, 0f
0041 15: stba %g3, [%o0 + 3] %asi
0042 2: srl %g3, 8, %g2
0043 16: stba %g2, [%o0] %asi
0044 17: stba %g3, [%o0 + 1] %asi
0045 0:
0046 wr %o4, 0x0, %asi
0047 retl
0048 mov 0, %o0
0049 .size __do_int_store, .-__do_int_store
0050
0051 .section __ex_table,"a"
0052 .word 4b, __retl_efault
0053 .word 5b, __retl_efault
0054 .word 6b, __retl_efault
0055 .word 7b, __retl_efault
0056 .word 8b, __retl_efault
0057 .word 9b, __retl_efault
0058 .word 10b, __retl_efault
0059 .word 11b, __retl_efault
0060 .word 12b, __retl_efault
0061 .word 13b, __retl_efault
0062 .word 14b, __retl_efault
0063 .word 15b, __retl_efault
0064 .word 16b, __retl_efault
0065 .word 17b, __retl_efault
0066 .previous
0067
0068 .globl do_int_load
0069 do_int_load:
0070 rd %asi, %o5
0071 wr %o4, 0, %asi
0072 cmp %o1, 8
0073 bge,pn %icc, 9f
0074 cmp %o1, 4
0075 be,pt %icc, 6f
0076 4: lduba [%o2] %asi, %g2
0077 5: lduba [%o2 + 1] %asi, %g3
0078 sll %g2, 8, %g2
0079 brz,pt %o3, 3f
0080 add %g2, %g3, %g2
0081 sllx %g2, 48, %g2
0082 srax %g2, 48, %g2
0083 3: ba,pt %xcc, 0f
0084 stx %g2, [%o0]
0085 6: lduba [%o2 + 1] %asi, %g3
0086 sll %g2, 24, %g2
0087 7: lduba [%o2 + 2] %asi, %g7
0088 sll %g3, 16, %g3
0089 8: lduba [%o2 + 3] %asi, %g1
0090 sll %g7, 8, %g7
0091 or %g2, %g3, %g2
0092 or %g7, %g1, %g7
0093 or %g2, %g7, %g2
0094 brnz,a,pt %o3, 3f
0095 sra %g2, 0, %g2
0096 3: ba,pt %xcc, 0f
0097 stx %g2, [%o0]
0098 9: lduba [%o2] %asi, %g2
0099 10: lduba [%o2 + 1] %asi, %g3
0100 sllx %g2, 56, %g2
0101 11: lduba [%o2 + 2] %asi, %g7
0102 sllx %g3, 48, %g3
0103 12: lduba [%o2 + 3] %asi, %g1
0104 sllx %g7, 40, %g7
0105 sllx %g1, 32, %g1
0106 or %g2, %g3, %g2
0107 or %g7, %g1, %g7
0108 13: lduba [%o2 + 4] %asi, %g3
0109 or %g2, %g7, %g7
0110 14: lduba [%o2 + 5] %asi, %g1
0111 sllx %g3, 24, %g3
0112 15: lduba [%o2 + 6] %asi, %g2
0113 sllx %g1, 16, %g1
0114 or %g7, %g3, %g7
0115 16: lduba [%o2 + 7] %asi, %g3
0116 sllx %g2, 8, %g2
0117 or %g7, %g1, %g7
0118 or %g2, %g3, %g2
0119 or %g7, %g2, %g7
0120 cmp %o1, 8
0121 be,a,pt %icc, 0f
0122 stx %g7, [%o0]
0123 srlx %g7, 32, %g2
0124 sra %g7, 0, %g7
0125 stx %g2, [%o0]
0126 stx %g7, [%o0 + 8]
0127 0:
0128 wr %o5, 0x0, %asi
0129 retl
0130 mov 0, %o0
0131 .size do_int_load, .-do_int_load
0132
0133 .section __ex_table,"a"
0134 .word 4b, __retl_efault
0135 .word 5b, __retl_efault
0136 .word 6b, __retl_efault
0137 .word 7b, __retl_efault
0138 .word 8b, __retl_efault
0139 .word 9b, __retl_efault
0140 .word 10b, __retl_efault
0141 .word 11b, __retl_efault
0142 .word 12b, __retl_efault
0143 .word 13b, __retl_efault
0144 .word 14b, __retl_efault
0145 .word 15b, __retl_efault
0146 .word 16b, __retl_efault
0147 .previous