1b2441318SGreg Kroah-Hartman/* SPDX-License-Identifier: GPL-2.0 */ 218269c0fSSam Ravnborg/* 318269c0fSSam Ravnborg * strncmp.S: Hand optimized Sparc assembly of GCC output from GNU libc 418269c0fSSam Ravnborg * generic strncmp routine. 518269c0fSSam Ravnborg */ 618269c0fSSam Ravnborg 7*4cdb71b6SMasahiro Yamada#include <linux/export.h> 88695c37dSDavid S. Miller#include <linux/linkage.h> 98695c37dSDavid S. Miller 1018269c0fSSam Ravnborg .text 118695c37dSDavid S. MillerENTRY(strncmp) 1218269c0fSSam Ravnborg mov %o0, %g3 1318269c0fSSam Ravnborg mov 0, %o3 1418269c0fSSam Ravnborg 1518269c0fSSam Ravnborg cmp %o2, 3 1618269c0fSSam Ravnborg ble 7f 1718269c0fSSam Ravnborg mov 0, %g2 1818269c0fSSam Ravnborg 1918269c0fSSam Ravnborg sra %o2, 2, %o4 2018269c0fSSam Ravnborg ldub [%g3], %o3 2118269c0fSSam Ravnborg 2218269c0fSSam Ravnborg0: 2318269c0fSSam Ravnborg ldub [%o1], %g2 2418269c0fSSam Ravnborg add %g3, 1, %g3 2518269c0fSSam Ravnborg and %o3, 0xff, %o0 2618269c0fSSam Ravnborg 2718269c0fSSam Ravnborg cmp %o0, 0 2818269c0fSSam Ravnborg be 8f 2918269c0fSSam Ravnborg add %o1, 1, %o1 3018269c0fSSam Ravnborg 3118269c0fSSam Ravnborg cmp %o0, %g2 3218269c0fSSam Ravnborg be,a 1f 3318269c0fSSam Ravnborg ldub [%g3], %o3 3418269c0fSSam Ravnborg 3518269c0fSSam Ravnborg retl 3618269c0fSSam Ravnborg sub %o0, %g2, %o0 3718269c0fSSam Ravnborg 3818269c0fSSam Ravnborg1: 3918269c0fSSam Ravnborg ldub [%o1], %g2 4018269c0fSSam Ravnborg add %g3,1, %g3 4118269c0fSSam Ravnborg and %o3, 0xff, %o0 4218269c0fSSam Ravnborg 4318269c0fSSam Ravnborg cmp %o0, 0 4418269c0fSSam Ravnborg be 8f 4518269c0fSSam Ravnborg add %o1, 1, %o1 4618269c0fSSam Ravnborg 4718269c0fSSam Ravnborg cmp %o0, %g2 4818269c0fSSam Ravnborg be,a 1f 4918269c0fSSam Ravnborg ldub [%g3], %o3 5018269c0fSSam Ravnborg 5118269c0fSSam Ravnborg retl 5218269c0fSSam Ravnborg sub %o0, %g2, %o0 5318269c0fSSam Ravnborg 5418269c0fSSam Ravnborg1: 5518269c0fSSam Ravnborg ldub [%o1], %g2 5618269c0fSSam Ravnborg add %g3, 1, %g3 5718269c0fSSam Ravnborg and %o3, 0xff, %o0 5818269c0fSSam Ravnborg 5918269c0fSSam Ravnborg cmp %o0, 0 6018269c0fSSam Ravnborg be 8f 6118269c0fSSam Ravnborg add %o1, 1, %o1 6218269c0fSSam Ravnborg 6318269c0fSSam Ravnborg cmp %o0, %g2 6418269c0fSSam Ravnborg be,a 1f 6518269c0fSSam Ravnborg ldub [%g3], %o3 6618269c0fSSam Ravnborg 6718269c0fSSam Ravnborg retl 6818269c0fSSam Ravnborg sub %o0, %g2, %o0 6918269c0fSSam Ravnborg 7018269c0fSSam Ravnborg1: 7118269c0fSSam Ravnborg ldub [%o1], %g2 7218269c0fSSam Ravnborg add %g3, 1, %g3 7318269c0fSSam Ravnborg and %o3, 0xff, %o0 7418269c0fSSam Ravnborg 7518269c0fSSam Ravnborg cmp %o0, 0 7618269c0fSSam Ravnborg be 8f 7718269c0fSSam Ravnborg add %o1, 1, %o1 7818269c0fSSam Ravnborg 7918269c0fSSam Ravnborg cmp %o0, %g2 8018269c0fSSam Ravnborg be 1f 8118269c0fSSam Ravnborg add %o4, -1, %o4 8218269c0fSSam Ravnborg 8318269c0fSSam Ravnborg retl 8418269c0fSSam Ravnborg sub %o0, %g2, %o0 8518269c0fSSam Ravnborg 8618269c0fSSam Ravnborg1: 8718269c0fSSam Ravnborg 8818269c0fSSam Ravnborg cmp %o4, 0 8918269c0fSSam Ravnborg bg,a 0b 9018269c0fSSam Ravnborg ldub [%g3], %o3 9118269c0fSSam Ravnborg 9218269c0fSSam Ravnborg b 7f 9318269c0fSSam Ravnborg and %o2, 3, %o2 9418269c0fSSam Ravnborg 9518269c0fSSam Ravnborg9: 9618269c0fSSam Ravnborg ldub [%o1], %g2 9718269c0fSSam Ravnborg add %g3, 1, %g3 9818269c0fSSam Ravnborg and %o3, 0xff, %o0 9918269c0fSSam Ravnborg 10018269c0fSSam Ravnborg cmp %o0, 0 10118269c0fSSam Ravnborg be 8f 10218269c0fSSam Ravnborg add %o1, 1, %o1 10318269c0fSSam Ravnborg 10418269c0fSSam Ravnborg cmp %o0, %g2 10518269c0fSSam Ravnborg be 7f 10618269c0fSSam Ravnborg add %o2, -1, %o2 10718269c0fSSam Ravnborg 10818269c0fSSam Ravnborg8: 10918269c0fSSam Ravnborg retl 11018269c0fSSam Ravnborg sub %o0, %g2, %o0 11118269c0fSSam Ravnborg 11218269c0fSSam Ravnborg7: 11318269c0fSSam Ravnborg cmp %o2, 0 11418269c0fSSam Ravnborg bg,a 9b 11518269c0fSSam Ravnborg ldub [%g3], %o3 11618269c0fSSam Ravnborg 11718269c0fSSam Ravnborg and %g2, 0xff, %o0 11818269c0fSSam Ravnborg retl 11918269c0fSSam Ravnborg sub %o3, %o0, %o0 1208695c37dSDavid S. MillerENDPROC(strncmp) 121d3867f04SAl ViroEXPORT_SYMBOL(strncmp) 122