Annotation of qemu/roms/openbios/libgcc/crtsavres.S, revision 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.