196f1050d3df105c9ae6c6ac224f370199ea82fcdRobin Getz/* 296f1050d3df105c9ae6c6ac224f370199ea82fcdRobin Getz * Copyright 2007 Analog Devices Inc. 396f1050d3df105c9ae6c6ac224f370199ea82fcdRobin Getz * 496f1050d3df105c9ae6c6ac224f370199ea82fcdRobin Getz * Licensed under the ADI BSD license or the GPL-2 (or later) 596f1050d3df105c9ae6c6ac224f370199ea82fcdRobin Getz */ 696f1050d3df105c9ae6c6ac224f370199ea82fcdRobin Getz 71394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu.align 2 81394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu.global ___smulsi3_highpart; 91394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu.type ___smulsi3_highpart, STT_FUNC; 101394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu 111394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#ifdef CONFIG_ARITHMETIC_OPS_L1 121394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu.section .l1.text 131394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#else 141394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu.text 151394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif 161394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu 171394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu___smulsi3_highpart: 181394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu R2 = R1.L * R0.L (FU); 191394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu R3 = R1.H * R0.L (IS,M); 201394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu R0 = R0.H * R1.H, R1 = R0.H * R1.L (IS,M); 211394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu 221394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu R1.L = R2.H + R1.L; 231394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu cc = ac0; 241394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu R2 = cc; 251394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu 261394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu R1.L = R1.L + R3.L; 271394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu cc = ac0; 281394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu R1 >>>= 16; 291394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu R3 >>>= 16; 301394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu R1 = R1 + R3; 311394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu R1 = R1 + R2; 321394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu R2 = cc; 331394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu R1 = R1 + R2; 341394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu 351394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu R0 = R0 + R1; 361394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu RTS; 3751be24c351bc9ee4937121100adb098eeb1effddMike Frysinger 3851be24c351bc9ee4937121100adb098eeb1effddMike Frysinger.size ___smulsi3_highpart, .-___smulsi3_highpart 39