18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 28c2ecf20Sopenharmony_ci#include <linux/linkage.h> 38c2ecf20Sopenharmony_ci#include <asm/export.h> 48c2ecf20Sopenharmony_ci 58c2ecf20Sopenharmony_ci .text 68c2ecf20Sopenharmony_ci .align 4 78c2ecf20Sopenharmony_ciENTRY(__multi3) /* %o0 = u, %o1 = v */ 88c2ecf20Sopenharmony_ci mov %o1, %g1 98c2ecf20Sopenharmony_ci srl %o3, 0, %o4 108c2ecf20Sopenharmony_ci mulx %o4, %g1, %o1 118c2ecf20Sopenharmony_ci srlx %g1, 0x20, %g3 128c2ecf20Sopenharmony_ci mulx %g3, %o4, %g7 138c2ecf20Sopenharmony_ci sllx %g7, 0x20, %o5 148c2ecf20Sopenharmony_ci srl %g1, 0, %o4 158c2ecf20Sopenharmony_ci sub %o1, %o5, %o5 168c2ecf20Sopenharmony_ci srlx %o5, 0x20, %o5 178c2ecf20Sopenharmony_ci addcc %g7, %o5, %g7 188c2ecf20Sopenharmony_ci srlx %o3, 0x20, %o5 198c2ecf20Sopenharmony_ci mulx %o4, %o5, %o4 208c2ecf20Sopenharmony_ci mulx %g3, %o5, %o5 218c2ecf20Sopenharmony_ci sethi %hi(0x80000000), %g3 228c2ecf20Sopenharmony_ci addcc %g7, %o4, %g7 238c2ecf20Sopenharmony_ci srlx %g7, 0x20, %g7 248c2ecf20Sopenharmony_ci add %g3, %g3, %g3 258c2ecf20Sopenharmony_ci movcc %xcc, %g0, %g3 268c2ecf20Sopenharmony_ci addcc %o5, %g7, %o5 278c2ecf20Sopenharmony_ci sllx %o4, 0x20, %o4 288c2ecf20Sopenharmony_ci add %o1, %o4, %o1 298c2ecf20Sopenharmony_ci add %o5, %g3, %g2 308c2ecf20Sopenharmony_ci mulx %g1, %o2, %g1 318c2ecf20Sopenharmony_ci add %g1, %g2, %g1 328c2ecf20Sopenharmony_ci mulx %o0, %o3, %o0 338c2ecf20Sopenharmony_ci retl 348c2ecf20Sopenharmony_ci add %g1, %o0, %o0 358c2ecf20Sopenharmony_ciENDPROC(__multi3) 368c2ecf20Sopenharmony_ciEXPORT_SYMBOL(__multi3) 37