1 /* Copyright 2019-2024 Free Software Foundation, Inc. 2 3 This program is free software; you can redistribute it and/or modify 4 it under the terms of the GNU General Public License as published by 5 the Free Software Foundation; either version 3 of the License, or 6 (at your option) any later version. 7 8 This program is distributed in the hope that it will be useful, 9 but WITHOUT ANY WARRANTY; without even the implied warranty of 10 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 GNU General Public License for more details. 12 13 You should have received a copy of the GNU General Public License 14 along with this program. If not, see <http://www.gnu.org/licenses/>. */ 15 16 .option nopic 17 .text 18 19 .align 1 20 .globl bar 21 .type bar, @function 22 bar: 23 tail 1f 24 .size bar, .-func 25 26 .align 1 27 .globl func 28 .type func, @function 29 func: 30 /* A fake instruction of either 6 or 8 bytes. This is never 31 executed, but the prologue scanner will try to decode it. 32 These long instructions are ISA extensions, use .byte rather 33 than an actual instruction mnemonic so that the test can be 34 compiled with a toolchain that doesn't include any long 35 instruction extensions. */ 36 #if BAD_INSN_LEN == 6 37 /* A fake 6 byte instruction. */ 38 .byte 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00 39 #elif BAD_INSN_LEN == 8 40 /* A fake 8 byte instruction. */ 41 .byte 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 42 #else 43 #error unexpected bad instruction length 44 #endif 45 46 1: 47 addi sp,sp,-16 48 #if __SIZEOF_POINTER__ == 8 49 sd s0,8(sp) 50 #else 51 sw s0,8(sp) 52 #endif 53 addi s0,sp,16 54 nop 55 #if __SIZEOF_POINTER__ == 8 56 ld s0,8(sp) 57 #else 58 lw s0,8(sp) 59 #endif 60 addi sp,sp,16 61 jr ra 62 .size func, .-func 63 .section .note.GNU-stack,"",@progbits 64