1/* 2 * Copyright 2007 Analog Devices Inc. 3 * 4 * Licensed under the Clear BSD license or the GPL-2 (or later) 5 */ 6 7.align 2 8.global ___umulsi3_highpart; 9.type ___umulsi3_highpart, STT_FUNC; 10 11#ifdef CONFIG_ARITHMETIC_OPS_L1 12.section .l1.text 13#else 14.text 15#endif 16 17___umulsi3_highpart: 18 R2 = R1.H * R0.H, R3 = R1.L * R0.H (FU); 19 R0 = R1.L * R0.L, R1 = R1.H * R0.L (FU); 20 R0 >>= 16; 21 /* Unsigned multiplication has the nice property that we can 22 ignore carry on this first addition. */ 23 R0 = R0 + R3; 24 R0 = R0 + R1; 25 cc = ac0; 26 R1 = cc; 27 R1 = PACK(R1.l,R0.h); 28 R0 = R1 + R2; 29 RTS; 30 31.size ___umulsi3_highpart, .-___umulsi3_highpart 32