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/umodsi3.S | |
parent | aaa44952bbd1d4db14a4d676bf9595bb5db7e7b0 (diff) |
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/umodsi3.S')
-rw-r--r-- | arch/hexagon/lib/umodsi3.S | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/arch/hexagon/lib/umodsi3.S b/arch/hexagon/lib/umodsi3.S new file mode 100644 index 000000000000..280bf06a55e7 --- /dev/null +++ b/arch/hexagon/lib/umodsi3.S @@ -0,0 +1,36 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +/* + * Copyright (c) 2021, The Linux Foundation. All rights reserved. + */ + +#include <linux/linkage.h> + +SYM_FUNC_START(__hexagon_umodsi3) + { + r2 = cl0(r0) + r3 = cl0(r1) + p0 = cmp.gtu(r1,r0) + } + { + r2 = sub(r3,r2) + if (p0) jumpr r31 + } + { + loop0(1f,r2) + p1 = cmp.eq(r2,#0) + r2 = lsl(r1,r2) + } + .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) + jumpr r31 + } +SYM_FUNC_END(__hexagon_umodsi3) |