xref: /netbsd-src/external/gpl3/gdb.old/dist/gdb/testsuite/gdb.arch/e500-prologue.c (revision 8b657b0747480f8989760d71343d6dd33f8d4cf9)
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