linux/arch/sparc/lib/ashldi3.S
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 */
   2/*
   3 * ashldi3.S:   GCC emits these for certain drivers playing
   4 *              with long longs.
   5 *
   6 * Copyright (C) 1999 David S. Miller (davem@redhat.com)
   7 */
   8
   9#include <linux/linkage.h>
  10#include <asm/export.h>
  11
  12        .text
  13ENTRY(__ashldi3)
  14        cmp     %o2, 0
  15        be      9f
  16         mov    0x20, %g2
  17
  18        sub     %g2, %o2, %g2
  19        cmp     %g2, 0
  20        bg      7f
  21         sll    %o0, %o2, %g3
  22
  23        neg     %g2
  24        clr     %o5
  25        b       8f
  26         sll    %o1, %g2, %o4
  277:
  28        srl     %o1, %g2, %g2
  29        sll     %o1, %o2, %o5
  30        or      %g3, %g2, %o4
  318:
  32        mov     %o4, %o0
  33        mov     %o5, %o1
  349:
  35        retl
  36         nop
  37ENDPROC(__ashldi3)
  38EXPORT_SYMBOL(__ashldi3)
  39