Annotation of qemu/roms/openbios/libgcc/crtsavres.S, revision 1.1.1.1

1.1       root        1: /*
                      2:  * Special support for eabi and SVR4
                      3:  *
                      4:  *   Copyright (C) 1995, 1996, 1998, 2000, 2001 Free Software Foundation, Inc.
                      5:  *   Copyright 2008 Freescale Semiconductor, Inc.
                      6:  *   Written By Michael Meissner
                      7:  *
                      8:  * Based on gcc/config/rs6000/crtsavres.asm from gcc
                      9:  * 64 bit additions from reading the PPC elf64abi document.
                     10:  *
                     11:  * This file is free software; you can redistribute it and/or modify it
                     12:  * under the terms of the GNU General Public License as published by the
                     13:  * Free Software Foundation; either version 2, or (at your option) any
                     14:  * later version.
                     15:  *
                     16:  * In addition to the permissions in the GNU General Public License, the
                     17:  * Free Software Foundation gives you unlimited permission to link the
                     18:  * compiled version of this file with other programs, and to distribute
                     19:  * those programs without any restriction coming from the use of this
                     20:  * file.  (The General Public License restrictions do apply in other
                     21:  * respects; for example, they cover modification of the file, and
                     22:  * distribution when not linked into another program.)
                     23:  *
                     24:  * This file is distributed in the hope that it will be useful, but
                     25:  * WITHOUT ANY WARRANTY; without even the implied warranty of
                     26:  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
                     27:  * General Public License for more details.
                     28:  *
                     29:  * You should have received a copy of the GNU General Public License
                     30:  * along with this program; see the file COPYING.  If not, write to
                     31:  * the Free Software Foundation, 51 Franklin Street, Fifth Floor,
                     32:  * Boston, MA 02110-1301, USA.
                     33:  *
                     34:  *    As a special exception, if you link this library with files
                     35:  *    compiled with GCC to produce an executable, this does not cause
                     36:  *    the resulting executable to be covered by the GNU General Public License.
                     37:  *    This exception does not however invalidate any other reasons why
                     38:  *    the executable file might be covered by the GNU General Public License.
                     39:  */
                     40: 
                     41: /* taken from Linux arch/powerpc/lib/crtsavres.S */
                     42: 
                     43: /* arch/powerpc/include/asm/ppc_asm.h */
                     44: #ifdef CONFIG_PPC64
                     45: 
                     46: #define XGLUE(a,b) a##b
                     47: #define GLUE(a,b) XGLUE(a,b)
                     48: 
                     49: #define _GLOBAL(name) \
                     50:        .section ".text"; \
                     51:        .align 2 ; \
                     52:        .globl name; \
                     53:        .globl GLUE(.,name); \
                     54:        .section ".opd","aw"; \
                     55: name: \
                     56:        .quad GLUE(.,name); \
                     57:        .quad .TOC.@tocbase; \
                     58:        .quad 0; \
                     59:        .previous; \
                     60:        .type GLUE(.,name),@function; \
                     61: GLUE(.,name):
                     62: 
                     63: #else /* 32-bit */
                     64: 
                     65: /* include/linux/stringify.h */
                     66: 
                     67: /* Indirect stringification.  Doing two levels allows the parameter to be a
                     68:  * macro itself.  For example, compile with -DFOO=bar, __stringify(FOO)
                     69:  * converts to "bar".
                     70:  */
                     71: 
                     72: #define __stringify_1(x...)    #x
                     73: #define __stringify(x...)      __stringify_1(x)
                     74: 
                     75: /* arch/powerpc/include/asm/ppc_asm.h continues */
                     76: 
                     77: #define _GLOBAL(n)     \
                     78:        .text;          \
                     79:        .stabs __stringify(n:F-1),N_FUN,0,0,n;\
                     80:        .globl n;       \
                     81: n:
                     82: 
                     83: /* some stab codes */
                     84: #define N_FUN  36
                     85: 
                     86: #endif
                     87: 
                     88: /* arch/powerpc/lib/crtsavres.S continues */
                     89: 
                     90:        .file   "crtsavres.S"
                     91:        .section ".text"
                     92: 
                     93: #ifndef CONFIG_PPC64
                     94: 
                     95: /* Routines for saving integer registers, called by the compiler.  */
                     96: /* Called with r11 pointing to the stack header word of the caller of the */
                     97: /* function, just beyond the end of the integer save area.  */
                     98: 
                     99: _GLOBAL(_savegpr_14)
                    100: _GLOBAL(_save32gpr_14)
                    101:        stw     14,-72(11)      /* save gp registers */
                    102: _GLOBAL(_savegpr_15)
                    103: _GLOBAL(_save32gpr_15)
                    104:        stw     15,-68(11)
                    105: _GLOBAL(_savegpr_16)
                    106: _GLOBAL(_save32gpr_16)
                    107:        stw     16,-64(11)
                    108: _GLOBAL(_savegpr_17)
                    109: _GLOBAL(_save32gpr_17)
                    110:        stw     17,-60(11)
                    111: _GLOBAL(_savegpr_18)
                    112: _GLOBAL(_save32gpr_18)
                    113:        stw     18,-56(11)
                    114: _GLOBAL(_savegpr_19)
                    115: _GLOBAL(_save32gpr_19)
                    116:        stw     19,-52(11)
                    117: _GLOBAL(_savegpr_20)
                    118: _GLOBAL(_save32gpr_20)
                    119:        stw     20,-48(11)
                    120: _GLOBAL(_savegpr_21)
                    121: _GLOBAL(_save32gpr_21)
                    122:        stw     21,-44(11)
                    123: _GLOBAL(_savegpr_22)
                    124: _GLOBAL(_save32gpr_22)
                    125:        stw     22,-40(11)
                    126: _GLOBAL(_savegpr_23)
                    127: _GLOBAL(_save32gpr_23)
                    128:        stw     23,-36(11)
                    129: _GLOBAL(_savegpr_24)
                    130: _GLOBAL(_save32gpr_24)
                    131:        stw     24,-32(11)
                    132: _GLOBAL(_savegpr_25)
                    133: _GLOBAL(_save32gpr_25)
                    134:        stw     25,-28(11)
                    135: _GLOBAL(_savegpr_26)
                    136: _GLOBAL(_save32gpr_26)
                    137:        stw     26,-24(11)
                    138: _GLOBAL(_savegpr_27)
                    139: _GLOBAL(_save32gpr_27)
                    140:        stw     27,-20(11)
                    141: _GLOBAL(_savegpr_28)
                    142: _GLOBAL(_save32gpr_28)
                    143:        stw     28,-16(11)
                    144: _GLOBAL(_savegpr_29)
                    145: _GLOBAL(_save32gpr_29)
                    146:        stw     29,-12(11)
                    147: _GLOBAL(_savegpr_30)
                    148: _GLOBAL(_save32gpr_30)
                    149:        stw     30,-8(11)
                    150: _GLOBAL(_savegpr_31)
                    151: _GLOBAL(_save32gpr_31)
                    152:        stw     31,-4(11)
                    153:        blr
                    154: 
                    155: /* Routines for restoring integer registers, called by the compiler.  */
                    156: /* Called with r11 pointing to the stack header word of the caller of the */
                    157: /* function, just beyond the end of the integer restore area.  */
                    158: 
                    159: _GLOBAL(_restgpr_14)
                    160: _GLOBAL(_rest32gpr_14)
                    161:        lwz     14,-72(11)      /* restore gp registers */
                    162: _GLOBAL(_restgpr_15)
                    163: _GLOBAL(_rest32gpr_15)
                    164:        lwz     15,-68(11)
                    165: _GLOBAL(_restgpr_16)
                    166: _GLOBAL(_rest32gpr_16)
                    167:        lwz     16,-64(11)
                    168: _GLOBAL(_restgpr_17)
                    169: _GLOBAL(_rest32gpr_17)
                    170:        lwz     17,-60(11)
                    171: _GLOBAL(_restgpr_18)
                    172: _GLOBAL(_rest32gpr_18)
                    173:        lwz     18,-56(11)
                    174: _GLOBAL(_restgpr_19)
                    175: _GLOBAL(_rest32gpr_19)
                    176:        lwz     19,-52(11)
                    177: _GLOBAL(_restgpr_20)
                    178: _GLOBAL(_rest32gpr_20)
                    179:        lwz     20,-48(11)
                    180: _GLOBAL(_restgpr_21)
                    181: _GLOBAL(_rest32gpr_21)
                    182:        lwz     21,-44(11)
                    183: _GLOBAL(_restgpr_22)
                    184: _GLOBAL(_rest32gpr_22)
                    185:        lwz     22,-40(11)
                    186: _GLOBAL(_restgpr_23)
                    187: _GLOBAL(_rest32gpr_23)
                    188:        lwz     23,-36(11)
                    189: _GLOBAL(_restgpr_24)
                    190: _GLOBAL(_rest32gpr_24)
                    191:        lwz     24,-32(11)
                    192: _GLOBAL(_restgpr_25)
                    193: _GLOBAL(_rest32gpr_25)
                    194:        lwz     25,-28(11)
                    195: _GLOBAL(_restgpr_26)
                    196: _GLOBAL(_rest32gpr_26)
                    197:        lwz     26,-24(11)
                    198: _GLOBAL(_restgpr_27)
                    199: _GLOBAL(_rest32gpr_27)
                    200:        lwz     27,-20(11)
                    201: _GLOBAL(_restgpr_28)
                    202: _GLOBAL(_rest32gpr_28)
                    203:        lwz     28,-16(11)
                    204: _GLOBAL(_restgpr_29)
                    205: _GLOBAL(_rest32gpr_29)
                    206:        lwz     29,-12(11)
                    207: _GLOBAL(_restgpr_30)
                    208: _GLOBAL(_rest32gpr_30)
                    209:        lwz     30,-8(11)
                    210: _GLOBAL(_restgpr_31)
                    211: _GLOBAL(_rest32gpr_31)
                    212:        lwz     31,-4(11)
                    213:        blr
                    214: 
                    215: /* Routines for restoring integer registers, called by the compiler.  */
                    216: /* Called with r11 pointing to the stack header word of the caller of the */
                    217: /* function, just beyond the end of the integer restore area.  */
                    218: 
                    219: _GLOBAL(_restgpr_14_x)
                    220: _GLOBAL(_rest32gpr_14_x)
                    221:        lwz     14,-72(11)      /* restore gp registers */
                    222: _GLOBAL(_restgpr_15_x)
                    223: _GLOBAL(_rest32gpr_15_x)
                    224:        lwz     15,-68(11)
                    225: _GLOBAL(_restgpr_16_x)
                    226: _GLOBAL(_rest32gpr_16_x)
                    227:        lwz     16,-64(11)
                    228: _GLOBAL(_restgpr_17_x)
                    229: _GLOBAL(_rest32gpr_17_x)
                    230:        lwz     17,-60(11)
                    231: _GLOBAL(_restgpr_18_x)
                    232: _GLOBAL(_rest32gpr_18_x)
                    233:        lwz     18,-56(11)
                    234: _GLOBAL(_restgpr_19_x)
                    235: _GLOBAL(_rest32gpr_19_x)
                    236:        lwz     19,-52(11)
                    237: _GLOBAL(_restgpr_20_x)
                    238: _GLOBAL(_rest32gpr_20_x)
                    239:        lwz     20,-48(11)
                    240: _GLOBAL(_restgpr_21_x)
                    241: _GLOBAL(_rest32gpr_21_x)
                    242:        lwz     21,-44(11)
                    243: _GLOBAL(_restgpr_22_x)
                    244: _GLOBAL(_rest32gpr_22_x)
                    245:        lwz     22,-40(11)
                    246: _GLOBAL(_restgpr_23_x)
                    247: _GLOBAL(_rest32gpr_23_x)
                    248:        lwz     23,-36(11)
                    249: _GLOBAL(_restgpr_24_x)
                    250: _GLOBAL(_rest32gpr_24_x)
                    251:        lwz     24,-32(11)
                    252: _GLOBAL(_restgpr_25_x)
                    253: _GLOBAL(_rest32gpr_25_x)
                    254:        lwz     25,-28(11)
                    255: _GLOBAL(_restgpr_26_x)
                    256: _GLOBAL(_rest32gpr_26_x)
                    257:        lwz     26,-24(11)
                    258: _GLOBAL(_restgpr_27_x)
                    259: _GLOBAL(_rest32gpr_27_x)
                    260:        lwz     27,-20(11)
                    261: _GLOBAL(_restgpr_28_x)
                    262: _GLOBAL(_rest32gpr_28_x)
                    263:        lwz     28,-16(11)
                    264: _GLOBAL(_restgpr_29_x)
                    265: _GLOBAL(_rest32gpr_29_x)
                    266:        lwz     29,-12(11)
                    267: _GLOBAL(_restgpr_30_x)
                    268: _GLOBAL(_rest32gpr_30_x)
                    269:        lwz     30,-8(11)
                    270: _GLOBAL(_restgpr_31_x)
                    271: _GLOBAL(_rest32gpr_31_x)
                    272:        lwz     0,4(11)
                    273:        lwz     31,-4(11)
                    274:        mtlr    0
                    275:        mr      1,11
                    276:        blr
                    277: 
                    278: #else /* CONFIG_PPC64 */
                    279: 
                    280: .globl _savegpr0_14
                    281: _savegpr0_14:
                    282:        std     r14,-144(r1)
                    283: .globl _savegpr0_15
                    284: _savegpr0_15:
                    285:        std     r15,-136(r1)
                    286: .globl _savegpr0_16
                    287: _savegpr0_16:
                    288:        std     r16,-128(r1)
                    289: .globl _savegpr0_17
                    290: _savegpr0_17:
                    291:        std     r17,-120(r1)
                    292: .globl _savegpr0_18
                    293: _savegpr0_18:
                    294:        std     r18,-112(r1)
                    295: .globl _savegpr0_19
                    296: _savegpr0_19:
                    297:        std     r19,-104(r1)
                    298: .globl _savegpr0_20
                    299: _savegpr0_20:
                    300:        std     r20,-96(r1)
                    301: .globl _savegpr0_21
                    302: _savegpr0_21:
                    303:        std     r21,-88(r1)
                    304: .globl _savegpr0_22
                    305: _savegpr0_22:
                    306:        std     r22,-80(r1)
                    307: .globl _savegpr0_23
                    308: _savegpr0_23:
                    309:        std     r23,-72(r1)
                    310: .globl _savegpr0_24
                    311: _savegpr0_24:
                    312:        std     r24,-64(r1)
                    313: .globl _savegpr0_25
                    314: _savegpr0_25:
                    315:        std     r25,-56(r1)
                    316: .globl _savegpr0_26
                    317: _savegpr0_26:
                    318:        std     r26,-48(r1)
                    319: .globl _savegpr0_27
                    320: _savegpr0_27:
                    321:        std     r27,-40(r1)
                    322: .globl _savegpr0_28
                    323: _savegpr0_28:
                    324:        std     r28,-32(r1)
                    325: .globl _savegpr0_29
                    326: _savegpr0_29:
                    327:        std     r29,-24(r1)
                    328: .globl _savegpr0_30
                    329: _savegpr0_30:
                    330:        std     r30,-16(r1)
                    331: .globl _savegpr0_31
                    332: _savegpr0_31:
                    333:        std     r31,-8(r1)
                    334:        std     r0,16(r1)
                    335:        blr
                    336: 
                    337: .globl _restgpr0_14
                    338: _restgpr0_14:
                    339:        ld      r14,-144(r1)
                    340: .globl _restgpr0_15
                    341: _restgpr0_15:
                    342:        ld      r15,-136(r1)
                    343: .globl _restgpr0_16
                    344: _restgpr0_16:
                    345:        ld      r16,-128(r1)
                    346: .globl _restgpr0_17
                    347: _restgpr0_17:
                    348:        ld      r17,-120(r1)
                    349: .globl _restgpr0_18
                    350: _restgpr0_18:
                    351:        ld      r18,-112(r1)
                    352: .globl _restgpr0_19
                    353: _restgpr0_19:
                    354:        ld      r19,-104(r1)
                    355: .globl _restgpr0_20
                    356: _restgpr0_20:
                    357:        ld      r20,-96(r1)
                    358: .globl _restgpr0_21
                    359: _restgpr0_21:
                    360:        ld      r21,-88(r1)
                    361: .globl _restgpr0_22
                    362: _restgpr0_22:
                    363:        ld      r22,-80(r1)
                    364: .globl _restgpr0_23
                    365: _restgpr0_23:
                    366:        ld      r23,-72(r1)
                    367: .globl _restgpr0_24
                    368: _restgpr0_24:
                    369:        ld      r24,-64(r1)
                    370: .globl _restgpr0_25
                    371: _restgpr0_25:
                    372:        ld      r25,-56(r1)
                    373: .globl _restgpr0_26
                    374: _restgpr0_26:
                    375:        ld      r26,-48(r1)
                    376: .globl _restgpr0_27
                    377: _restgpr0_27:
                    378:        ld      r27,-40(r1)
                    379: .globl _restgpr0_28
                    380: _restgpr0_28:
                    381:        ld      r28,-32(r1)
                    382: .globl _restgpr0_29
                    383: _restgpr0_29:
                    384:        ld      r0,16(r1)
                    385:        ld      r29,-24(r1)
                    386:        mtlr    r0
                    387:        ld      r30,-16(r1)
                    388:        ld      r31,-8(r1)
                    389:        blr
                    390: 
                    391: .globl _restgpr0_30
                    392: _restgpr0_30:
                    393:        ld      r30,-16(r1)
                    394: .globl _restgpr0_31
                    395: _restgpr0_31:
                    396:        ld      r0,16(r1)
                    397:        ld      r31,-8(r1)
                    398:        mtlr    r0
                    399:        blr
                    400: 
                    401: #endif /* CONFIG_PPC64 */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.