1*d2912cb1SThomas Gleixner/* SPDX-License-Identifier: GPL-2.0-only */ 2f741a1aaSNicolas Pitre/* 3f741a1aaSNicolas Pitre * linux/arch/arm/lib/muldi3.S 4f741a1aaSNicolas Pitre * 5f741a1aaSNicolas Pitre * Author: Nicolas Pitre 6f741a1aaSNicolas Pitre * Created: Oct 19, 2005 7f741a1aaSNicolas Pitre * Copyright: Monta Vista Software, Inc. 8f741a1aaSNicolas Pitre */ 9f741a1aaSNicolas Pitre 10f741a1aaSNicolas Pitre#include <linux/linkage.h> 116ebbf2ceSRussell King#include <asm/assembler.h> 12f741a1aaSNicolas Pitre 13f741a1aaSNicolas Pitre#ifdef __ARMEB__ 14f741a1aaSNicolas Pitre#define xh r0 15f741a1aaSNicolas Pitre#define xl r1 16f741a1aaSNicolas Pitre#define yh r2 17f741a1aaSNicolas Pitre#define yl r3 18f741a1aaSNicolas Pitre#else 19f741a1aaSNicolas Pitre#define xl r0 20f741a1aaSNicolas Pitre#define xh r1 21f741a1aaSNicolas Pitre#define yl r2 22f741a1aaSNicolas Pitre#define yh r3 23f741a1aaSNicolas Pitre#endif 24f741a1aaSNicolas Pitre 25f741a1aaSNicolas PitreENTRY(__muldi3) 26ba95e4e4SNicolas PitreENTRY(__aeabi_lmul) 27f741a1aaSNicolas Pitre 28f741a1aaSNicolas Pitre mul xh, yl, xh 29f741a1aaSNicolas Pitre mla xh, xl, yh, xh 303c8fdae7SRussell King mov ip, xl, lsr #16 313c8fdae7SRussell King mov yh, yl, lsr #16 32f741a1aaSNicolas Pitre bic xl, xl, ip, lsl #16 33f741a1aaSNicolas Pitre bic yl, yl, yh, lsl #16 34f741a1aaSNicolas Pitre mla xh, yh, ip, xh 35f741a1aaSNicolas Pitre mul yh, xl, yh 36f741a1aaSNicolas Pitre mul xl, yl, xl 37f741a1aaSNicolas Pitre mul ip, yl, ip 38f741a1aaSNicolas Pitre adds xl, xl, yh, lsl #16 39f741a1aaSNicolas Pitre adc xh, xh, yh, lsr #16 40f741a1aaSNicolas Pitre adds xl, xl, ip, lsl #16 41f741a1aaSNicolas Pitre adc xh, xh, ip, lsr #16 426ebbf2ceSRussell King ret lr 43f741a1aaSNicolas Pitre 4493ed3970SCatalin MarinasENDPROC(__muldi3) 4593ed3970SCatalin MarinasENDPROC(__aeabi_lmul) 46