1 /* convert psi to si inplace
3 Note that `fp' below isn't a segment register.
4 It's r6, the frame pointer. */
12 #define EXTPSISI_SN(r_msw,r_lsw,sp) ; \
13 .global __extpsisi##r_msw ; \
14 __extpsisi##r_msw: ; \
23 #define ADDPSI_AR_RN(sr,an,r_msw,r_lsw) \
24 .global __addpsi##an##r_msw ; \
25 __addpsi##an##r_msw: ; \
31 ADDPSI_AR_RN(dp,r2,r0,r1)
32 ADDPSI_AR_RN(dp,r2,r3,r4)
33 ADDPSI_AR_RN(ep,r4,r0,r1)
34 ADDPSI_AR_RN(ep,r4,r1,r2)
35 ADDPSI_AR_RN(ep,r4,r3,r4)
36 ADDPSI_AR_RN(ep,r4,r5,fp)
38 ADDPSI_AR_RN(tp,fp,r0,r1)
41 #define ADDPSI_RN_AR(r_msw,r_lsw,sr,an,t_msw,t_lsw) \
42 .global __addpsi##r_msw##an ; \
43 __addpsi##r_msw##an: ; \
56 ADDPSI_RN_AR(r0,r1,dp,r2,r4,r5)
57 ADDPSI_RN_AR(r0,r1,ep,r4,r2,r3)
61 #define EXTPSIHI_RN_RN(rm,r_msw,r_lsw) ; \
62 .global __extpsihi##rm##r_msw ; \
63 __extpsihi##rm##r_msw: ; \
68 EXTPSIHI_RN_RN(r3,r0,r1)
69 EXTPSIHI_RN_RN(r4,r0,r1)
70 EXTPSIHI_RN_RN(r5,r0,r1)
71 EXTPSIHI_RN_RN(r2,r0,r1)
75 /* ifdefed out, because gcc doesn't like the # character in the above
76 macro. The macro expands into an assembly languange comment anyways,
77 so it serves no useful purpose. */
79 #define EXTPSIHI_RN_SN(rm,r_msw,r_lsw) ; \
80 .global __extpsihi##rm##r_lsw ; \
81 __extpsihi##rm##r_lsw: ; \
86 EXTPSIHI_RN_SN(r0,dp,r2)
87 EXTPSIHI_RN_SN(r0,ep,r4)
88 EXTPSIHI_RN_SN(r1,dp,r2)
89 EXTPSIHI_RN_SN(r1,ep,r4)
90 EXTPSIHI_RN_SN(r3,dp,r2)
91 EXTPSIHI_RN_SN(r3,ep,r4)
92 EXTPSIHI_RN_SN(r5,dp,r2)
93 EXTPSIHI_RN_SN(r5,ep,r4)
94 EXTPSIHI_RN_SN(r2,ep,r4)
98 #define EXTPSISI_RN(r_msw,r_lsw) ; \
99 .global __extpsisi##r_msw ; \
100 __extpsisi##r_msw: ; \
107 #define ADDPSI_SA_SB(sa,ra,sb,rb) ; \
108 .global __addpsi##ra##rb ; \
109 __addpsi##ra##rb: ; \
122 ADDPSI_SA_SB(dp,r2,ep,r4)
123 ADDPSI_SA_SB(ep,r4,dp,r2)
124 ADDPSI_SA_SB(tp,fp,dp,r2)
125 ADDPSI_SA_SB(tp,fp,ep,r4)
127 ADDPSI_SA_SB(dp,r2,dp,r2)