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/udivsi3.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/udivsi3.S')
-rw-r--r-- | arch/hexagon/lib/udivsi3.S | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/arch/hexagon/lib/udivsi3.S b/arch/hexagon/lib/udivsi3.S new file mode 100644 index 000000000000..477f27b9311c --- /dev/null +++ b/arch/hexagon/lib/udivsi3.S @@ -0,0 +1,38 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +/* + * Copyright (c) 2021, The Linux Foundation. All rights reserved. + */ + +#include <linux/linkage.h> + +SYM_FUNC_START(__hexagon_udivsi3) + { + r2 = cl0(r0) + r3 = cl0(r1) + r5:4 = combine(#1,#0) + p0 = cmp.gtu(r1,r0) + } + { + r6 = sub(r3,r2) + r4 = r1 + r1:0 = combine(r0,r4) + if (p0) jumpr r31 + } + { + r3:2 = vlslw(r5:4,r6) + loop0(1f,r6) + } + .falign +1: + { + p0 = cmp.gtu(r2,r1) + if (!p0.new) r1 = sub(r1,r2) + if (!p0.new) r0 = add(r0,r3) + r3:2 = vlsrw(r3:2,#1) + }:endloop0 + { + p0 = cmp.gtu(r2,r1) + if (!p0.new) r0 = add(r0,r3) + jumpr r31 + } +SYM_FUNC_END(__hexagon_udivsi3) |