diff options
author | Sid Manning <sidneym@codeaurora.org> | 2020-10-13 16:17:50 -0500 |
---|---|---|
committer | Brian Cain <bcain@codeaurora.org> | 2021-05-03 11:04:22 -0500 |
commit | f1f99adf05f2138ff2646d756d4674e302e8d02d (patch) | |
tree | 9b798fa2ae49a37f95070babf1ded095804722d3 /arch/hexagon/lib/modsi3.S | |
parent | Hexagon: remove DEBUG from comet config (diff) | |
download | linux-dev-f1f99adf05f2138ff2646d756d4674e302e8d02d.tar.xz linux-dev-f1f99adf05f2138ff2646d756d4674e302e8d02d.zip |
Hexagon: add target builtins to kernel
Add the compiler-rt builtins like memcpy to the hexagon kernel.
Signed-off-by: Sid Manning <sidneym@codeaurora.org>
Add SYM_FUNC_START/END, ksyms exports
Signed-off-by: Brian Cain <bcain@codeaurora.org>
Tested-by: Nick Desaulniers <ndesaulniers@google.com>
Diffstat (limited to 'arch/hexagon/lib/modsi3.S')
-rw-r--r-- | arch/hexagon/lib/modsi3.S | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/arch/hexagon/lib/modsi3.S b/arch/hexagon/lib/modsi3.S new file mode 100644 index 000000000000..9ea1c86efac2 --- /dev/null +++ b/arch/hexagon/lib/modsi3.S @@ -0,0 +1,46 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +/* + * Copyright (c) 2021, The Linux Foundation. All rights reserved. + */ + +#include <linux/linkage.h> + +SYM_FUNC_START(__hexagon_modsi3) + { + p2 = cmp.ge(r0,#0) + r2 = abs(r0) + r1 = abs(r1) + } + { + r3 = cl0(r2) + r4 = cl0(r1) + p0 = cmp.gtu(r1,r2) + } + { + r3 = sub(r4,r3) + if (p0) jumpr r31 + } + { + p1 = cmp.eq(r3,#0) + loop0(1f,r3) + r0 = r2 + r2 = lsl(r1,r3) + } + .falign +1: + { + p0 = cmp.gtu(r2,r0) + if (!p0.new) r0 = sub(r0,r2) + r2 = lsr(r2,#1) + if (p1) r1 = #0 + }:endloop0 + { + p0 = cmp.gtu(r2,r0) + if (!p0.new) r0 = sub(r0,r1) + if (p2) jumpr r31 + } + { + r0 = neg(r0) + jumpr r31 + } +SYM_FUNC_END(__hexagon_modsi3) |