1fb872273SJason A. Donenfeld/* 2fb872273SJason A. Donenfeld * Copyright (C) 2017 Jason A. Donenfeld <Jason@zx2c4.com>. All Rights Reserved. 3fb872273SJason A. Donenfeld * 4fb872273SJason A. Donenfeld * This program is free software; you can redistribute it and/or modify 5fb872273SJason A. Donenfeld * it under the terms of the GNU General Public License version 2 as 6fb872273SJason A. Donenfeld * published by the Free Software Foundation. 7fb872273SJason A. Donenfeld * 8fb872273SJason A. Donenfeld * This program is distributed in the hope that it will be useful, 9fb872273SJason A. Donenfeld * but WITHOUT ANY WARRANTY; without even the implied warranty of 10fb872273SJason A. Donenfeld * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11fb872273SJason A. Donenfeld * GNU General Public License for more details. 12fb872273SJason A. Donenfeld * 13fb872273SJason A. Donenfeld * You should have received a copy of the GNU General Public License 14fb872273SJason A. Donenfeld * along with this program. If not, see <http://www.gnu.org/licenses/>. 15fb872273SJason A. Donenfeld */ 16fb872273SJason A. Donenfeld 17fb872273SJason A. Donenfeld#include <linux/linkage.h> 18fb872273SJason A. Donenfeld 19fb872273SJason A. DonenfeldENTRY(__ashlti3) 20fb872273SJason A. Donenfeld cbz x2, 1f 21fb872273SJason A. Donenfeld mov x3, #64 22fb872273SJason A. Donenfeld sub x3, x3, x2 23fb872273SJason A. Donenfeld cmp x3, #0 24fb872273SJason A. Donenfeld b.le 2f 25fb872273SJason A. Donenfeld lsl x1, x1, x2 26fb872273SJason A. Donenfeld lsr x3, x0, x3 27fb872273SJason A. Donenfeld lsl x2, x0, x2 28fb872273SJason A. Donenfeld orr x1, x1, x3 29fb872273SJason A. Donenfeld mov x0, x2 30fb872273SJason A. Donenfeld1: 31fb872273SJason A. Donenfeld ret 32fb872273SJason A. Donenfeld2: 33fb872273SJason A. Donenfeld neg w1, w3 34fb872273SJason A. Donenfeld mov x2, #0 35fb872273SJason A. Donenfeld lsl x1, x0, x1 36fb872273SJason A. Donenfeld mov x0, x2 37fb872273SJason A. Donenfeld ret 38fb872273SJason A. DonenfeldENDPROC(__ashlti3) 39fb872273SJason A. Donenfeld 40fb872273SJason A. DonenfeldENTRY(__ashrti3) 41f5ed22e2SJason A. Donenfeld cbz x2, 1f 42fb872273SJason A. Donenfeld mov x3, #64 43fb872273SJason A. Donenfeld sub x3, x3, x2 44fb872273SJason A. Donenfeld cmp x3, #0 45f5ed22e2SJason A. Donenfeld b.le 2f 46fb872273SJason A. Donenfeld lsr x0, x0, x2 47fb872273SJason A. Donenfeld lsl x3, x1, x3 48fb872273SJason A. Donenfeld asr x2, x1, x2 49fb872273SJason A. Donenfeld orr x0, x0, x3 50fb872273SJason A. Donenfeld mov x1, x2 51f5ed22e2SJason A. Donenfeld1: 52fb872273SJason A. Donenfeld ret 53f5ed22e2SJason A. Donenfeld2: 54fb872273SJason A. Donenfeld neg w0, w3 55fb872273SJason A. Donenfeld asr x2, x1, #63 56fb872273SJason A. Donenfeld asr x0, x1, x0 57fb872273SJason A. Donenfeld mov x1, x2 58fb872273SJason A. Donenfeld ret 59fb872273SJason A. DonenfeldENDPROC(__ashrti3) 609bfe7553SJason A. Donenfeld 619bfe7553SJason A. DonenfeldENTRY(__lshrti3) 629bfe7553SJason A. Donenfeld cbz x2, 1f 639bfe7553SJason A. Donenfeld mov x3, #64 649bfe7553SJason A. Donenfeld sub x3, x3, x2 659bfe7553SJason A. Donenfeld cmp x3, #0 669bfe7553SJason A. Donenfeld b.le 2f 679bfe7553SJason A. Donenfeld lsr x0, x0, x2 689bfe7553SJason A. Donenfeld lsl x3, x1, x3 699bfe7553SJason A. Donenfeld lsr x2, x1, x2 709bfe7553SJason A. Donenfeld orr x0, x0, x3 719bfe7553SJason A. Donenfeld mov x1, x2 729bfe7553SJason A. Donenfeld1: 739bfe7553SJason A. Donenfeld ret 749bfe7553SJason A. Donenfeld2: 759bfe7553SJason A. Donenfeld neg w0, w3 769bfe7553SJason A. Donenfeld mov x2, #0 779bfe7553SJason A. Donenfeld lsr x0, x1, x0 789bfe7553SJason A. Donenfeld mov x1, x2 799bfe7553SJason A. Donenfeld ret 809bfe7553SJason A. DonenfeldENDPROC(__lshrti3) 81