gprsavrest.S revision 1.1 1 /*-
2 * Copyright (c) 2011 The NetBSD Foundation, Inc.
3 * All rights reserved.
4 *
5 * This code is derived from software contributed to The NetBSD Foundation
6 * by Matt Thomas of 3am Software Foundry.
7 *
8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions
10 * are met:
11 * 1. Redistributions of source code must retain the above copyright
12 * notice, this list of conditions and the following disclaimer.
13 * 2. Redistributions in binary form must reproduce the above copyright
14 * notice, this list of conditions and the following disclaimer in the
15 * documentation and/or other materials provided with the distribution.
16 *
17 * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
18 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
19 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
20 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
21 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27 * POSSIBILITY OF SUCH DAMAGE.
28 */
29
30 #include <powerpc/asm.h>
31
32 __RCSID("$NetBSD: gprsavrest.S,v 1.1 2011/07/02 03:35:03 matt Exp $")
33
34 #ifndef RESTGPR
35 #define RESTGPR(n) RESTOREXGPR(_restgpr_,n,_x)
36 #define RESTGPR_END(n) RESTOREXGPR_END(_restgpr,n,_x)
37 #define SAVEGPR(n) SAVEXGPR(_savegpr_,n,)
38 #define SAVEGPR_END(n) SAVEXGPR_END(_savegpr,n,)
39 #endif
40
41 #define RESTOREXGPR(a,n,b) \
42 .hidden a##n##b; ENTRY_NOPROFILE(a##n##b); lwz n,(-4*(32-n))(11)
43 #define RESTOREXGPR_END(a,n,b) \
44 .size a##n##b,.-a##n##b
45 #define SAVEXGPR(a,n,b) \
46 .hidden a##n##b; ENTRY_NOPROFILE(a##n##b); stw n,(-4*(32-n))(11)
47 #define SAVEXGPR_END(a,n,b) \
48 .size a##n##b,.-a##n##b
49
50 RESTGPR(14)
51 RESTGPR(15)
52 RESTGPR(16)
53 RESTGPR(17)
54 RESTGPR(18)
55 RESTGPR(19)
56 RESTGPR(20)
57 RESTGPR(21)
58 RESTGPR(22)
59 RESTGPR(23)
60 RESTGPR(24)
61 RESTGPR(25)
62 RESTGPR(26)
63 RESTGPR(27)
64 RESTGPR(28)
65 RESTGPR(29)
66 RESTGPR(30)
67 lwz 0,4(11)
68 RESTGPR(31)
69 mtlr 0
70 mr 1,11
71 blr
72 RESTGPR_END(14)
73 RESTGPR_END(15)
74 RESTGPR_END(16)
75 RESTGPR_END(17)
76 RESTGPR_END(18)
77 RESTGPR_END(19)
78 RESTGPR_END(20)
79 RESTGPR_END(21)
80 RESTGPR_END(22)
81 RESTGPR_END(23)
82 RESTGPR_END(24)
83 RESTGPR_END(25)
84 RESTGPR_END(26)
85 RESTGPR_END(27)
86 RESTGPR_END(28)
87 RESTGPR_END(29)
88 RESTGPR_END(30)
89 RESTGPR_END(31)
90
91 SAVEGPR(14)
92 SAVEGPR(15)
93 SAVEGPR(16)
94 SAVEGPR(17)
95 SAVEGPR(18)
96 SAVEGPR(19)
97 SAVEGPR(20)
98 SAVEGPR(21)
99 SAVEGPR(22)
100 SAVEGPR(23)
101 SAVEGPR(24)
102 SAVEGPR(25)
103 SAVEGPR(26)
104 SAVEGPR(27)
105 SAVEGPR(28)
106 SAVEGPR(29)
107 SAVEGPR(30)
108 SAVEGPR(31)
109 blr
110 SAVEGPR_END(14)
111 SAVEGPR_END(15)
112 SAVEGPR_END(16)
113 SAVEGPR_END(17)
114 SAVEGPR_END(18)
115 SAVEGPR_END(19)
116 SAVEGPR_END(20)
117 SAVEGPR_END(21)
118 SAVEGPR_END(22)
119 SAVEGPR_END(23)
120 SAVEGPR_END(24)
121 SAVEGPR_END(25)
122 SAVEGPR_END(26)
123 SAVEGPR_END(27)
124 SAVEGPR_END(28)
125 SAVEGPR_END(29)
126 SAVEGPR_END(30)
127 SAVEGPR_END(31)
128