Update copyright year range in all GDB files
[external/binutils.git] / gdb / testsuite / gdb.arch / powerpc-prologue.c
1 /* Unwinder test program.
2
3    Copyright 2006-2018 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 void optimized_1 (void);
28
29 int
30 main (void)
31 {
32   gdb2029 ();
33   optimized_1 ();
34   return 0;
35 }
36
37 void
38 optimized_1_marker (void)
39 {
40 }
41
42 void
43 gdb2029_marker (void)
44 {
45 }
46
47 /* A typical PIC prologue from GCC.  */
48
49 asm(".text\n"
50     "    .p2align 3\n"
51     SYMBOL (gdb2029) ":\n"
52     "   stwu    %r1, -32(%r1)\n"
53     "   mflr    %r0\n"
54     "   bcl-    20,31,.+4\n"
55     "   stw     %r30, 24(%r1)\n"
56     "   mflr    %r30\n"
57     "   stw     %r0, 36(%r1)\n"
58     "   bl      gdb2029_marker\n"
59     "   lwz     %r0, 36(%r1)\n"
60     "   lwz     %r30, 24(%r1)\n"
61     "   mtlr    %r0\n"
62     "   addi    %r1, %r1, 32\n"
63     "   blr");
64
65 /* A heavily scheduled prologue.  */
66 asm(".text\n"
67     "   .p2align 3\n"
68     SYMBOL (optimized_1) ":\n"
69     "   stwu    %r1,-32(%r1)\n"
70     "   lis     %r9,-16342\n"
71     "   lis     %r11,-16342\n"
72     "   mflr    %r0\n"
73     "   addi    %r11,%r11,3776\n"
74     "   stmw    %r27,12(%r1)\n"
75     "   addi    %r31,%r9,3152\n"
76     "   cmplw   %cr7,%r31,%r11\n"
77     "   stw     %r0,36(%r1)\n"
78     "   mr      %r30,%r3\n"
79     "   bl      optimized_1_marker\n"
80     "   lwz     %r0,36(%r1)\n"
81     "   lmw     %r27,12(%r1)\n"
82     "   addi    %r1,%r1,32\n"
83     "   blr");