Home | History | Annotate | Line # | Download | only in powerpc
      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.4 2011/10/28 02:00:50 christos 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 SAVEXGPR(a,n,b) \
     44 	.hidden a##n##b; ENTRY_NOPROFILE(a##n##b); stw	n,(-4*(32-n))(11)
     45 #ifdef _LP64
     46 # define SAVEXGPR_END(a,n,b)
     47 # define RESTOREXGPR_END(a,n,b)
     48 #else
     49 # define SAVEXGPR_END(a,n,b) \
     50 	.size a##n##b,.-a##n##b
     51 # define RESTOREXGPR_END(a,n,b) \
     52 	.size a##n##b,.-a##n##b
     53 #endif
     54 
     55 	RESTGPR(14)
     56 	RESTGPR(15)
     57 	RESTGPR(16)
     58 	RESTGPR(17)
     59 	RESTGPR(18)
     60 	RESTGPR(19)
     61 	RESTGPR(20)
     62 	RESTGPR(21)
     63 	RESTGPR(22)
     64 	RESTGPR(23)
     65 	RESTGPR(24)
     66 	RESTGPR(25)
     67 	RESTGPR(26)
     68 	RESTGPR(27)
     69 	RESTGPR(28)
     70 	RESTGPR(29)
     71 	RESTGPR(30)
     72 	RESTGPR(31)
     73 	lwz	0,4(11)
     74 	mtlr	0
     75 	mr	1,11
     76 	blr
     77 	RESTGPR_END(14)
     78 	RESTGPR_END(15)
     79 	RESTGPR_END(16)
     80 	RESTGPR_END(17)
     81 	RESTGPR_END(18)
     82 	RESTGPR_END(19)
     83 	RESTGPR_END(20)
     84 	RESTGPR_END(21)
     85 	RESTGPR_END(22)
     86 	RESTGPR_END(23)
     87 	RESTGPR_END(24)
     88 	RESTGPR_END(25)
     89 	RESTGPR_END(26)
     90 	RESTGPR_END(27)
     91 	RESTGPR_END(28)
     92 	RESTGPR_END(29)
     93 	RESTGPR_END(30)
     94 	RESTGPR_END(31)
     95 
     96 	SAVEGPR(14)
     97 	SAVEGPR(15)
     98 	SAVEGPR(16)
     99 	SAVEGPR(17)
    100 	SAVEGPR(18)
    101 	SAVEGPR(19)
    102 	SAVEGPR(20)
    103 	SAVEGPR(21)
    104 	SAVEGPR(22)
    105 	SAVEGPR(23)
    106 	SAVEGPR(24)
    107 	SAVEGPR(25)
    108 	SAVEGPR(26)
    109 	SAVEGPR(27)
    110 	SAVEGPR(28)
    111 	SAVEGPR(29)
    112 	SAVEGPR(30)
    113 	SAVEGPR(31)
    114 	blr
    115 	SAVEGPR_END(14)
    116 	SAVEGPR_END(15)
    117 	SAVEGPR_END(16)
    118 	SAVEGPR_END(17)
    119 	SAVEGPR_END(18)
    120 	SAVEGPR_END(19)
    121 	SAVEGPR_END(20)
    122 	SAVEGPR_END(21)
    123 	SAVEGPR_END(22)
    124 	SAVEGPR_END(23)
    125 	SAVEGPR_END(24)
    126 	SAVEGPR_END(25)
    127 	SAVEGPR_END(26)
    128 	SAVEGPR_END(27)
    129 	SAVEGPR_END(28)
    130 	SAVEGPR_END(29)
    131 	SAVEGPR_END(30)
    132 	SAVEGPR_END(31)
    133