root/arch/c6x/lib/divremi.S

/* [<][>][^][v][top][bottom][index][help] */
   1 ;; SPDX-License-Identifier: GPL-2.0-or-later
   2 ;;  Copyright 2010  Free Software Foundation, Inc.
   3 ;;  Contributed by Bernd Schmidt <bernds@codesourcery.com>.
   4 ;;
   5 
   6 #include <linux/linkage.h>
   7 
   8         .text
   9 ENTRY(__c6xabi_divremi)
  10         stw     .d2t2   B3, *B15--[2]
  11 ||      cmpgt   .l1     0, A4, A1
  12 ||      cmpgt   .l2     0, B4, B2
  13 ||      mv      .s1     A4, A5
  14 ||      call    .s2     __c6xabi_divu
  15 
  16    [A1] neg     .l1     A4, A4
  17 || [B2] neg     .l2     B4, B4
  18 ||      xor     .s2x    B2, A1, B0
  19 ||      mv      .d2     B4, B2
  20 
  21    [B0] addkpc  .s2     _divu_ret_1, B3, 1
  22   [!B0] addkpc  .s2     _divu_ret_2, B3, 1
  23         nop     2
  24 _divu_ret_1:
  25         neg     .l1     A4, A4
  26 _divu_ret_2:
  27         ldw     .d2t2   *++B15[2], B3
  28 
  29         mpy32   .m1x    A4, B2, A6
  30         nop             3
  31         ret     .s2     B3
  32         sub     .l1     A5, A6, A5
  33         nop     4
  34 ENDPROC(__c6xabi_divremi)

/* [<][>][^][v][top][bottom][index][help] */