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 10*3ac0f452SMark 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 29*3ac0f452SMark BrownSYM_FUNC_END(__ashlti3) 30abb77f3dSMark RutlandEXPORT_SYMBOL(__ashlti3) 31fb872273SJason A. Donenfeld 32*3ac0f452SMark 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 51*3ac0f452SMark BrownSYM_FUNC_END(__ashrti3) 52abb77f3dSMark RutlandEXPORT_SYMBOL(__ashrti3) 539bfe7553SJason A. Donenfeld 54*3ac0f452SMark 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 73*3ac0f452SMark BrownSYM_FUNC_END(__lshrti3) 74abb77f3dSMark RutlandEXPORT_SYMBOL(__lshrti3) 75