pike.git / src / code / sparc.c

version» Context lines:

pike.git/src/code/sparc.c: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: sparc.c,v 1.14 2002/11/05 19:14:51 grubba Exp $ + || $Id: sparc.c,v 1.15 2002/11/05 19:29:38 grubba Exp $   */      /*    * Machine code generator for sparc.    *    * Henrik Grubbström 20010720    */      #include "operators.h"   
pike.git/src/code/sparc.c:85:    INT32 val_ = X; \    INT32 reg_ = REG; \    if ((-4096 <= val_) && (val_ <= 4095)) { \    /* or %g0, val_, reg */ \    SPARC_OR(SPARC_REG_G0, reg_, val_, 1); \    } else { \    /* sethi %hi(val_), reg */ \    SPARC_SETHI(reg_, val_); \    if (val_ & 0x3ff) { \    /* or reg, %lo(val_), reg */ \ -  SPARC_OR(reg_, reg_, val_, 1); \ +  SPARC_OR(reg_, reg_, val_ & 0x3ff, 1); \    } \    if (val_ < 0) { \    /* Sign extend. */ \    /* sra reg, %g0, reg */ \    SPARC_SRA(reg_, reg_, SPARC_REG_G0, 0); \    } \    } \    } while(0)      #define ADD_CALL(X, DELAY_OK) do { \
pike.git/src/code/sparc.c:127:    *    * Note that the prologue size must be constant.    */   void sparc_ins_entry(void)   {    /* save %sp, -112, %sp */    add_to_program(0x81e02000|(SPARC_REG_O6<<25)|    (SPARC_REG_O6<<14)|((-112)&0x1fff));   }    + /* Update Pike_fp->pc */   void sparc_update_pc(void)   {    /* call .+8 */    add_to_program(0x40000002);    SET_REG(SPARC_REG_O3, ((INT32)(&Pike_interpreter.frame_pointer)));    /* lduw [ %o3 ], %o3 */    add_to_program(0xc0000000|(SPARC_REG_O3<<25)|(SPARC_REG_O3<<14));    /* stw %o7, [ %o3 + pc ] */    add_to_program(0xc0202000|(SPARC_REG_O7<<25)|(SPARC_REG_O3<<14)|    OFFSETOF(pike_frame, pc));