1 /* This testcase is part of GDB, the GNU debugger. 2 3 Copyright 2004-2023 Free Software Foundation, Inc. 4 5 This program is free software; you can redistribute it and/or modify 6 it under the terms of the GNU General Public License as published by 7 the Free Software Foundation; either version 3 of the License, or 8 (at your option) any later version. 9 10 This program is distributed in the hope that it will be useful, 11 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 GNU General Public License for more details. 14 15 You should have received a copy of the GNU General Public License 16 along with this program. If not, see <http://www.gnu.org/licenses/>. */ 17 18 void arg_passing_test2 (void); 19 20 int 21 main (void) 22 { 23 arg_passing_test2 (); 24 return 0; 25 } 26 27 28 /* Asm for procedure arg_passing_test2. 29 30 The challenge here is getting past the 'mr 0,3' and 'stb' 31 instructions. */ 32 33 asm (" .section \".text\"\n" 34 " .align 2\n" 35 " .globl arg_passing_test2\n" 36 " .type arg_passing_test2, @function\n" 37 "arg_passing_test2:\n" 38 " stwu 1,-64(1)\n" 39 " stw 31,60(1)\n" 40 " mr 31,1\n" 41 " mr 0,3\n" 42 " evstdd 4,16(31)\n" 43 " stw 5,24(31)\n" 44 " stw 7,32(31)\n" 45 " stw 8,36(31)\n" 46 " stw 9,40(31)\n" 47 " stb 0,8(31)\n" 48 " lwz 11,0(1)\n" 49 " lwz 31,-4(11)\n" 50 " mr 1,11\n" 51 " blr\n" 52 " .size arg_passing_test2, .-arg_passing_test2\n"); 53