Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

sh: Provide an __sdivsi3_2 export for sh64.

Newer code paths that are heavier in 64-bit math manage to get this
generated by newer compilers, provide a definition and export
accordingly. This is trivially wrapped around the existing __sdivsi3
code.

Signed-off-by: Paul Mundt <lethal@linux-sh.org>

+7 -1
+2
arch/sh/kernel/sh_ksyms_64.c
··· 76 76 #define DECLARE_EXPORT(name) extern void name(void);EXPORT_SYMBOL(name) 77 77 78 78 DECLARE_EXPORT(__sdivsi3); 79 + DECLARE_EXPORT(__sdivsi3_1); 80 + DECLARE_EXPORT(__sdivsi3_2); 79 81 DECLARE_EXPORT(__udivsi3); 80 82 DECLARE_EXPORT(__div_table);
+5 -1
arch/sh/lib64/sdivsi3.S
··· 1 1 .global __sdivsi3 2 + .global __sdivsi3_1 3 + .global __sdivsi3_2 2 4 .section .text..SHmedia32,"ax" 3 5 .align 2 4 6 ··· 8 6 /* clobbered: r1,r18,r19,r20,r21,r25,tr0 */ 9 7 /* result in r0 */ 10 8 __sdivsi3: 9 + __sdivsi3_1: 11 10 ptb __div_table,tr0 11 + gettr tr0,r20 12 12 13 + __sdivsi3_2: 13 14 nsb r5, r1 14 15 shlld r5, r1, r25 /* normalize; [-2 ..1, 1..2) in s2.62 */ 15 16 shari r25, 58, r21 /* extract 5(6) bit index (s2.4 with hole -1..1) */ 16 17 /* bubble */ 17 - gettr tr0,r20 18 18 ldx.ub r20, r21, r19 /* u0.8 */ 19 19 shari r25, 32, r25 /* normalize to s2.30 */ 20 20 shlli r21, 1, r21