xref: /netbsd-src/sys/external/bsd/gnu-efi/dist/lib/arm/llsr.S (revision 924795e69c8bb3f17afd8fcbb799710cc1719dc4)
1/*	$NetBSD: llsr.S,v 1.1.1.1 2018/08/16 18:17:47 jmcneill Exp $	*/
2
3#------------------------------------------------------------------------------
4#
5# Copyright (c) 2013, ARM. All rights reserved.<BR>
6#
7# This program and the accompanying materials
8# are licensed and made available under the terms and conditions of the BSD License
9# which accompanies this distribution.  The full text of the license may be found at
10# http://opensource.org/licenses/bsd-license.php
11#
12# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
13# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
14#
15#------------------------------------------------------------------------------
16
17#include "edk2asm.h"
18
19.text
20.align 2
21GCC_ASM_EXPORT(__aeabi_llsr)
22
23#
24#VOID
25#EFIAPI
26#__aeabi_llsr (
27# IN  VOID    *Destination,
28# IN  VOID    *Source,
29# IN  UINT32  Size
30# );
31#
32ASM_PFX(__aeabi_llsr):
33    subs     r3,r2,#0x20
34    bpl      1f
35    rsb      r3,r2,#0x20
36    lsr      r0,r0,r2
37    orr      r0,r0,r1,lsl r3
38    lsr      r1,r1,r2
39    bx       lr
401:
41    lsr      r0,r1,r3
42    mov      r1,#0
43    bx       lr
44