1*83d290c5STom Rini/* SPDX-License-Identifier: GPL-2.0 */ 20bf65c64SMarek Vasut/* 30bf65c64SMarek Vasut * linux/arch/arm/lib/muldi3.S 40bf65c64SMarek Vasut * 50bf65c64SMarek Vasut * Author: Nicolas Pitre 60bf65c64SMarek Vasut * Created: Oct 19, 2005 70bf65c64SMarek Vasut * Copyright: Monta Vista Software, Inc. 80bf65c64SMarek Vasut */ 90bf65c64SMarek Vasut 100bf65c64SMarek Vasut#include <linux/linkage.h> 110bf65c64SMarek Vasut#include <asm/assembler.h> 120bf65c64SMarek Vasut 130bf65c64SMarek Vasut#ifdef __ARMEB__ 140bf65c64SMarek Vasut#define xh r0 150bf65c64SMarek Vasut#define xl r1 160bf65c64SMarek Vasut#define yh r2 170bf65c64SMarek Vasut#define yl r3 180bf65c64SMarek Vasut#else 190bf65c64SMarek Vasut#define xl r0 200bf65c64SMarek Vasut#define xh r1 210bf65c64SMarek Vasut#define yl r2 220bf65c64SMarek Vasut#define yh r3 230bf65c64SMarek Vasut#endif 240bf65c64SMarek Vasut 25b2f18584SStephen Warren.pushsection .text.__muldi3, "ax" 260bf65c64SMarek VasutENTRY(__muldi3) 270bf65c64SMarek VasutENTRY(__aeabi_lmul) 280bf65c64SMarek Vasut 290bf65c64SMarek Vasut mul xh, yl, xh 300bf65c64SMarek Vasut mla xh, xl, yh, xh 310bf65c64SMarek Vasut mov ip, xl, lsr #16 320bf65c64SMarek Vasut mov yh, yl, lsr #16 330bf65c64SMarek Vasut bic xl, xl, ip, lsl #16 340bf65c64SMarek Vasut bic yl, yl, yh, lsl #16 350bf65c64SMarek Vasut mla xh, yh, ip, xh 360bf65c64SMarek Vasut mul yh, xl, yh 370bf65c64SMarek Vasut mul xl, yl, xl 380bf65c64SMarek Vasut mul ip, yl, ip 390bf65c64SMarek Vasut adds xl, xl, yh, lsl #16 400bf65c64SMarek Vasut adc xh, xh, yh, lsr #16 410bf65c64SMarek Vasut adds xl, xl, ip, lsl #16 420bf65c64SMarek Vasut adc xh, xh, ip, lsr #16 430bf65c64SMarek Vasut ret lr 440bf65c64SMarek Vasut 450bf65c64SMarek VasutENDPROC(__muldi3) 460bf65c64SMarek VasutENDPROC(__aeabi_lmul) 47b2f18584SStephen Warren.popsection 48