From 26984c7de4ac14347e8395e6e111677a707807f2 Mon Sep 17 00:00:00 2001 From: Dino Li Date: Fri, 14 Aug 2015 17:24:34 +0800 Subject: it8380dev: add __muldi3.S symptom: Enable debugging and profiling statistics for hook functions (#define CONFIG_HOOK_DEBUG), and __muldi3 function is missing while link. Signed-off-by: Dino Li BRANCH=none BUG=none TEST=1. compile successful and hook_notify starting to print message. 2. console "hookstats" Change-Id: Ia2815bcefd0f9ac06dab9c75ea6ee06312878ca2 Reviewed-on: https://chromium-review.googlesource.com/293432 Reviewed-by: Randall Spangler Commit-Queue: Dino Li Tested-by: Dino Li --- core/nds32/__muldi3.S | 40 ++++++++++++++++++++++++++++++++++++++++ core/nds32/build.mk | 2 +- 2 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 core/nds32/__muldi3.S diff --git a/core/nds32/__muldi3.S b/core/nds32/__muldi3.S new file mode 100644 index 0000000000..ef4a491183 --- /dev/null +++ b/core/nds32/__muldi3.S @@ -0,0 +1,40 @@ +/* Copyright 2015 The Chromium OS Authors. All rights reserved. + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + * + * __muldi3.S: signed 64 bit multiplication + */ + +#define P1H $r1 +#define P1L $r0 +#define P2H $r3 +#define P2L $r2 + + .text + .align 2 + .globl __muldi3 + .type __muldi3, @function +__muldi3: + mul $r5, P1H, P2L ! (ah=a>>31)*(bl=b&0xffffffff) + srli P1H, P1L, 16 ! alh=al>>16 + maddr32 $r5, P1L, P2H ! ah*bl+(bh=b>>31)*(al=a&0xffffffff) + zeh P1L, P1L ! all=al&0xffff + srli P2H, P2L, 16 ! blh=bl>>16 + zeh P2L, P2L ! bll=bl&0xffff + + mul $ta, P1L, P2H ! zA=all*blh + mul $r4, P1L, P2L ! zl=all*bll + mul P2L, P1H, P2L ! zB=alh*bll + add P1L, $ta, P2L ! zA+=zB + slt $ta, P1L, P2L ! zA>16 + add P1H, P1H, $ta ! zh+=(zA>>16) + add P1L, $r4, P2L ! zl+=(zA<<16) + slt $ta, P1L, $r4 ! zl