pike.git / src / code / ppc32.h

version» Context lines:

pike.git/src/code/ppc32.h:1:   /*   || This file is part of Pike. For copyright information see COPYRIGHT.   || Pike is distributed under GPL, LGPL and MPL. See the file COPYING   || for more information. - || $Id: ppc32.h,v 1.25 2005/05/24 17:35:35 jonasw Exp $ + || $Id: ppc32.h,v 1.26 2006/07/06 16:13:58 marcus Exp $   */      #define PPC_INSTR_B_FORM(OPCD,BO,BI,BD,AA,LK) \    add_to_program(((OPCD)<<26)|((BO)<<21)|((BI)<<16)| \    (((BD)&0x3fff)<<2)|((AA)<<1)|(LK))   #define PPC_INSTR_D_FORM(OPCD,S,A,d) \    add_to_program(((OPCD)<<26)|((S)<<21)|((A)<<16)|((d)&0xffff))   #define PPC_INSTR_I_FORM(OPCD,LI,AA,LK) \    add_to_program(((OPCD)<<26)|((LI)&0x03fffffc)|((AA)<<1)|(LK))   #define PPC_INSTR_M_FORM(OPCD,S,A,SH,MB,ME,Rc) \
pike.git/src/code/ppc32.h:36:      #define MFSPR(D,SPR) PPC_INSTR_XFX_FORM(31,D,(((SPR)&0x1f)<<5)|(((SPR)&0x3e0)>>5),339)   #define MTSPR(D,SPR) PPC_INSTR_XFX_FORM(31,D,(((SPR)&0x1f)<<5)|(((SPR)&0x3e0)>>5),467)      #define BCLR(BO,BI) PPC_INSTR_XL_FORM(19,BO,BI,0,16,0)   #define BCLRL(BO,BI) PPC_INSTR_XL_FORM(19,BO,BI,0,16,1)   #define B(LI) PPC_INSTR_I_FORM(18,LI,0,0)   #define BL(LI) PPC_INSTR_I_FORM(18,LI,0,1)   #define BLA(LI) PPC_INSTR_I_FORM(18,LI,1,1)    - #define LOW_GET_JUMP() (PROG_COUNTER[JUMP_EPILOGUE_SIZE]) + #define LOW_GET_JUMP() ((INT32)PROG_COUNTER[JUMP_EPILOGUE_SIZE])   #define LOW_SKIPJUMP() (SET_PROG_COUNTER(PROG_COUNTER + JUMP_EPILOGUE_SIZE + 1))      #define SET_REG(REG, X) do { \    INT32 val_ = X; \    INT32 reg_ = REG; \    if ((-32768 <= val_) && (val_ <= 32767)) { \    /* addi reg,0,val */ \    ADDI(reg_, 0, val_); \    } else { \    /* addis reg,0,%hi(val) */ \
pike.git/src/code/ppc32.h:241:    : "ctr", "lr", "cc", "memory", "r29", "r0", \    "r3", "r4", "r5", "r6", "r7", "r8", "r9", \    "r10", "r11", "r12")      #define OPCODE_INLINE_BRANCH   #define OPCODE_RETURN_JUMPADDR      #ifdef OPCODE_RETURN_JUMPADDR      /* Don't need an lvalue in this case. */ - #define PROG_COUNTER ((INT32 *)__builtin_return_address(0)) + #define PROG_COUNTER ((PIKE_OPCODE_T *)__builtin_return_address(0))      #define JUMP_EPILOGUE_SIZE 2   #define JUMP_SET_TO_PC_AT_NEXT(PC) \    ((PC) = PROG_COUNTER + JUMP_EPILOGUE_SIZE)      #else /* !OPCODE_RETURN_JUMPADDR */      #ifdef __linux   /* SVR4 ABI */ - #define PROG_COUNTER (((INT32 **)__builtin_frame_address(1))[1]) + #define PROG_COUNTER (((PIKE_OPCODE_T **)__builtin_frame_address(1))[1])   #else   /* PowerOpen ABI */ - #define PROG_COUNTER (((INT32 **)__builtin_frame_address(1))[2]) + #define PROG_COUNTER (((PIKE_OPCODE_T **)__builtin_frame_address(1))[2])   #endif      #define JUMP_EPILOGUE_SIZE 0      #endif /* !OPCODE_RETURN_JUMPADDR */         #ifdef PIKE_DEBUG   void ppc32_disassemble_code(void *addr, size_t bytes);   #define DISASSEMBLE_CODE(ADDR, BYTES) ppc32_disassemble_code(ADDR, BYTES)   #endif