1255845fcSJason A. Donenfeld/* SPDX-License-Identifier: (GPL-2.0 OR BSD-3-Clause) 2fb872273SJason A. Donenfeld * 3255845fcSJason A. Donenfeld * Copyright (C) 2017-2018 Jason A. Donenfeld <Jason@zx2c4.com>. All Rights Reserved. 4fb872273SJason A. Donenfeld */ 5fb872273SJason A. Donenfeld 6fb872273SJason A. Donenfeld#include <linux/linkage.h> 7fb872273SJason A. Donenfeld 8abb77f3dSMark Rutland#include <asm/assembler.h> 9abb77f3dSMark Rutland 103ac0f452SMark BrownSYM_FUNC_START(__ashlti3) 11fb872273SJason A. Donenfeld cbz x2, 1f 12fb872273SJason A. Donenfeld mov x3, #64 13fb872273SJason A. Donenfeld sub x3, x3, x2 14fb872273SJason A. Donenfeld cmp x3, #0 15fb872273SJason A. Donenfeld b.le 2f 16fb872273SJason A. Donenfeld lsl x1, x1, x2 17fb872273SJason A. Donenfeld lsr x3, x0, x3 18fb872273SJason A. Donenfeld lsl x2, x0, x2 19fb872273SJason A. Donenfeld orr x1, x1, x3 20fb872273SJason A. Donenfeld mov x0, x2 21fb872273SJason A. Donenfeld1: 22fb872273SJason A. Donenfeld ret 23fb872273SJason A. Donenfeld2: 24fb872273SJason A. Donenfeld neg w1, w3 25fb872273SJason A. Donenfeld mov x2, #0 26fb872273SJason A. Donenfeld lsl x1, x0, x1 27fb872273SJason A. Donenfeld mov x0, x2 28fb872273SJason A. Donenfeld ret 293ac0f452SMark BrownSYM_FUNC_END(__ashlti3) 30abb77f3dSMark RutlandEXPORT_SYMBOL(__ashlti3) 31fb872273SJason A. Donenfeld 323ac0f452SMark BrownSYM_FUNC_START(__ashrti3) 33f5ed22e2SJason A. Donenfeld cbz x2, 1f 34fb872273SJason A. Donenfeld mov x3, #64 35fb872273SJason A. Donenfeld sub x3, x3, x2 36fb872273SJason A. Donenfeld cmp x3, #0 37f5ed22e2SJason A. Donenfeld b.le 2f 38fb872273SJason A. Donenfeld lsr x0, x0, x2 39fb872273SJason A. Donenfeld lsl x3, x1, x3 40fb872273SJason A. Donenfeld asr x2, x1, x2 41fb872273SJason A. Donenfeld orr x0, x0, x3 42fb872273SJason A. Donenfeld mov x1, x2 43f5ed22e2SJason A. Donenfeld1: 44fb872273SJason A. Donenfeld ret 45f5ed22e2SJason A. Donenfeld2: 46fb872273SJason A. Donenfeld neg w0, w3 47fb872273SJason A. Donenfeld asr x2, x1, #63 48fb872273SJason A. Donenfeld asr x0, x1, x0 49fb872273SJason A. Donenfeld mov x1, x2 50fb872273SJason A. Donenfeld ret 513ac0f452SMark BrownSYM_FUNC_END(__ashrti3) 52abb77f3dSMark RutlandEXPORT_SYMBOL(__ashrti3) 539bfe7553SJason A. Donenfeld 543ac0f452SMark BrownSYM_FUNC_START(__lshrti3) 559bfe7553SJason A. Donenfeld cbz x2, 1f 569bfe7553SJason A. Donenfeld mov x3, #64 579bfe7553SJason A. Donenfeld sub x3, x3, x2 589bfe7553SJason A. Donenfeld cmp x3, #0 599bfe7553SJason A. Donenfeld b.le 2f 609bfe7553SJason A. Donenfeld lsr x0, x0, x2 619bfe7553SJason A. Donenfeld lsl x3, x1, x3 629bfe7553SJason A. Donenfeld lsr x2, x1, x2 639bfe7553SJason A. Donenfeld orr x0, x0, x3 649bfe7553SJason A. Donenfeld mov x1, x2 659bfe7553SJason A. Donenfeld1: 669bfe7553SJason A. Donenfeld ret 679bfe7553SJason A. Donenfeld2: 689bfe7553SJason A. Donenfeld neg w0, w3 699bfe7553SJason A. Donenfeld mov x2, #0 709bfe7553SJason A. Donenfeld lsr x0, x1, x0 719bfe7553SJason A. Donenfeld mov x1, x2 729bfe7553SJason A. Donenfeld ret 733ac0f452SMark BrownSYM_FUNC_END(__lshrti3) 74abb77f3dSMark RutlandEXPORT_SYMBOL(__lshrti3) 75