Annotation of qemu/roms/openbios/include/arch/ppc/asmdefs.h, revision 1.1.1.1

1.1       root        1: /*   -*- asm -*-
                      2:  *
                      3:  *   Creation Date: <2001/02/03 19:38:07 samuel>
                      4:  *   Time-stamp: <2003/07/08 18:55:50 samuel>
                      5:  *
                      6:  *     <asmdefs.h>
                      7:  *
                      8:  *     Common assembly definitions
                      9:  *
                     10:  *   Copyright (C) 2001, 2002, 2003 Samuel Rydh ([email protected])
                     11:  *
                     12:  *   This program is free software; you can redistribute it and/or
                     13:  *   modify it under the terms of the GNU General Public License
                     14:  *   as published by the Free Software Foundation
                     15:  *
                     16:  */
                     17: 
                     18: #ifndef _H_ASMDEFS
                     19: #define _H_ASMDEFS
                     20: 
                     21: /************************************************************************/
                     22: /*     High/low halfword compatibility macros                          */
                     23: /************************************************************************/
                     24: 
                     25: #ifndef __darwin__
                     26: #define        ha16( v )       (v)##@ha
                     27: #define        hi16( v )       (v)##@h
                     28: #define        lo16( v )       (v)##@l
                     29: #endif
                     30: #define                HA(v)           ha16(v)
                     31: #define                HI(v)           hi16(v)
                     32: #define                LO(v)           lo16(v)
                     33: 
                     34: /* from Linux: include/asm-powerpc/ppc_asm.h */
                     35: /*
                     36:  * Copyright (C) 1995-1999 Gary Thomas, Paul Mackerras, Cort Dougan.
                     37:  */
                     38: 
                     39: /* General Purpose Registers (GPRs) */
                     40: 
                     41: #define        r0      0
                     42: #define        r1      1
                     43: #define        r2      2
                     44: #define        r3      3
                     45: #define        r4      4
                     46: #define        r5      5
                     47: #define        r6      6
                     48: #define        r7      7
                     49: #define        r8      8
                     50: #define        r9      9
                     51: #define        r10     10
                     52: #define        r11     11
                     53: #define        r12     12
                     54: #define        r13     13
                     55: #define        r14     14
                     56: #define        r15     15
                     57: #define        r16     16
                     58: #define        r17     17
                     59: #define        r18     18
                     60: #define        r19     19
                     61: #define        r20     20
                     62: #define        r21     21
                     63: #define        r22     22
                     64: #define        r23     23
                     65: #define        r24     24
                     66: #define        r25     25
                     67: #define        r26     26
                     68: #define        r27     27
                     69: #define        r28     28
                     70: #define        r29     29
                     71: #define        r30     30
                     72: #define        r31     31
                     73: 
                     74: /************************************************************************/
                     75: /*     MISC                                                            */
                     76: /************************************************************************/
                     77: 
                     78: #ifdef __powerpc64__
                     79: 
                     80: #define LOAD_REG_IMMEDIATE(D, x) \
                     81:        lis  (D),      (x)@highest ; \
                     82:        ori  (D), (D), (x)@higher ; \
                     83:        sldi (D), (D), 32 ; \
                     84:        oris (D), (D), (x)@h ; \
                     85:        ori  (D), (D), (x)@l
                     86: 
                     87: #define LOAD_REG_FUNC(D, x) \
                     88:     LOAD_REG_IMMEDIATE((D), (x)) ; \
                     89:     ld (D), 0(D)
                     90: 
                     91: #else
                     92: 
                     93: #define LOAD_REG_IMMEDIATE(D, x) \
                     94:        lis  (D),      HA(x) ; \
                     95:        addi (D), (D), LO(x)
                     96: 
                     97: #define LOAD_REG_FUNC(D, x) \
                     98:     LOAD_REG_IMMEDIATE((D), (x))
                     99: 
                    100: #endif
                    101: 
                    102: #ifdef __powerpc64__
                    103: #define PPC_LL   ld
                    104: #define PPC_STL  std
                    105: #define PPC_STLU stdu
                    106: #define RFI rfid
                    107: #define MTMSRD(r) mtmsrd r
                    108: #define DATA_LONG(x) .quad x
                    109: #define BRANCH_LABEL(name) . ## name
                    110: #define PPC_LR_STKOFF 16
                    111: #else
                    112: #define PPC_LL   lwz
                    113: #define PPC_STL  stw
                    114: #define PPC_STLU stwu
                    115: #define RFI rfi
                    116: #define MTMSRD(r) mtmsr  r
                    117: #define DATA_LONG(x) .long x
                    118: #define BRANCH_LABEL(name) name
                    119: #define PPC_LR_STKOFF 4
                    120: #endif
                    121: 
                    122: #ifndef __darwin__
                    123: #define GLOBL( name )          .globl name ; name
                    124: #define EXTERN( name )         name
                    125: #else
                    126: /* an underscore is needed on Darwin */
                    127: #define GLOBL( name )          .globl _##name ; name: ; _##name
                    128: #define EXTERN( name )         _##name
                    129: #endif
                    130: 
                    131: #if defined(__powerpc64__) && !defined(__darwin__)
                    132: #define _GLOBAL(name) \
                    133:         .align 2 ; \
                    134:         .section ".opd", "aw" ; \
                    135:         .globl name ; \
                    136:         .globl .##name ; \
                    137:     name: \
                    138:         .quad .##name ; \
                    139:         .quad .TOC.@tocbase ; \
                    140:         .quad 0 ; \
                    141:         .previous ; \
                    142:         .type .##name, @function ; \
                    143:     .##name
                    144: #else
                    145: #define _GLOBAL(name) \
                    146:     GLOBL(name)
                    147: #endif
                    148: 
                    149: #define        BIT(n)          (1<<(31-(n)))
                    150: 
                    151: #endif   /* _H_ASMDEFS */

unix.superglobalmegacorp.com

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