OSDN Git Service

Updated copyright notices for most files.
[pf3gnuchains/pf3gnuchains3x.git] / gdb / testsuite / gdb.arch / powerpc-prologue.c
1 /* Unwinder test program.
2
3    Copyright 2006, 2007, 2008 Free Software Foundation, Inc.
4
5    This file is part of GDB.
6
7    This program is free software; you can redistribute it and/or modify
8    it under the terms of the GNU General Public License as published by
9    the Free Software Foundation; either version 3 of the License, or
10    (at your option) any later version.
11
12    This program is distributed in the hope that it will be useful,
13    but WITHOUT ANY WARRANTY; without even the implied warranty of
14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15    GNU General Public License for more details.
16
17    You should have received a copy of the GNU General Public License
18    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
19
20 #ifdef SYMBOL_PREFIX
21 #define SYMBOL(str)     SYMBOL_PREFIX #str
22 #else
23 #define SYMBOL(str)     #str
24 #endif
25
26 void gdb2029 (void);
27
28 int
29 main (void)
30 {
31   gdb2029 ();
32   optimized_1 ();
33   return 0;
34 }
35
36 void
37 optimized_1_marker (void)
38 {
39 }
40
41 void
42 gdb2029_marker (void)
43 {
44 }
45
46 /* A typical PIC prologue from GCC.  */
47
48 asm(".text\n"
49     "    .p2align 3\n"
50     SYMBOL (gdb2029) ":\n"
51     "   stwu    %r1, -32(%r1)\n"
52     "   mflr    %r0\n"
53     "   bcl-    20,31,.+4\n"
54     "   stw     %r30, 24(%r1)\n"
55     "   mflr    %r30\n"
56     "   stw     %r0, 36(%r1)\n"
57     "   bl      gdb2029_marker\n"
58     "   lwz     %r0, 36(%r1)\n"
59     "   lwz     %r30, 24(%r1)\n"
60     "   mtlr    %r0\n"
61     "   addi    %r1, %r1, 32\n"
62     "   blr");
63
64 /* A heavily scheduled prologue.  */
65 asm(".text\n"
66     "   .p2align 3\n"
67     SYMBOL (optimized_1) ":\n"
68     "   stwu    %r1,-32(%r1)\n"
69     "   lis     %r9,-16342\n"
70     "   lis     %r11,-16342\n"
71     "   mflr    %r0\n"
72     "   addi    %r11,%r11,3776\n"
73     "   stmw    %r27,12(%r1)\n"
74     "   addi    %r31,%r9,3152\n"
75     "   cmplw   %cr7,%r31,%r11\n"
76     "   stw     %r0,36(%r1)\n"
77     "   mr      %r30,%r3\n"
78     "   bl      optimized_1_marker\n"
79     "   lwz     %r0,36(%r1)\n"
80     "   lmw     %r27,12(%r1)\n"
81     "   addi    %r1,%r1,32\n"
82     "   blr");