1f741a1aab5fd7892927208ca37eb86b9ea85784aNicolas Pitre/* 2f741a1aab5fd7892927208ca37eb86b9ea85784aNicolas Pitre * linux/arch/arm/lib/muldi3.S 3f741a1aab5fd7892927208ca37eb86b9ea85784aNicolas Pitre * 4f741a1aab5fd7892927208ca37eb86b9ea85784aNicolas Pitre * Author: Nicolas Pitre 5f741a1aab5fd7892927208ca37eb86b9ea85784aNicolas Pitre * Created: Oct 19, 2005 6f741a1aab5fd7892927208ca37eb86b9ea85784aNicolas Pitre * Copyright: Monta Vista Software, Inc. 7f741a1aab5fd7892927208ca37eb86b9ea85784aNicolas Pitre * 8f741a1aab5fd7892927208ca37eb86b9ea85784aNicolas Pitre * This program is free software; you can redistribute it and/or modify 9f741a1aab5fd7892927208ca37eb86b9ea85784aNicolas Pitre * it under the terms of the GNU General Public License version 2 as 10f741a1aab5fd7892927208ca37eb86b9ea85784aNicolas Pitre * published by the Free Software Foundation. 11f741a1aab5fd7892927208ca37eb86b9ea85784aNicolas Pitre */ 12f741a1aab5fd7892927208ca37eb86b9ea85784aNicolas Pitre 13f741a1aab5fd7892927208ca37eb86b9ea85784aNicolas Pitre#include <linux/linkage.h> 14f741a1aab5fd7892927208ca37eb86b9ea85784aNicolas Pitre 15f741a1aab5fd7892927208ca37eb86b9ea85784aNicolas Pitre#ifdef __ARMEB__ 16f741a1aab5fd7892927208ca37eb86b9ea85784aNicolas Pitre#define xh r0 17f741a1aab5fd7892927208ca37eb86b9ea85784aNicolas Pitre#define xl r1 18f741a1aab5fd7892927208ca37eb86b9ea85784aNicolas Pitre#define yh r2 19f741a1aab5fd7892927208ca37eb86b9ea85784aNicolas Pitre#define yl r3 20f741a1aab5fd7892927208ca37eb86b9ea85784aNicolas Pitre#else 21f741a1aab5fd7892927208ca37eb86b9ea85784aNicolas Pitre#define xl r0 22f741a1aab5fd7892927208ca37eb86b9ea85784aNicolas Pitre#define xh r1 23f741a1aab5fd7892927208ca37eb86b9ea85784aNicolas Pitre#define yl r2 24f741a1aab5fd7892927208ca37eb86b9ea85784aNicolas Pitre#define yh r3 25f741a1aab5fd7892927208ca37eb86b9ea85784aNicolas Pitre#endif 26f741a1aab5fd7892927208ca37eb86b9ea85784aNicolas Pitre 27f741a1aab5fd7892927208ca37eb86b9ea85784aNicolas PitreENTRY(__muldi3) 28ba95e4e4a0a8a3c6aba363d45f78d5f2e2d111ebNicolas PitreENTRY(__aeabi_lmul) 29f741a1aab5fd7892927208ca37eb86b9ea85784aNicolas Pitre 30f741a1aab5fd7892927208ca37eb86b9ea85784aNicolas Pitre mul xh, yl, xh 31f741a1aab5fd7892927208ca37eb86b9ea85784aNicolas Pitre mla xh, xl, yh, xh 323c8fdae78cf5d73c6739912a1ff087c0f23b2a47Russell King mov ip, xl, lsr #16 333c8fdae78cf5d73c6739912a1ff087c0f23b2a47Russell King mov yh, yl, lsr #16 34f741a1aab5fd7892927208ca37eb86b9ea85784aNicolas Pitre bic xl, xl, ip, lsl #16 35f741a1aab5fd7892927208ca37eb86b9ea85784aNicolas Pitre bic yl, yl, yh, lsl #16 36f741a1aab5fd7892927208ca37eb86b9ea85784aNicolas Pitre mla xh, yh, ip, xh 37f741a1aab5fd7892927208ca37eb86b9ea85784aNicolas Pitre mul yh, xl, yh 38f741a1aab5fd7892927208ca37eb86b9ea85784aNicolas Pitre mul xl, yl, xl 39f741a1aab5fd7892927208ca37eb86b9ea85784aNicolas Pitre mul ip, yl, ip 40f741a1aab5fd7892927208ca37eb86b9ea85784aNicolas Pitre adds xl, xl, yh, lsl #16 41f741a1aab5fd7892927208ca37eb86b9ea85784aNicolas Pitre adc xh, xh, yh, lsr #16 42f741a1aab5fd7892927208ca37eb86b9ea85784aNicolas Pitre adds xl, xl, ip, lsl #16 43f741a1aab5fd7892927208ca37eb86b9ea85784aNicolas Pitre adc xh, xh, ip, lsr #16 44f741a1aab5fd7892927208ca37eb86b9ea85784aNicolas Pitre mov pc, lr 45f741a1aab5fd7892927208ca37eb86b9ea85784aNicolas Pitre 4693ed3970114983543bbebd195bef65db84444ea2Catalin MarinasENDPROC(__muldi3) 4793ed3970114983543bbebd195bef65db84444ea2Catalin MarinasENDPROC(__aeabi_lmul) 48