OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /openrisc/trunk/or1ksim
    from Rev 538 to Rev 552
    Reverse comparison

Rev 538 → Rev 552

/cpu/or16/.cvsignore File deleted
/cpu/dlx/Makefile.in File deleted
/cpu/dlx/execute.c File deleted
cpu/dlx/execute.c Property changes : Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:keywords ## -1 +0,0 ## -Id \ No newline at end of property Index: cpu/dlx/arch.h =================================================================== --- cpu/dlx/arch.h (revision 538) +++ cpu/dlx/arch.h (nonexistent) @@ -1,28 +0,0 @@ -/* arch.h -- DLX architecture specific macros - Copyright (C) 1999 Damjan Lampret, lampret@opencores.org - -This file is part of OpenRISC 1000 Architectural Simulator. - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ - -#define LINK_REG "r31" -#define STACK_REG "r29" -#define FRAME_REG "r30" - -#define MAX_GPRS 32 -typedef unsigned long machword; - -/* Should args be passed on stack */ -#define STACK_ARGS 1
cpu/dlx/arch.h Property changes : Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:keywords ## -1 +0,0 ## -Id \ No newline at end of property Index: cpu/dlx/Makefile.am =================================================================== --- cpu/dlx/Makefile.am (revision 538) +++ cpu/dlx/Makefile.am (nonexistent) @@ -1,26 +0,0 @@ -# Makefile -- Makefile for DLX architecture dependent simulation -# -# Copyright (C) 1999 Damjan Lampret, lampret@opencores.org -# Copyright (C) 2008 Embecosm Limited -# -# Contributor Jeremy Bennett -# -# This file is part of OpenRISC 1000 Architectural Simulator. -# -# This program is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by the Free -# Software Foundation; either version 3 of the License, or (at your option) -# any later version. -# -# This program is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for -# more details. -# -# You should have received a copy of the GNU General Public License along -# with this program. If not, see . - - -noinst_LTLIBRARIES = libarch.la -libarch_la_SOURCES = execute.c \ - arch.h
cpu/dlx/Makefile.am Property changes : Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:keywords ## -1 +0,0 ## -Id \ No newline at end of property Index: cpu/dlx/.cvsignore =================================================================== --- cpu/dlx/.cvsignore (revision 538) +++ cpu/dlx/.cvsignore (nonexistent) @@ -1 +0,0 @@ -Makefile Index: cpu/or32/op-mac-op.h =================================================================== --- cpu/or32/op-mac-op.h (revision 538) +++ cpu/or32/op-mac-op.h (nonexistent) @@ -1,30 +0,0 @@ -/* op-mac-op.h -- Micro operations template for mac operations - Copyright (C) 2005 György `nog' Jeney, nog@sdf.lonestar.org - -This file is part of OpenRISC 1000 Architectural Simulator. - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ - - -__or_dynop void glue(glue(op_, OP_NAME), T)(void) -{ - int64_t temp = env->sprs[SPR_MACLO] | ((int64_t)env->sprs[SPR_MACHI] << 32); - - temp OP (int64_t)T0 * (int64_t)T1; - - env->sprs[SPR_MACLO] = temp & 0xffffffff; - env->sprs[SPR_MACHI] = temp >> 32; -} -
cpu/or32/op-mac-op.h Property changes : Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:keywords ## -1 +0,0 ## -Id \ No newline at end of property Index: cpu/or32/op-3t-op.h =================================================================== --- cpu/or32/op-3t-op.h (revision 538) +++ cpu/or32/op-3t-op.h (nonexistent) @@ -1,25 +0,0 @@ -/* op-3t-op.h -- Micro operations useing three temporaries - Copyright (C) 2005 György `nog' Jeney, nog@sdf.lonestar.org - -This file is part of OpenRISC 1000 Architectural Simulator. - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ - - -__or_dynop void glue(op_cmov, T)(void) -{ - T0 = env->sprs[SPR_SR] & SPR_SR_F ? T1 : T2; -} -
cpu/or32/op-3t-op.h Property changes : Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:keywords ## -1 +0,0 ## -Id \ No newline at end of property Index: cpu/or32/op-2t-op.h =================================================================== --- cpu/or32/op-2t-op.h (revision 538) +++ cpu/or32/op-2t-op.h (nonexistent) @@ -1,44 +0,0 @@ -/* op-1t-op.h -- Micro operations useing two temporaries - Copyright (C) 2005 György `nog' Jeney, nog@sdf.lonestar.org - -This file is part of OpenRISC 1000 Architectural Simulator. - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ - -__or_dynop void glue(op_move, T)(void) -{ - T0 = T1; -} - -__or_dynop void glue(op_ff1, T)(void) -{ - int i; - - for(i = 0; i < 32; i++, T0 >>= 1) { - if(T0 & 1) { - T1 = i; - break; - } - } - - FORCE_RET; -} - - -__or_dynop void glue(op_neg, T)(void) -{ - T0 = -T1; -} -
cpu/or32/op-2t-op.h Property changes : Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:keywords ## -1 +0,0 ## -Id \ No newline at end of property Index: cpu/or32/op-1t-op.h =================================================================== --- cpu/or32/op-1t-op.h (revision 538) +++ cpu/or32/op-1t-op.h (nonexistent) @@ -1,75 +0,0 @@ -/* op-1t-op.h -- Micro operations useing only one temporary - Copyright (C) 2005 György `nog' Jeney, nog@sdf.lonestar.org - -This file is part of OpenRISC 1000 Architectural Simulator. - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ - -__or_dynop void glue(op_imm, T)(void) -{ - T0 = OP_PARAM1; -} - -__or_dynop void glue(op_clear, T)(void) -{ - T0 = 0; -} - -__or_dynop void glue(op_check_null_except_delay, T)(void) -{ - if(!T0) { - /* Do exception */ - env->sprs[SPR_EEAR_BASE] = env->pc - 4; - env->delay_insn = 0; - do_jump(EXCEPT_ILLEGAL); - } -} - -__or_dynop void glue(op_check_null_except, T)(void) -{ - if(!T0) { - /* Do exception */ - env->sprs[SPR_EEAR_BASE] = env->pc; - do_jump(EXCEPT_ILLEGAL); - } -} - -__or_dynop void glue(op_calc_insn_ea, T)(void) -{ - env->insn_ea = T0 + OP_PARAM1; -} - -__or_dynop void glue(op_macrc, T)(void) -{ - /* FIXME: How is this supposed to work? The architechture manual says that - * the low 32-bits shall be saved into rD. I have just copied this code from - * insnset.c to make testbench/mul pass */ - int64_t temp = env->sprs[SPR_MACLO] | ((int64_t)env->sprs[SPR_MACHI] << 32); - - T0 = (orreg_t)(temp >> 28); - env->sprs[SPR_MACLO] = 0; - env->sprs[SPR_MACHI] = 0; -} - -__or_dynop void glue(op_mac_imm, T)(void) -{ - int64_t temp = env->sprs[SPR_MACLO] | ((int64_t)env->sprs[SPR_MACHI] << 32); - - temp += (int64_t)T0 * (int64_t)OP_PARAM1; - - env->sprs[SPR_MACLO] = temp & 0xffffffff; - env->sprs[SPR_MACHI] = temp >> 32; -} -
cpu/or32/op-1t-op.h Property changes : Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:keywords ## -1 +0,0 ## -Id \ No newline at end of property Index: cpu/or32/op.c =================================================================== --- cpu/or32/op.c (revision 538) +++ cpu/or32/op.c (nonexistent) @@ -1,971 +0,0 @@ -/* op.c -- Micro operations for the recompiler - Copyright (C) 2005 György `nog' Jeney, nog@sdf.lonestar.org - -This file is part of OpenRISC 1000 Architectural Simulator. - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ - - -#include -#include -#include - -#include "config.h" - -#ifdef HAVE_INTTYPES_H -#include -#endif - -#include "port.h" -#include "arch.h" -#include "spr-defs.h" -#include "opcode/or32.h" -#include "sim-config.h" -#include "except.h" -#include "abstract.h" -#include "execute.h" -#include "sprs.h" -#include "sched.h" -#include "immu.h" - -#include "op-support.h" - -#include "i386-regs.h" - -#include "dyn-rec.h" - -register struct cpu_state *env asm(CPU_STATE_REG); - -#include "op-i386.h" - -/* - * WARNING: Before going of and wildly editing everything in this file remember - * the following about its contents: - * 1) The `functions' don't EVER return. In otherwords haveing return state- - * ments _anywere_ in this file is likely not to work. This is because - * dyngen just strips away the ret from the end of the function and just uses - * the function `body'. If a ret statement is executed _anyware_ inside the - * dynamicly generated code, then it is undefined were we shall jump to. - * 2) Because of 1), try not to have overly complicated functions. In too - * complicated functions, gcc may decide to generate premature `exits'. This - * is what passing the -fno-reorder-blocks command line switch to gcc helps - * with. This is ofcourse not desired and is rather flaky as we don't (and - * can't) control the kind of code that gcc generates: It may work for one - * and break for another. The less branches there are the less likely it is - * that a premature return shall occur. - * 3) If gcc decides that it is going to be a basterd then it will optimise a - * very simple condition (if/switch) with a premature exit. But gcc can't - * fuck ME over! Just stick a FORCE_RET; at the END of the offending - * function. - * 4) All operations must start with `op_'. dyngen ignores all other functions. - * 5) Local variables are depriciated: They hinder performance. - * 6) Function calls are expensive as the stack has to be shifted (twice). - */ - -/*#define __or_dynop __attribute__((noreturn))*/ -#define __or_dynop - -/* Temporaries to hold the (simulated) registers in */ -register uint32_t t0 asm(T0_REG); -register uint32_t t1 asm(T1_REG); -register uint32_t t2 asm(T2_REG); - -#define OP_PARAM1 ((uorreg_t)(&__op_param1)) -#define OP_PARAM2 ((uorreg_t)(&__op_param2)) -#define OP_PARAM3 ((uorreg_t)(&__op_param3)) - -extern uorreg_t __op_param1; -extern uorreg_t __op_param2; -extern uorreg_t __op_param3; - - -static inline void save_t_bound(oraddr_t pc) -{ - int reg; - - pc = (pc & immu_state->page_offset_mask) / 4; - reg = env->curr_page->ts_bound[pc]; - - if(reg & 0x1f) - env->reg[reg & 0x1f] = t0; - - if((reg >> 5) & 0x1f) - env->reg[(reg >> 5) & 0x1f] = t1; - - if((reg >> 10) & 0x1f) - env->reg[(reg >> 10) & 0x1f] = t2; -} - -void do_sched_wrap(void) -{ - env->pc += 4; - //runtime.cpu.instructions++; - runtime.sim.cycles -= env->cycles_dec; - scheduler.job_queue->time += env->cycles_dec; - if(scheduler.job_queue->time <= 0) { - save_t_bound(env->pc - 4); - do_scheduler(); - } -} - -/* do_scheduler wrapper for instructions that are in the delay slot */ -void do_sched_wrap_delay(void) -{ - /* FIXME: Can't this be eliminated? */ - env->pc += 4; - //runtime.cpu.instructions++; - runtime.sim.cycles -= env->cycles_dec; - scheduler.job_queue->time += env->cycles_dec; - if(scheduler.job_queue->time <= 0) - do_scheduler(); -} - -void enter_dyn_code(oraddr_t addr, struct dyn_page *dp) -{ - uint16_t reg = 0; - uint32_t t0_reg = t0, t1_reg = t1, t2_reg = t2; - struct cpu_state *cpu_reg = env; - - addr &= immu_state->page_offset_mask; - addr >>= 2; - - if(addr) - reg = dp->ts_bound[addr - 1]; - - t0 = cpu_state.reg[reg & 0x1f]; - t1 = cpu_state.reg[(reg >> 5) & 0x1f]; - - /* Don't we all love gcc? For some heavenly reason gcc 3.2 _knows_ that if I - * don't put a condition around the assignment of t2, _all_ the assignments to - * t{0,1,2} are useless and not needed. I'm pleasently happy that gcc is so - * bright, but on the other hand, t{0,1,2} are globals (!) how can you assume - * that the value of a global won't be used in a function further up or - * further down the stack?? */ - if(addr) - t2 = cpu_state.reg[(reg >> 10) & 0x1f]; - - env = &cpu_state; - - ((gen_code_ent *)dp->locs)[addr](); - t0 = t0_reg; - t1 = t1_reg; - t2 = t2_reg; - env = (struct cpu_state *)cpu_reg; -} - -__or_dynop void op_set_pc_pc_delay(void) -{ - env->sprs[SPR_PPC] = env->pc; - /* pc_delay is pulled back 4 since imediatly after this is run, the scheduler - * runs which also increments it by 4 */ - env->pc = env->pc_delay - 4; -} - -__or_dynop void op_set_pc_delay_imm(void) -{ - env->pc_delay = env->pc + (orreg_t)OP_PARAM1; - env->delay_insn = 1; -} - -__or_dynop void op_set_pc_delay_pc(void) -{ - env->pc_delay = env->pc; - env->delay_insn = 1; -} - -__or_dynop void op_clear_pc_delay(void) -{ - env->pc_delay = 0; - env->delay_insn = 1; -} - -__or_dynop void op_do_jump_delay(void) -{ - env->pc = env->pc_delay; -} - -__or_dynop void op_clear_delay_insn(void) -{ - env->delay_insn = 0; -} - -__or_dynop void op_set_delay_insn(void) -{ - env->delay_insn = 1; -} - -__or_dynop void op_check_delay_slot(void) -{ - if(!env->delay_insn) - OP_JUMP(OP_PARAM1); -} - -__or_dynop void op_jmp_imm(void) -{ - OP_JUMP(OP_PARAM1); -} - -__or_dynop void op_set_flag(void) -{ - env->sprs[SPR_SR] |= SPR_SR_F; -} - -__or_dynop void op_clear_flag(void) -{ - env->sprs[SPR_SR] &= ~SPR_SR_F; -} - -/* Used for the l.bf instruction. Therefore if the flag is not set, jump over - * all the jumping stuff */ -__or_dynop void op_check_flag(void) -{ - if(!(env->sprs[SPR_SR] & SPR_SR_F)) { - SPEEDY_CALL(do_sched_wrap); - OP_JUMP(OP_PARAM1); - } -} - -/* Used for l.bf if the delay slot instruction is on another page */ -__or_dynop void op_check_flag_delay(void) -{ - if(env->sprs[SPR_SR] & SPR_SR_F) { - env->delay_insn = 1; - env->pc_delay = env->pc + (orreg_t)OP_PARAM1; - } -} - -/* Used for the l.bnf instruction. Therefore if the flag is set, jump over all - * the jumping stuff */ -__or_dynop void op_check_not_flag(void) -{ - if(env->sprs[SPR_SR] & SPR_SR_F) { - SPEEDY_CALL(do_sched_wrap); - OP_JUMP(OP_PARAM1); - } -} - -/* Used for l.bnf if the delay slot instruction is on another page */ -__or_dynop void op_check_not_flag_delay(void) -{ - if(!(env->sprs[SPR_SR] & SPR_SR_F)) { - env->delay_insn = 1; - env->pc_delay = env->pc + (orreg_t)OP_PARAM1; - } -} - -__or_dynop void op_add_pc(void) -{ - env->pc += OP_PARAM1; -} - -__or_dynop void op_nop_exit(void) -{ - op_support_nop_exit(); - FORCE_RET; -} - -__or_dynop void op_nop_reset(void) -{ - op_support_nop_reset(); - FORCE_RET; -} - -__or_dynop void op_nop_printf(void) -{ - op_support_nop_printf(); - FORCE_RET; -} - -__or_dynop void op_nop_report(void) -{ - op_support_nop_report(); - FORCE_RET; -} - -__or_dynop void op_nop_report_imm(void) -{ - op_support_nop_report_imm(OP_PARAM1); -} - -/* FIXME: Create another 2 sched functions that to the actual analysis call - * instead of bloating the recompiled code with this */ -__or_dynop void op_analysis(void) -{ - SPEEDY_CALL(op_support_analysis); -} - -__or_dynop void op_move_gpr1_pc_delay(void) -{ - env->pc_delay = env->reg[1]; - env->delay_insn = 1; -} - -__or_dynop void op_move_gpr2_pc_delay(void) -{ - env->pc_delay = env->reg[2]; - env->delay_insn = 1; -} - -__or_dynop void op_move_gpr3_pc_delay(void) -{ - env->pc_delay = env->reg[3]; - env->delay_insn = 1; -} - -__or_dynop void op_move_gpr4_pc_delay(void) -{ - env->pc_delay = env->reg[4]; - env->delay_insn = 1; -} - -__or_dynop void op_move_gpr5_pc_delay(void) -{ - env->pc_delay = env->reg[5]; - env->delay_insn = 1; -} - -__or_dynop void op_move_gpr6_pc_delay(void) -{ - env->pc_delay = env->reg[6]; - env->delay_insn = 1; -} - -__or_dynop void op_move_gpr7_pc_delay(void) -{ - env->pc_delay = env->reg[7]; - env->delay_insn = 1; -} - -__or_dynop void op_move_gpr8_pc_delay(void) -{ - env->pc_delay = env->reg[8]; - env->delay_insn = 1; -} - -__or_dynop void op_move_gpr9_pc_delay(void) -{ - env->pc_delay = env->reg[9]; - env->delay_insn = 1; -} - -__or_dynop void op_move_gpr10_pc_delay(void) -{ - env->pc_delay = env->reg[10]; - env->delay_insn = 1; -} - -__or_dynop void op_move_gpr11_pc_delay(void) -{ - env->pc_delay = env->reg[11]; - env->delay_insn = 1; -} - -__or_dynop void op_move_gpr12_pc_delay(void) -{ - env->pc_delay = env->reg[12]; - env->delay_insn = 1; -} - -__or_dynop void op_move_gpr13_pc_delay(void) -{ - env->pc_delay = env->reg[13]; - env->delay_insn = 1; -} - -__or_dynop void op_move_gpr14_pc_delay(void) -{ - env->pc_delay = env->reg[14]; - env->delay_insn = 1; -} - -__or_dynop void op_move_gpr15_pc_delay(void) -{ - env->pc_delay = env->reg[15]; - env->delay_insn = 1; -} - -__or_dynop void op_move_gpr16_pc_delay(void) -{ - env->pc_delay = env->reg[16]; - env->delay_insn = 1; -} - -__or_dynop void op_move_gpr17_pc_delay(void) -{ - env->pc_delay = env->reg[17]; - env->delay_insn = 1; -} - -__or_dynop void op_move_gpr18_pc_delay(void) -{ - env->pc_delay = env->reg[18]; - env->delay_insn = 1; -} - -__or_dynop void op_move_gpr19_pc_delay(void) -{ - env->pc_delay = env->reg[19]; - env->delay_insn = 1; -} - -__or_dynop void op_move_gpr20_pc_delay(void) -{ - env->pc_delay = env->reg[20]; - env->delay_insn = 1; -} - -__or_dynop void op_move_gpr21_pc_delay(void) -{ - env->pc_delay = env->reg[21]; - env->delay_insn = 1; -} - -__or_dynop void op_move_gpr22_pc_delay(void) -{ - env->pc_delay = env->reg[22]; - env->delay_insn = 1; -} - -__or_dynop void op_move_gpr23_pc_delay(void) -{ - env->pc_delay = env->reg[23]; - env->delay_insn = 1; -} - -__or_dynop void op_move_gpr24_pc_delay(void) -{ - env->pc_delay = env->reg[24]; - env->delay_insn = 1; -} - -__or_dynop void op_move_gpr25_pc_delay(void) -{ - env->pc_delay = env->reg[25]; - env->delay_insn = 1; -} - -__or_dynop void op_move_gpr26_pc_delay(void) -{ - env->pc_delay = env->reg[26]; - env->delay_insn = 1; -} - -__or_dynop void op_move_gpr27_pc_delay(void) -{ - env->pc_delay = env->reg[27]; - env->delay_insn = 1; -} - -__or_dynop void op_move_gpr28_pc_delay(void) -{ - env->pc_delay = env->reg[28]; - env->delay_insn = 1; -} - -__or_dynop void op_move_gpr29_pc_delay(void) -{ - env->pc_delay = env->reg[29]; - env->delay_insn = 1; -} - -__or_dynop void op_move_gpr30_pc_delay(void) -{ - env->pc_delay = env->reg[30]; - env->delay_insn = 1; -} - -__or_dynop void op_move_gpr31_pc_delay(void) -{ - env->pc_delay = env->reg[31]; - env->delay_insn = 1; -} - -#define OP_FILE "op-1t-op.h" -#include "op-1t.h" -#undef OP_FILE - -#define OP_FILE "op-2t-op.h" -#include "op-2t.h" -#undef OP_FILE - -#define OP_FILE "op-3t-op.h" -#include "op-3t.h" -#undef OP_FILE - -#define OP_FILE "op-arith-op.h" -#define OP_EXTRA - -#define OP / -#define OP_CAST(x) (orreg_t)(x) -#define OP_NAME div -#include "op-3t.h" -#undef OP_NAME -#undef OP_CAST -#undef OP - -#define OP / -#define OP_CAST(x) (x) -#define OP_NAME divu -#include "op-3t.h" -#undef OP_NAME -#undef OP_CAST -#undef OP - -#define OP * -#define OP_CAST(x) (x) -#define OP_NAME mulu -#include "op-3t.h" -#undef OP_NAME -#undef OP_CAST -#undef OP - -#define OP - -#define OP_CAST(x) (orreg_t)(x) -#define OP_NAME sub -#include "op-3t.h" -#undef OP_NAME -#undef OP_CAST -#undef OP - -#undef OP_EXTRA - -#define OP_EXTRA + ((env->sprs[SPR_SR] & SPR_SR_CY) >> 10) -#define OP + -#define OP_CAST(x) (orreg_t)(x) -#define OP_NAME addc -#include "op-3t.h" -#include "op-2t.h" -#undef OP_NAME -#undef OP_CAST -#undef OP - -#undef OP_EXTRA -#define OP_EXTRA - -#define OP + -#define OP_CAST(x) (orreg_t)(x) -#define OP_NAME add -#include "op-3t.h" -#include "op-2t.h" -#undef OP_NAME -#undef OP_CAST -#undef OP - -#define OP & -#define OP_CAST(x) (x) -#define OP_NAME and -#include "op-3t.h" -#include "op-2t.h" -#undef OP_NAME -#undef OP_CAST -#undef OP - -#define OP * -#define OP_CAST(x) (orreg_t)(x) -#define OP_NAME mul -#include "op-3t.h" -#include "op-2t.h" -#undef OP_NAME -#undef OP_CAST -#undef OP - -#define OP | -#define OP_CAST(x) (x) -#define OP_NAME or -#include "op-3t.h" -#include "op-2t.h" -#undef OP_NAME -#undef OP_CAST -#undef OP - -#define OP << -#define OP_CAST(x) (x) -#define OP_NAME sll -#include "op-3t.h" -#include "op-2t.h" -#undef OP_NAME -#undef OP_CAST -#undef OP - -#define OP >> -#define OP_CAST(x) (orreg_t)(x) -#define OP_NAME sra -#include "op-3t.h" -#include "op-2t.h" -#undef OP_NAME -#undef OP_CAST -#undef OP - -#define OP >> -#define OP_CAST(x) (x) -#define OP_NAME srl -#include "op-3t.h" -#include "op-2t.h" -#undef OP_NAME -#undef OP_CAST -#undef OP - -#define OP ^ -#define OP_CAST(x) (x) -#define OP_NAME xor -#include "op-3t.h" -#include "op-2t.h" -#undef OP_NAME -#undef OP_CAST -#undef OP - -#undef OP_EXTRA -#undef OP_FILE - -#define OP_FILE "op-extend-op.h" - -#define EXT_NAME extbs -#define EXT_TYPE int8_t -#define EXT_CAST (orreg_t) -#include "op-2t.h" -#undef EXT_CAST -#undef EXT_TYPE -#undef EXT_NAME - -#define EXT_NAME extbz -#define EXT_TYPE uint8_t -#define EXT_CAST (uorreg_t) -#include "op-2t.h" -#undef EXT_CAST -#undef EXT_TYPE -#undef EXT_NAME - -#define EXT_NAME exths -#define EXT_TYPE int16_t -#define EXT_CAST (orreg_t) -#include "op-2t.h" -#undef EXT_CAST -#undef EXT_TYPE -#undef EXT_NAME - -#define EXT_NAME exthz -#define EXT_TYPE uint16_t -#define EXT_CAST (uorreg_t) -#include "op-2t.h" -#undef EXT_CAST -#undef EXT_TYPE -#undef EXT_NAME - -#undef OP_FILE - -#define OP_FILE "op-comp-op.h" - -#define COMP == -#define COMP_NAME sfeq -#define COMP_CAST(x) (x) -#include "op-2t.h" -#include "op-1t.h" -#undef COMP_CAST -#undef COMP_NAME -#undef COMP - -#define COMP != -#define COMP_NAME sfne -#define COMP_CAST(x) (x) -#include "op-2t.h" -#include "op-1t.h" -#undef COMP_CAST -#undef COMP_NAME -#undef COMP - -#define COMP > -#define COMP_NAME sfgtu -#define COMP_CAST(x) (x) -#include "op-2t.h" -#include "op-1t.h" -#undef COMP_CAST -#undef COMP_NAME -#undef COMP - -#define COMP >= -#define COMP_NAME sfgeu -#define COMP_CAST(x) (x) -#include "op-2t.h" -#include "op-1t.h" -#undef COMP_CAST -#undef COMP_NAME -#undef COMP - -#define COMP < -#define COMP_NAME sfltu -#define COMP_CAST(x) (x) -#include "op-2t.h" -#include "op-1t.h" -#undef COMP_CAST -#undef COMP_NAME -#undef COMP - -#define COMP <= -#define COMP_NAME sfleu -#define COMP_CAST(x) (x) -#include "op-2t.h" -#include "op-1t.h" -#undef COMP_CAST -#undef COMP_NAME -#undef COMP - -#define COMP > -#define COMP_NAME sfgts -#define COMP_CAST(x) (orreg_t)(x) -#include "op-2t.h" -#include "op-1t.h" -#undef COMP_CAST -#undef COMP_NAME -#undef COMP - -#define COMP >= -#define COMP_NAME sfges -#define COMP_CAST(x) (orreg_t)(x) -#include "op-2t.h" -#include "op-1t.h" -#undef COMP_CAST -#undef COMP_NAME -#undef COMP - -#define COMP < -#define COMP_NAME sflts -#define COMP_CAST(x) (orreg_t)(x) -#include "op-2t.h" -#include "op-1t.h" -#undef COMP_CAST -#undef COMP_NAME -#undef COMP - -#define COMP <= -#define COMP_NAME sfles -#define COMP_CAST(x) (orreg_t)(x) -#include "op-2t.h" -#include "op-1t.h" -#undef COMP_CAST -#undef COMP_NAME -#undef COMP - -#undef OP_FILE - -#define OP_FILE "op-t-reg-mov-op.h" -#include "op-1t.h" -#undef OP_FILE - -#define OP_FILE "op-mftspr-op.h" -#include "op-1t.h" -#include "op-2t.h" -#undef OP_FILE -#include "op-mftspr-op.h" - -#define OP_FILE "op-mac-op.h" - -#define OP += -#define OP_NAME mac -#include "op-2t.h" -#undef OP_NAME -#undef OP - -#define OP -= -#define OP_NAME msb -#include "op-2t.h" -#undef OP_NAME -#undef OP - -#undef OP_FILE - -#define OP_FILE "op-lwhb-op.h" - -#define LS_OP_NAME lbz -#define LS_OP_CAST -#define LS_OP_FUNC eval_mem8 -#include "op-2t.h" -#include "op-1t.h" -#undef LS_OP_FUNC -#undef LS_OP_CAST -#undef LS_OP_NAME - -#define LS_OP_NAME lbs -#define LS_OP_CAST (int8_t) -#define LS_OP_FUNC eval_mem8 -#include "op-2t.h" -#include "op-1t.h" -#undef LS_OP_FUNC -#undef LS_OP_CAST -#undef LS_OP_NAME - -#define LS_OP_NAME lhz -#define LS_OP_CAST -#define LS_OP_FUNC eval_mem16 -#include "op-2t.h" -#include "op-1t.h" -#undef LS_OP_FUNC -#undef LS_OP_CAST -#undef LS_OP_NAME - -#define LS_OP_NAME lhs -#define LS_OP_CAST (int16_t) -#define LS_OP_FUNC eval_mem16 -#include "op-2t.h" -#include "op-1t.h" -#undef LS_OP_FUNC -#undef LS_OP_CAST -#undef LS_OP_NAME - -#define LS_OP_NAME lwz -#define LS_OP_CAST -#define LS_OP_FUNC eval_mem32 -#include "op-2t.h" -#include "op-1t.h" -#undef LS_OP_FUNC -#undef LS_OP_CAST -#undef LS_OP_NAME - -#define LS_OP_NAME lws -#define LS_OP_CAST (int32_t) -#define LS_OP_FUNC eval_mem32 -#include "op-2t.h" -#include "op-1t.h" -#undef LS_OP_FUNC -#undef LS_OP_CAST -#undef LS_OP_NAME - -#undef OP_FILE - -#define OP_FILE "op-swhb-op.h" - -#define S_OP_NAME sb -#define S_FUNC set_mem8 -#include "op-swhb-op.h" -#include "op-2t.h" -#include "op-1t.h" -#undef S_FUNC -#undef S_OP_NAME - -#define S_OP_NAME sh -#define S_FUNC set_mem16 -#include "op-swhb-op.h" -#include "op-2t.h" -#include "op-1t.h" -#undef S_FUNC -#undef S_OP_NAME - -#define S_OP_NAME sw -#define S_FUNC set_mem32 -#include "op-swhb-op.h" -#include "op-2t.h" -#include "op-1t.h" -#undef S_FUNC -#undef S_OP_NAME - -__or_dynop void op_join_mem_cycles(void) -{ - runtime.sim.cycles += runtime.sim.mem_cycles; - scheduler.job_queue->time -= runtime.sim.mem_cycles; - runtime.sim.mem_cycles = 0; -} - -__or_dynop void op_store_link_addr_gpr(void) -{ - env->reg[LINK_REGNO] = env->pc + 8; -} - -__or_dynop void op_prep_rfe(void) -{ - env->sprs[SPR_SR] = env->sprs[SPR_ESR_BASE] | SPR_SR_FO; - env->sprs[SPR_PPC] = env->pc; - env->pc = env->sprs[SPR_EPCR_BASE] - 4; -} - -static inline void prep_except(oraddr_t epcr_base) -{ - env->sprs[SPR_EPCR_BASE] = epcr_base; - - env->sprs[SPR_ESR_BASE] = env->sprs[SPR_SR]; - - /* Address translation is always disabled when starting exception. */ - env->sprs[SPR_SR] &= ~SPR_SR_DME; - env->sprs[SPR_SR] &= ~SPR_SR_IME; - - env->sprs[SPR_SR] &= ~SPR_SR_OVE; /* Disable overflow flag exception. */ - - env->sprs[SPR_SR] |= SPR_SR_SM; /* SUPV mode */ - env->sprs[SPR_SR] &= ~(SPR_SR_IEE | SPR_SR_TEE); /* Disable interrupts. */ -} - -/* Before the code in op_{sys,trap}{,_delay} gets run, the scheduler runs. - * Therefore the pc will point to the instruction after the l.sys or l.trap - * instruction */ -__or_dynop void op_prep_sys_delay(void) -{ - env->delay_insn = 0; - prep_except(env->pc - 4); - env->pc = EXCEPT_SYSCALL - 4; -} - -__or_dynop void op_prep_sys(void) -{ - prep_except(env->pc + 4); - env->pc = EXCEPT_SYSCALL - 4; -} - -__or_dynop void op_prep_trap_delay(void) -{ - env->delay_insn = 0; - prep_except(env->pc - 4); - env->pc = EXCEPT_TRAP - 4; -} - -__or_dynop void op_prep_trap(void) -{ - prep_except(env->pc); - env->pc = EXCEPT_TRAP - 4; -} - -/* FIXME: This `instruction' should be split up like the l.trap and l.sys - * instructions are done */ -__or_dynop void op_illegal_delay(void) -{ - env->delay_insn = 0; - env->sprs[SPR_EEAR_BASE] = env->pc - 4; - env->pc = EXCEPT_ILLEGAL - 4; -} - -__or_dynop void op_illegal(void) -{ - env->sprs[SPR_EEAR_BASE] = env->pc; - env->pc = EXCEPT_ILLEGAL; -} - -__or_dynop void op_do_sched(void) -{ - SPEEDY_CALL(do_sched_wrap); -} - -__or_dynop void op_do_sched_delay(void) -{ - SPEEDY_CALL(do_sched_wrap_delay); -} - -__or_dynop void op_macc(void) -{ - env->sprs[SPR_MACLO] = 0; - env->sprs[SPR_MACHI] = 0; -} - -__or_dynop void op_store_insn_ea(void) -{ - env->insn_ea = OP_PARAM1; -} -
cpu/or32/op.c Property changes : Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:keywords ## -1 +0,0 ## -Id \ No newline at end of property Index: cpu/or32/dyngen-i386.c =================================================================== --- cpu/or32/dyngen-i386.c (revision 538) +++ cpu/or32/dyngen-i386.c (nonexistent) @@ -1,75 +0,0 @@ -/* dyngen-i386.c -- i386 parts of dyngen - Copyright (C) 2005 György `nog' Jeney, nog@sdf.lonestar.org - -This file is part of OpenRISC 1000 Architectural Simulator. - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ - - -#include -#include -#include - -#include - -#include "dyngen.h" - -#define RET_OPCODE 0xc3 - -unsigned int i386_get_real_func_len(void *f_start, unsigned int f_len, char *name) -{ - if(((uint8_t *)f_start)[f_len - 1] != RET_OPCODE) { - fprintf(stderr, "`%s' does not have a ret at the end!\n", name); - exit(1); - } - - return f_len - 1; -} - -void i386_gen_reloc(FILE *f, struct reloc *reloc, unsigned int param) -{ - switch(reloc->type) { - case R_386_32: - fprintf(f, " *(uint32_t *)(host_page + %d) = *(ops_param + %u) + %d;\n", - reloc->func_offset, param - 1, reloc->addend); - break; - default: - fprintf(stderr, "Unknown i386 relocation: %i (%s)\n", reloc->type, - reloc->name); - } -} - -void i386_gen_func_reloc(FILE *f, struct reloc *reloc) -{ - switch(reloc->type) { - case R_386_32: - /* This relocation is absolute. There is nothing to relocate (The linker - * handles this fine). */ - break; - case R_386_PC32: - fprintf(f, " *(uint32_t *)(host_page + %d) = (uint32_t)((%s + %d) - (unsigned int)(host_page + %d));\n", - reloc->func_offset, reloc->name, reloc->addend, reloc->func_offset); - break; - default: - fprintf(stderr, "Unknown i386 relocation: %i (symbol: %s)\n", reloc->type, - reloc->name); - } -} - -const struct archf archfs = { - i386_get_real_func_len, - i386_gen_reloc, - i386_gen_func_reloc -};
cpu/or32/dyngen-i386.c Property changes : Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:keywords ## -1 +0,0 ## -Id \ No newline at end of property Index: cpu/or32/sched-i386.h =================================================================== --- cpu/or32/sched-i386.h (revision 538) +++ cpu/or32/sched-i386.h (nonexistent) @@ -1,40 +0,0 @@ -/* sched-i386.h -- i386 specific support routines for the scheduler - Copyright (C) 2005 György `nog' Jeney, nog@sdf.lonestar.org - -This file is part of OpenRISC 1000 Architectural Simulator. - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ - - -/* Sets the cycle counter to a specific value */ -static void set_sched_cycle(int32_t job_time) -{ - union { - uint64_t val64; - union { - uint32_t low32; - uint32_t high32; - } val3232; - } time_pc; - - asm("movq %%mm0, %0\n" - "\tmovl %2, %1\n" - "\tmovq %3, %%mm0\n" - : "=m" (time_pc.val64), - "=m" (time_pc.val3232.low32) - : "r" (job_time), - "m" (time_pc.val64)); -} -
cpu/or32/sched-i386.h Property changes : Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:keywords ## -1 +0,0 ## -Id \ No newline at end of property Index: cpu/or32/common-i386.h =================================================================== --- cpu/or32/common-i386.h (revision 538) +++ cpu/or32/common-i386.h (nonexistent) @@ -1,63 +0,0 @@ -/* common-i386.h -- Assembler routines used in rec_i386.h and op_i386.h - Copyright (C) 2005 György `nog' Jeney, nog@sdf.lonestar.org - -This file is part of OpenRISC 1000 Architectural Simulator. - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ - - -/* This is needed because we can't move an mmx register to a general purpose - * register. */ -static union { - struct { - uint32_t low32; - uint32_t high32; - } val3232; - uint64_t val64; -} useless_x86; - -/* Sets the PC with a specified value */ -static void set_pc(oraddr_t pc) -{ - /* I could just use pc as a memory argument, but if I do that then gcc may put - * the value of pc onto the stack, in which case gcc would also shift the - * stack twice, which would result in two add 4, %esp instructions and a - * mov %eax, *%esp, which would not only be slow but it would take up more - * space. */ - asm("movq %%mm0, %0\n" - "\tmovl %2, %1\n" - "\tmovq %3, %%mm0" - : "=m" (useless_x86.val64), - "=m" (useless_x86.val3232.high32) - : "r" (pc), - "m" (useless_x86.val64)); -} - -/* Returns the current value of the pc */ -static oraddr_t get_pc(void) -{ - asm("movq %%mm0, %0" : "=m" (useless_x86.val64)); - return useless_x86.val3232.high32; -} - -/* Updates the runtime.sim.cycles counter */ -static void upd_sim_cycles(void) -{ - asm volatile ("movq %%mm0, %0\n" : "=m" (useless_x86.val64)); - runtime.sim.cycles += scheduler.job_queue->time - useless_x86.val3232.low32; - scheduler.job_queue->time = useless_x86.val3232.low32; - cpu_state.pc = useless_x86.val3232.high32; -} -
cpu/or32/common-i386.h Property changes : Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:keywords ## -1 +0,0 ## -Id \ No newline at end of property Index: cpu/or32/dyngen.c =================================================================== --- cpu/or32/dyngen.c (revision 538) +++ cpu/or32/dyngen.c (nonexistent) @@ -1,289 +0,0 @@ -/* dyngen.c -- Generates micro operation generating functions - Copyright (C) 2005 György `nog' Jeney, nog@sdf.lonestar.org - -This file is part of OpenRISC 1000 Architectural Simulator. - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ - - -#include -#include -#include - -#include "dyngen.h" - -#define OP_FUNC_PREFIX "op_" -#define OP_FUNC_PARAM_PREFIX "__op_param" -/* Have to add to to make sure that the param[] is 0 */ -#define MAX_PARAMS (3 + 1) - -static const char *c_file_head = -"#include \"config.h\"\n" -"\n" -"#include \n" -"\n" -"#include \"arch.h\"\n" -"#include \"opcode/or32.h\"\n" -"#include \"spr-defs.h\"\n" -"#include \"i386-regs.h\"\n" -"#include \"abstract.h\"\n" -"\n" -"#include \"dyn-rec.h\"\n" -"#include \"%s\"\n" -"\n"; - -static const char *gen_code_proto = -"void gen_code(struct op_queue *opq, struct dyn_page *dp);\n" -"void patch_relocs(struct op_queue *opq, void *host_page);\n" -"\n"; - -static const char *c_sw_file_head = -"#include \n" -"#include \n" -"\n" -"#include \"config.h\"\n" -"\n" -"#include \n" -"\n" -"#include \"arch.h\"\n" -"#include \"opcode/or32.h\"\n" -"#include \"spr-defs.h\"\n" -"#include \"i386-regs.h\"\n" -"#include \"abstract.h\"\n" -"#include \"dyn-rec.h\"\n" -"#include \"%s\"\n" -"\n" -"void gen_code(struct op_queue *opq, struct dyn_page *dp)\n" -"{\n" -" unsigned int *ops, i;\n" -" unsigned int host_len = dp->host_len;\n" -" void *host_cur = dp->host_page;\n" -" oraddr_t pc = dp->or_page;\n" -" void **loc = dp->locs;\n" -"\n" -" while(opq) {\n" -" if(opq->next)\n" -" *loc++ = (void *)(host_cur - dp->host_page);" -"\n" -" for(i = 0, ops = opq->ops; i < opq->num_ops; i++, ops++) {\n" -" switch(*ops) {\n" -" case op_mark_loc_indx:\n" -" opq->ops_param[0] = host_cur - dp->host_page;\n" -" break;\n"; - -static const char *c_sw_file_tail = -" }\n" -" }\n" -" opq = opq->next;\n" -" pc += 4;\n" -" }\n" -"\n" -" dp->host_len = host_cur - dp->host_page;\n" -" dp->host_page = realloc(dp->host_page, dp->host_len);\n" -"}\n"; - -static const char *c_rel_file_head = -"#include /* To get printf... */\n" -"#include \n" -"\n" -"#include \"config.h\"\n" -"\n" -"#include \n" -"\n" -"#include \"arch.h\"\n" -"#include \"spr-defs.h\"\n" -"#include \"i386-regs.h\"\n" -"#include \"opcode/or32.h\"\n" -"#include \"abstract.h\"\n" -"#include \"tick.h\"\n" -"#include \"execute.h\"\n" -"#include \"sprs.h\"\n" -"#include \"dyn-rec.h\"\n" -"#include \"op-support.h\"\n" -"#include \"%s\"\n" -"\n" -"void do_scheduler(void); /* FIXME: Remove */\n" -"void do_sched_wrap(void); /* FIXME: Remove */\n" -"void do_sched_wrap_delay(void); /* FIXME: Remove */\n" -"void simprintf(oraddr_t stackaddr, unsigned long regparam); /* FIXME: Remove */\n" -"\n" -"void patch_relocs(struct op_queue *opq, void *host_page)\n" -"{\n" -" unsigned int *ops, *ops_param, i;\n" -"\n" -" while(opq) {\n" -" for(i = 0, ops = opq->ops, ops_param = opq->ops_param; i < opq->num_ops; i++, ops++) {\n" -" switch(*ops) {\n"; - -static const char *c_rel_file_tail = -" }\n" -" }\n" -" opq = opq->next;\n" -" }\n" -"}\n"; - -static void gen_func_proto(FILE *f, const char *name, int *params) -{ - int i; - - fprintf(f, "void gen_%s(struct op_queue *opq, int end", name); - for(i = 0; (i < MAX_PARAMS) && params[i]; i++) { - fprintf(f, ", uorreg_t param%i", i + 1); - } - fprintf(f, ")"); -} - -int main(int argc, char **argv) -{ - void *obj; - int i, j; - unsigned int len; - char *name; - int params[MAX_PARAMS]; - struct reloc reloc; - - FILE *c_file; - FILE *h_file; - FILE *c_sw_file; - FILE *c_rel_file; - - if(argc != 6) { - fprintf(stderr, "Usage: %s \n", argv[0]); - return 1; - } - - obj = bffs.open_obj(argv[1]); - if(!obj) { - fprintf(stderr, "Unable to open object file %s\n", argv[1]); - return 1; - } - - if(!(c_file = fopen(argv[2], "w"))) { - fprintf(stderr, "Unable to open %s for writting\n", argv[2]); - bffs.close_obj(obj); - return 1; - } - - if(!(c_sw_file = fopen(argv[3], "w"))) { - fprintf(stderr, "Unable to open %s for writting\n", argv[2]); - fclose(c_file); - bffs.close_obj(obj); - } - - if(!(c_rel_file = fopen(argv[4], "w"))) { - fprintf(stderr, "Unable to open %s for writting\n", argv[3]); - fclose(c_file); - fclose(c_sw_file); - bffs.close_obj(obj); - return 1; - } - - if(!(h_file = fopen(argv[5], "w"))) { - fprintf(stderr, "Unable to open %s for writting\n", argv[3]); - fclose(c_file); - fclose(c_sw_file); - fclose(c_rel_file); - bffs.close_obj(obj); - return 1; - } - - fprintf(c_file, c_file_head, argv[5]); - fprintf(c_sw_file, c_sw_file_head, argv[5]); - fprintf(c_rel_file, c_rel_file_head, argv[5]); - fprintf(h_file, "%s", gen_code_proto); - - /* Itterate through the functions in the object file */ - for(i = 0; (name = bffs.get_func_name(obj, i)); i++) { - if(strncmp(name, OP_FUNC_PREFIX, strlen(OP_FUNC_PREFIX))) - continue; - - /* Find all the relocations associated with this function */ - memset(params, 0, sizeof(params)); - for(j = 0; bffs.get_func_reloc(obj, i, j, &reloc); j++) { - //fprintf(stderr, "%s %i %i\n", reloc.name, reloc.func_offset, reloc.addend); - if(strncmp(reloc.name, OP_FUNC_PARAM_PREFIX, strlen(OP_FUNC_PARAM_PREFIX))) { - continue; - } - params[atoi(reloc.name + strlen(OP_FUNC_PARAM_PREFIX)) - 1] = 1; - } - - len = archfs.get_real_func_len(bffs.get_func_start(obj, i), - bffs.get_func_len(obj, i), name); - - gen_func_proto(h_file, name, params); - fprintf(h_file, ";\n"); - - if(len) { - /* Prototype the operation */ - fprintf(h_file, "void %s(void);\n", name); - fprintf(h_file, "#define %s_indx %i\n", name, i); - } - - gen_func_proto(c_file, name, params); - fprintf(c_file, "\n{\n"); - if(len) { - fprintf(c_file, " add_to_opq(opq, end, %s_indx);\n", name); - - for(j = 0; params[j]; j++) - fprintf(c_file, " add_to_op_params(opq, end, param%i);\n", j + 1); - } - fprintf(c_file, "}\n\n"); - - if(!len) { - /* If the operation is of length 0, then just ignore it */ - fprintf(stderr, "WARNING: Useless operation (size == 0): %s\n", name); - continue; - } - - fprintf(c_sw_file, " case %s_indx:\n", name); - fprintf(c_sw_file, " host_cur = enough_host_page(dp, host_cur, &host_len, %i);\n", len); - fprintf(c_sw_file, " memcpy(host_cur, %s, %i);\n", name, len); - - fprintf(c_rel_file, " case %s_indx:\n", name); - for(j = 0; bffs.get_func_reloc(obj, i, j, &reloc); j++) { - /* Ignore nameless relocations, they appear to be absolute */ - if(!*reloc.name) - continue; - if(strncmp(reloc.name, OP_FUNC_PARAM_PREFIX, strlen(OP_FUNC_PARAM_PREFIX))) { - /* We have to manually do the relocations when the relocation is - * relative to the PC as the code gets copied to a different location - * during recompilation, where the relative addresses shall be waay out. - */ - archfs.gen_func_reloc(c_rel_file, &reloc); - } else { - archfs.gen_reloc(c_rel_file, &reloc, - atoi(reloc.name + strlen(OP_FUNC_PARAM_PREFIX))); - } - } - - fprintf(c_sw_file, " host_cur += %i;\n break;\n\n", len); - fprintf(c_rel_file, " host_page += %i;\n", len); - /* Count how many parameters where used */ - for(j = 0; params[j]; j++); - fprintf(c_rel_file, " ops_param += %i;\n break;\n\n", j); - } - - fprintf(c_sw_file, "%s", c_sw_file_tail); - fprintf(c_rel_file, "%s", c_rel_file_tail); - - fprintf(h_file, "\n#define op_mark_loc_indx %i\n", i); - - fclose(h_file); - fclose(c_file); - fclose(c_sw_file); - fclose(c_rel_file); - bffs.close_obj(obj); - return 0; -}
cpu/or32/dyngen.c Property changes : Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:keywords ## -1 +0,0 ## -Id \ No newline at end of property Index: cpu/or32/dyngen.h =================================================================== --- cpu/or32/dyngen.h (revision 538) +++ cpu/or32/dyngen.h (nonexistent) @@ -1,45 +0,0 @@ -/* dyngen.h -- Definitions for dyngen.c - Copyright (C) 2005 György `nog' Jeney, nog@sdf.lonestar.org - -This file is part of OpenRISC 1000 Architectural Simulator. - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ - - -struct reloc { - unsigned int func_offset; - unsigned int addend; - int type; - const char *name; -}; - -struct bff { - void *(*open_obj)(const char *object); /* Open the object file */ - void (*close_obj)(void *); - char *(*get_func_name)(void *, unsigned int func); /* Gets the name of func */ - void *(*get_func_start)(void *, unsigned int func); - unsigned int (*get_func_len)(void *, unsigned int func); - int (*get_func_reloc)(void *, unsigned int func, unsigned int relocn, struct reloc *reloc); -}; - -extern const struct bff bffs; - -struct archf { - unsigned int (*get_real_func_len)(void *func, unsigned int len, char *name); - void (*gen_reloc)(FILE *f, struct reloc *reloc, unsigned int param); - void (*gen_func_reloc)(FILE *f, struct reloc *reloc); -}; - -extern const struct archf archfs;
cpu/or32/dyngen.h Property changes : Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:keywords ## -1 +0,0 ## -Id \ No newline at end of property Index: cpu/or32/dyngen-elf.c =================================================================== --- cpu/or32/dyngen-elf.c (revision 538) +++ cpu/or32/dyngen-elf.c (nonexistent) @@ -1,359 +0,0 @@ -/* dyngen-elf.c -- Elf parser for dyngen - Copyright (C) 2005 György `nog' Jeney, nog@sdf.lonestar.org - -This file is part of OpenRISC 1000 Architectural Simulator. - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ - - -#include -#include -#include -#include - -#include - -#include "dyngen.h" - -struct elf_obj { - Elf32_Ehdr e_hdr; - Elf32_Shdr *e_shdrs; - void **e_sections; - Elf32_Sym *e_syms; /* The symbol table in the elf file */ - unsigned int e_sym_num; /* The number of symbols */ - unsigned int e_sym_str_tab; /* The string-table associated with symbols */ - Elf32_Rel *e_rels; - unsigned int e_rel_num; /* The number of relocations (in e_rel) */ - unsigned int e_rel_sym; - unsigned int e_rel_sec; /* The section to modify */ - Elf32_Rela *e_relas; - unsigned int e_rela_num; /* The number of relocations (in e_rela) */ - unsigned int e_rela_sym; - unsigned int e_rela_sec; /* The section to modify */ -}; - -void *elf_open_obj(const char *file) -{ - struct elf_obj *obj; - FILE *f; - int i; - - if(!(obj = malloc(sizeof(struct elf_obj)))) { - fprintf(stderr, "OOM\n"); - return NULL; - } - - if(!(f = fopen(file, "r"))) { - free(obj); - return NULL; - } - - fread(&obj->e_hdr, sizeof(Elf32_Ehdr), 1, f); - - /* Do some sanity checks */ - if((obj->e_hdr.e_ident[EI_MAG0] != ELFMAG0) || - (obj->e_hdr.e_ident[EI_MAG1] != ELFMAG1) || - (obj->e_hdr.e_ident[EI_MAG2] != ELFMAG2) || - (obj->e_hdr.e_ident[EI_MAG3] != ELFMAG3)) { - fprintf(stderr, "%s is not an elf file!\n", file); - goto error_load; - } - - if(obj->e_hdr.e_ident[EI_CLASS] == ELFCLASSNONE) { - fprintf(stderr, "Invalid class in ELF header\n"); - goto error_load; - } - - if(obj->e_hdr.e_ident[EI_DATA] == ELFDATANONE) { - fprintf(stderr, "Invalid data format in ELF header\n"); - goto error_load; - } - - /* FIXME: Swap data as necessary */ - - if((obj->e_hdr.e_ident[EI_VERSION] != 1) || - (obj->e_hdr.e_version != 1)) { - fprintf(stderr, "Unexpected elf version found: %i (%li)\n", - obj->e_hdr.e_ident[EI_VERSION], (long int)obj->e_hdr.e_version); - goto error_load; - } - - if(obj->e_hdr.e_type != ET_REL) { - fprintf(stderr, "Appears that we did not receive a object file\n"); - goto error_load; - } - - if(obj->e_hdr.e_phoff) { - fprintf(stderr, "What am I supposed to do with a program header??\n"); - goto error_load; - } - - if(obj->e_hdr.e_ehsize != sizeof(Elf32_Ehdr)) { - fprintf(stderr, "Unknown size of elf header\n"); - goto error_load; - } - - if(!obj->e_hdr.e_shoff || !obj->e_hdr.e_shnum) { - fprintf(stderr, "The elf file contains no sections!\n"); - goto error_load; - } - - if(obj->e_hdr.e_shentsize != sizeof(Elf32_Shdr)) { - fprintf(stderr, "Unknown section header size %i\n", obj->e_hdr.e_shentsize); - goto error_load; - } - - /* Load the section headers */ - if(!(obj->e_shdrs = malloc(obj->e_hdr.e_shentsize * obj->e_hdr.e_shnum))){ - fprintf(stderr, "OOM\n"); - goto error_load; - } - - fseek(f, obj->e_hdr.e_shoff, SEEK_SET); - fread(obj->e_shdrs, obj->e_hdr.e_shentsize, obj->e_hdr.e_shnum, f); - - /* FIXME: swap data */ - - /* Load the sections */ - if(!(obj->e_sections = calloc(obj->e_hdr.e_shnum, sizeof(void *)))) { - fprintf(stderr, "OOM\n"); - free(obj->e_shdrs); - goto error_load; - } - - for(i = 0; i < obj->e_hdr.e_shnum; i++) { - if(obj->e_shdrs[i].sh_type == SHT_NOBITS) - continue; - if(!(obj->e_sections[i] = malloc(obj->e_shdrs[i].sh_size))) { - fprintf(stderr, "OOM\n"); - goto post_sec_error_load; - } - fseek(f, obj->e_shdrs[i].sh_offset, SEEK_SET); - fread(obj->e_sections[i], obj->e_shdrs[i].sh_size, 1, f); - } - - obj->e_rels = NULL; - obj->e_syms = NULL; - obj->e_relas = NULL; - - /* Find the symbol table and relocation table(s) */ - for(i = 0; i < obj->e_hdr.e_shnum; i++) { - switch(obj->e_shdrs[i].sh_type) { - case SHT_SYMTAB: - if(obj->e_syms) { - fprintf(stderr, "ELF file has more than one symbol table\n"); - goto post_sec_error_load; - } - if(obj->e_shdrs[i].sh_entsize != sizeof(Elf32_Sym)) { - fprintf(stderr, "ELF symbol table entry size is unknown\n"); - goto post_sec_error_load; - } - if((obj->e_shdrs[i].sh_size % obj->e_shdrs[i].sh_entsize)) { - fprintf(stderr, "Symbol table's length is not a multiple of sizeof(Elf32_Sym\n"); - goto post_sec_error_load; - } - obj->e_syms = obj->e_sections[i]; - obj->e_sym_num = obj->e_shdrs[i].sh_size / obj->e_shdrs[i].sh_entsize; - obj->e_sym_str_tab = obj->e_shdrs[i].sh_link; - break; - case SHT_REL: - if(obj->e_rels) { - fprintf(stderr, "ELF file has more than one relocation table\n"); - goto post_sec_error_load; - } - if(obj->e_shdrs[i].sh_entsize != sizeof(Elf32_Rel)) { - fprintf(stderr, "ELF relocation table entry size is unknown\n"); - goto post_sec_error_load; - } - if((obj->e_shdrs[i].sh_size % obj->e_shdrs[i].sh_entsize)) { - fprintf(stderr, "Relocation table's length is not a multiple of sizeof(Elf32_Rel\n"); - goto post_sec_error_load; - } - obj->e_rels = obj->e_sections[i]; - obj->e_rel_sec = obj->e_shdrs[i].sh_info; - obj->e_rel_sym = obj->e_shdrs[i].sh_link; - obj->e_rel_num = obj->e_shdrs[i].sh_size / obj->e_shdrs[i].sh_entsize; - break; - case SHT_RELA: - if(obj->e_relas) { - fprintf(stderr, "ELF file has more than one a-relocation table\n"); - goto post_sec_error_load; - } - if(obj->e_shdrs[i].sh_entsize != sizeof(Elf32_Rela)) { - fprintf(stderr, "ELF a-relocation table entry size is unknown\n"); - goto post_sec_error_load; - } - if((obj->e_shdrs[i].sh_size % obj->e_shdrs[i].sh_entsize)) { - fprintf(stderr, "Relocation table's length is not a multiple of sizeof(Elf32_Rela)\n"); - goto post_sec_error_load; - } - obj->e_relas = obj->e_sections[i]; - obj->e_rela_sec = obj->e_shdrs[i].sh_info; - obj->e_rela_sym = obj->e_shdrs[i].sh_link; - obj->e_rela_num = obj->e_shdrs[i].sh_size / obj->e_shdrs[i].sh_entsize; - break; - } - } - - fclose(f); - return obj; - -post_sec_error_load: - for(i = 0; i < obj->e_hdr.e_shnum; i++) { - if(obj->e_sections[i]) - free(obj->e_sections[i]); - } - free(obj->e_sections); - free(obj->e_shdrs); -error_load: - free(obj); - fclose(f); - return NULL; -} - -void elf_close_obj(void *e_obj) -{ - struct elf_obj *obj = e_obj; - int i; - - for(i = 0; i < obj->e_hdr.e_shnum; i++) { - if(obj->e_sections[i]) - free(obj->e_sections[i]); - } - free(obj->e_sections); - free(obj->e_shdrs); - free(obj); -} - -static Elf32_Sym *elf_find_func(struct elf_obj *obj, unsigned int func) -{ - int i, j; - Elf32_Sym *cur; - - for(i = 0, j = 0, cur = obj->e_syms; i < obj->e_sym_num; i++, cur++) { - if(ELF32_ST_BIND(cur->st_info) != STB_GLOBAL) - continue; - if(ELF32_ST_TYPE(cur->st_info) != STT_FUNC) - continue; - if(j == func) - return cur; - j++; - } - return NULL; -} - -char *elf_get_func_name(void *e_obj, unsigned int func) -{ - struct elf_obj *obj = e_obj; - Elf32_Sym *func_sym = elf_find_func(obj, func); - - if(func_sym) - return obj->e_sections[obj->e_sym_str_tab] + func_sym->st_name; - - return NULL; -} - -unsigned int elf_get_func_len(void *e_obj, unsigned int func) -{ - struct elf_obj *obj = e_obj; - Elf32_Sym *func_sym = elf_find_func(obj, func); - - if(func_sym) - return func_sym->st_size; - return 0; -} - -void *elf_get_func_start(void *e_obj, unsigned int func) -{ - struct elf_obj *obj = e_obj; - Elf32_Sym *func_sym = elf_find_func(obj, func); - - if(!func_sym) - return NULL; - - if(func_sym->st_shndx == SHN_COMMON) { - fprintf(stderr, "Don't know how to handle SHN_COMMON section header\n"); - return NULL; - } - - return obj->e_sections[func_sym->st_shndx] + func_sym->st_value; -} - -static char *elf_get_sym_name(struct elf_obj *obj, unsigned int sym) -{ - char *name; - - name = obj->e_sections[obj->e_sym_str_tab]; - name += obj->e_syms[sym].st_name; - - return name; -} - -int elf_get_func_reloc(void *e_obj, unsigned int func, unsigned int relocn, - struct reloc *reloc) -{ - struct elf_obj *obj = e_obj; - Elf32_Sym *func_sym = elf_find_func(obj, func); - Elf32_Rel *cur; - Elf32_Rela *cura; - int i, j; - -/* - if(obj->e_rel_sec != func_sym->st_shndx) { - fprintf(stderr, "Don't know what to do: Function does not have a relocation table\n"); - return 0; - } -*/ - - for(i = 0, j = 0, cur = obj->e_rels; i < obj->e_rel_num; i++, cur++) { - if((cur->r_offset - func_sym->st_value) > func_sym->st_size) - continue; - if(relocn == j) { - reloc->name = elf_get_sym_name(obj, ELF32_R_SYM(cur->r_info)); - reloc->func_offset = cur->r_offset - func_sym->st_value; - reloc->type = ELF32_R_TYPE(cur->r_info); - /* FIXME: Byte-swap */ - reloc->addend = *(uint32_t *)(obj->e_sections[obj->e_rel_sec] + cur->r_offset); - return 1; - } - j++; - } - - if(!obj->e_relas) - return 0; - - for(i = 0, cura = obj->e_relas; i < obj->e_rela_num; i++, cura++) { - if((cura->r_offset - func_sym->st_value) > func_sym->st_size) - continue; - if(relocn == j) { - reloc->name = elf_get_sym_name(obj, ELF32_R_SYM(cur->r_info)); - reloc->func_offset = cura->r_offset - func_sym->st_value; - reloc->type = ELF32_R_TYPE(cur->r_info); - reloc->addend = cura->r_addend; - return 1; - } - j++; - } - - return 0; -} - -const struct bff bffs = { - elf_open_obj, - elf_close_obj, - elf_get_func_name, - elf_get_func_start, - elf_get_func_len, - elf_get_func_reloc };
cpu/or32/dyngen-elf.c Property changes : Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:keywords ## -1 +0,0 ## -Id \ No newline at end of property Index: cpu/or32/op-i386.h =================================================================== --- cpu/or32/op-i386.h (revision 538) +++ cpu/or32/op-i386.h (nonexistent) @@ -1,46 +0,0 @@ -/* op-i386.h -- i386 specific support routines for micro operations - - Copyright (C) 2005 György `nog' Jeney, nog@sdf.lonestar.org - Copyright (C) 2008 Embecosm Limited - - Contributor Jeremy Bennett - - This file is part of Or1ksim, the OpenRISC 1000 Architectural Simulator. - - This program is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - more details. - - You should have received a copy of the GNU General Public License along - with this program. If not, see . */ - -/* This program is commented throughout in a fashion suitable for processing - with Doxygen. */ - - -#ifndef OP_I386__H -#define OP_I386__H - -#define OP_JUMP(x) asm("jmp *%0" : : "rm" (x)) - -#define FORCE_RET asm volatile ("") - -/* Does a function call (with no arguments) makeing sure that gcc doesn't peddle - * the stack. (FIXME: Is this safe??) */ -#define SPEEDY_CALL(func) asm("call "#func"\n") - -/* Return out of the recompiled code */ -asm (" .align 2\n" - " .p2align 4,,15\n" - ".globl op_do_jump\n" - " .type op_do_jump,@function\n" - "op_do_jump:\n" - " ret\n" " ret\n" "1:\n" " .size op_do_jump,1b-op_do_jump\n"); - -#endif /* OP_I386__H */
cpu/or32/op-i386.h Property changes : Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:keywords ## -1 +0,0 ## -Id \ No newline at end of property Index: cpu/or32/op-extend-op.h =================================================================== --- cpu/or32/op-extend-op.h (revision 538) +++ cpu/or32/op-extend-op.h (nonexistent) @@ -1,27 +0,0 @@ -/* op-extend-op.h -- Micro operations template for sign extention operations - Copyright (C) 2005 György `nog' Jeney, nog@sdf.lonestar.org - -This file is part of OpenRISC 1000 Architectural Simulator. - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ - - -void glue(glue(op_, EXT_NAME), T)(void) -{ - register EXT_TYPE x; - x = T1; - T0 = EXT_CAST x; -} -
cpu/or32/op-extend-op.h Property changes : Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:keywords ## -1 +0,0 ## -Id \ No newline at end of property Index: cpu/or32/dyn-rec.c =================================================================== --- cpu/or32/dyn-rec.c (revision 538) +++ cpu/or32/dyn-rec.c (nonexistent) @@ -1,2451 +0,0 @@ -/* dyn-rec.c -- Dynamic recompiler implementation for or32 - Copyright (C) 2005 György `nog' Jeney, nog@sdf.lonestar.org - -This file is part of OpenRISC 1000 Architectural Simulator. - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ - -#include -#include -#include -#include -#include -#include -#include - -#include "config.h" - -#ifdef HAVE_INTTYPES_H -#include -#endif - -#include "port.h" -#include "arch.h" -#include "immu.h" -#include "abstract.h" -#include "opcode/or32.h" -#include "spr-defs.h" -#include "execute.h" -#include "except.h" -#include "spr-defs.h" -#include "sim-config.h" -#include "sched.h" -#include "i386-regs.h" -#include "def-op-t.h" -#include "dyn-rec.h" -#include "gen-ops.h" -#include "op-support.h" -#include "toplevel-support.h" - - -/* NOTE: All openrisc (or) addresses in this file are *PHYSICAL* addresses */ - -/* FIXME: Optimise sorted list adding */ - -typedef void (*generic_gen_op)(struct op_queue *opq, int end); -typedef void (*imm_gen_op)(struct op_queue *opq, int end, uorreg_t imm); - -void gen_l_invalid(struct op_queue *opq, int param_t[3], int delay_slot); - -/* ttg->temporary to gpr */ -DEF_GPR_OP(generic_gen_op, gen_op_move_gpr_t, gen_op_ttg_gpr); -/* gtt->gpr to temporary */ -DEF_GPR_OP(generic_gen_op, gen_op_move_t_gpr, gen_op_gtt_gpr); - -DEF_1T_OP(imm_gen_op, calc_insn_ea_table, gen_op_calc_insn_ea); - -/* Linker stubs. This will allow the linker to link in op.o. The relocations - * that the linker does for these will be irrelevent anyway, since we patch the - * relocations during recompilation. */ -uorreg_t __op_param1; -uorreg_t __op_param2; -uorreg_t __op_param3; - -/* The number of bytes that a dynamicly recompiled page should be enlarged by */ -#define RECED_PAGE_ENLARGE_BY 51200 - -/* The number of entries that the micro operations array in op_queue should be - * enlarged by */ -#define OPS_ENLARGE_BY 5 - -#define T_NONE (-1) - -/* Temporary is used as a source operand */ -#define TFLAG_SRC 1 -/* Temporary is used as a destination operand */ -#define TFLAG_DST 2 -/* Temporary has been saved to permanent storage */ -#define TFLAG_SAVED 4 -/* Temporary contains the value of the register before the instruction execution - * occurs (either by an explicit reg->t move or implicitly being left over from - * a previous instruction) */ -#define TFLAG_SOURCED 8 - -/* FIXME: Put this into some header */ -extern int do_stats; - -static int sigsegv_state = 0; -static void *sigsegv_addr = NULL; - -void dyn_ret_stack_prot(void); - -void dyn_sigsegv_debug(int u, siginfo_t *siginf, void *dat) -{ - struct dyn_page *dp; - FILE *f; - char filen[18]; /* 18 == strlen("or_page.%08x") + 1 */ - int i; - struct sigcontext *sigc = dat; - - if(!sigsegv_state) { - sigsegv_addr = siginf->si_addr; - } else { - fprintf(stderr, "Nested SIGSEGV occured, dumping next chuck of info\n"); - sigsegv_state++; - } - - /* First dump all the data that does not need dereferenceing to get */ - switch(sigsegv_state) { - case 0: - fflush(stderr); - fprintf(stderr, "Segmentation fault on acces to %p at 0x%08lx, (or address: 0x%"PRIxADDR")\n\n", - sigsegv_addr, sigc->eip, cpu_state.pc); - sigsegv_state++; - case 1: - /* Run through the recompiled pages, dumping them to disk as we go */ - for(i = 0; i < (2 << (32 - immu_state->pagesize_log2)); i++) { - dp = cpu_state.dyn_pages[i]; - if(!dp) - continue; - fprintf(stderr, "Dumping%s page 0x%"PRIxADDR" recompiled to %p (len: %u) to disk\n", - dp->dirty ? " dirty" : "", dp->or_page, dp->host_page, - dp->host_len); - fflush(stdout); - - sprintf(filen, "or_page.%"PRIxADDR, dp->or_page); - if(!(f = fopen(filen, "w"))) { - fprintf(stderr, "Unable to open %s to dump the recompiled page to: %s\n", - filen, strerror(errno)); - continue; - } - if(fwrite(dp->host_page, dp->host_len, 1, f) < 1) - fprintf(stderr, "Unable to write recompiled data to file: %s\n", - strerror(errno)); - - fclose(f); - } - sigsegv_state++; - case 2: - sim_done(); - } -} - -struct dyn_page *new_dp(oraddr_t page) -{ - struct dyn_page *dp = malloc(sizeof(struct dyn_page)); - dp->or_page = IADDR_PAGE(page); - - dp->locs = malloc(sizeof(void *) * (immu_state->pagesize / 4)); - - dp->host_len = 0; - dp->host_page = NULL; - dp->dirty = 1; - - if(do_stats) { - dp->insns = malloc(immu_state->pagesize); - dp->insn_indexs = malloc(sizeof(unsigned int) * (immu_state->pagesize / 4)); - } - - cpu_state.dyn_pages[dp->or_page >> immu_state->pagesize_log2] = dp; - return dp; -} - -void dyn_main(void) -{ - struct dyn_page *target_dp; - oraddr_t phys_page; - - setjmp(cpu_state.excpt_loc); - for(;;) { - phys_page = immu_translate(cpu_state.pc); - -/* - printf("Recompiled code jumping out to %"PRIxADDR" from %"PRIxADDR"\n", - phys_page, cpu_state.sprs[SPR_PPC] - 4); -*/ - - /* immu_translate() adds the hit delay to runtime.sim.mem_cycles but we add - * it to the cycles when the instruction is executed so if we don't reset it - * now it will produce wrong results */ - runtime.sim.mem_cycles = 0; - - target_dp = cpu_state.dyn_pages[phys_page >> immu_state->pagesize_log2]; - - if(!target_dp) - target_dp = new_dp(phys_page); - - /* Since writes to the 0x0-0xff range do not dirtyfy a page recompile the - * 0x0 page if the jump is to that location */ - if(phys_page < 0x100) - target_dp->dirty = 1; - - if(target_dp->dirty) - recompile_page(target_dp); - - cpu_state.curr_page = target_dp; - - /* FIXME: If the page is backed by more than one type of memory, this will - * produce wrong results */ - cpu_state.cycles_dec = target_dp->delayr; - if(cpu_state.sprs[SPR_SR] & SPR_SR_IME) - /* Add the mmu hit delay to the cycle counter */ - cpu_state.cycles_dec -= immu_state->hitdelay; - - /* FIXME: ebp, ebx, esi and edi are expected to be preserved across function - * calls but the recompiled code trashes them... */ - enter_dyn_code(phys_page, target_dp); - } -} - -static void immu_retranslate(void *dat) -{ - int got_en_dis = (int)dat; - immu_translate(cpu_state.pc); - runtime.sim.mem_cycles = 0; - - /* Only update the cycle decrementer if the mmu got enabled or disabled */ - if(got_en_dis == IMMU_GOT_ENABLED) - /* Add the mmu hit delay to the cycle counter */ - cpu_state.cycles_dec = cpu_state.curr_page->delayr - immu_state->hitdelay; - else if(got_en_dis == IMMU_GOT_DISABLED) - cpu_state.cycles_dec = cpu_state.curr_page->delayr; -} - -/* This is called whenever the immu is either enabled/disabled or reconfigured - * while enabled. This checks if an itlb miss would occour and updates the immu - * hit delay counter */ -void recheck_immu(int got_en_dis) -{ - oraddr_t addr; - - if(cpu_state.delay_insn) - addr = cpu_state.pc_delay; - else - addr = cpu_state.pc + 4; - - if(IADDR_PAGE(cpu_state.pc) == IADDR_PAGE(addr)) - /* Schedule a job to do immu_translate() */ - SCHED_ADD(immu_retranslate, (void *)got_en_dis, 0); -} - -/* Runs the scheduler. Called from except_handler (and dirtyfy_page below) */ -void run_sched_out_of_line(void) -{ - oraddr_t off = (cpu_state.pc & immu_state->page_offset_mask) >> 2; - - if(do_stats) { - cpu_state.iqueue.insn_addr = cpu_state.pc; - cpu_state.iqueue.insn = cpu_state.curr_page->insns[off]; - cpu_state.iqueue.insn_index = cpu_state.curr_page->insn_indexs[off]; - runtime.cpu.instructions++; - analysis(&cpu_state.iqueue); - } - - /* Run the scheduler */ - scheduler.job_queue->time += cpu_state.cycles_dec; - runtime.sim.cycles -= cpu_state.cycles_dec; - - op_join_mem_cycles(); - if(scheduler.job_queue->time <= 0) - do_scheduler(); -} - -/* Signals a page as dirty */ -static void dirtyfy_page(struct dyn_page *dp) -{ - oraddr_t check; - - printf("Dirtyfying page 0x%"PRIxADDR"\n", dp->or_page); - - dp->dirty = 1; - - /* If the execution is currently in the page that was touched then recompile - * it now and jump back to the point of execution */ - check = cpu_state.delay_insn ? cpu_state.pc_delay : cpu_state.pc + 4; - if(IADDR_PAGE(check) == dp->or_page) { - run_sched_out_of_line(); - recompile_page(dp); - - cpu_state.delay_insn = 0; - - /* Jump out to the next instruction */ - do_jump(check); - } -} - -/* Checks to see if a write happened to a recompiled page. If so marks it as - * dirty */ -void dyn_checkwrite(oraddr_t addr) -{ - /* FIXME: Do this with mprotect() */ - struct dyn_page *dp = cpu_state.dyn_pages[addr >> immu_state->pagesize_log2]; - - /* Since the locations 0x0-0xff are nearly always written to in an exception - * handler, ignore any writes to these locations. If code ends up jumping - * out there, we'll recompile when the jump actually happens. */ - if((addr > 0x100) && dp && !dp->dirty) - dirtyfy_page(dp); -} - -/* Moves the temprary t to its permanent storage if it has been used as a - * destination register */ -static void ship_t_out(struct op_queue *opq, unsigned int t) -{ - unsigned int gpr = opq->reg_t[t]; - - for(; opq; opq = opq->prev) { - if(opq->reg_t[t] != gpr) - return; - if((opq->tflags[t] & TFLAG_DST) && !(opq->tflags[t] & TFLAG_SAVED)) { - opq->tflags[t] |= TFLAG_SAVED; - - /* FIXME: Check if this is still neccesary */ - /* Before takeing the temporaries out, temporarily remove the op_do_sched - * operation such that dyn_page->ts_bound shall be correct before the - * scheduler runs */ - if(opq->num_ops && (opq->ops[opq->num_ops - 1] == op_do_sched_indx)) { - opq->num_ops--; - gen_op_move_gpr_t[t][gpr](opq, 1); - gen_op_do_sched(opq, 1); - return; - } - - gen_op_move_gpr_t[t][gpr](opq, 1); - - return; - } - } -} - -static void ship_gprs_out_t(struct op_queue *opq) -{ - int i; - - if(!opq) - return; - - for(i = 0; i < NUM_T_REGS; i++) { - if(opq->reg_t[i] < 32) - /* Ship temporaries out in the last opq that actually touched it */ - ship_t_out(opq, i); - } -} - -/* FIXME: Look at the following instructions to make a better guess at which - * temporary to return */ -static int find_t(struct op_queue *opq, unsigned int reg) -{ - int i, j, t = -1; - - for(i = 0; i < NUM_T_REGS; i++) { - if(opq->reg_t[i] == reg) - return i; - - /* Ok, we have found an as-yet unused temporary, check if it is needed - * later in this instruction */ - for(j = 0; j < opq->param_num; j++) { - if((opq->param_type[j] & OPTYPE_REG) && (opq->param[j] == opq->reg_t[i])) - break; - } - - if(j != opq->param_num) - continue; - - /* We have found the temporary (temporarily:) fit for use */ - if((t == -1) || (opq->reg_t[i] == 32)) - t = i; - } - - return t; -} - -/* Checks if there is enough space in dp->host_page, if not grow it */ -void *enough_host_page(struct dyn_page *dp, void *cur, unsigned int *len, - unsigned int amount) -{ - unsigned int used = cur - dp->host_page; - - /* The array is long enough */ - if((used + amount) <= *len) - return cur; - - /* Reallocate */ - *len += RECED_PAGE_ENLARGE_BY; - - if(!(dp->host_page = realloc(dp->host_page, *len))) { - fprintf(stderr, "OOM\n"); - exit(1); - } - - return dp->host_page + used; -} - -/* Adds an operation to the opq */ -void add_to_opq(struct op_queue *opq, int end, int op) -{ - if(opq->num_ops == opq->ops_len) { - opq->ops_len += OPS_ENLARGE_BY; - if(!(opq->ops = realloc(opq->ops, opq->ops_len * sizeof(int)))) { - fprintf(stderr, "OOM\n"); - exit(1); - } - } - - if(end) - opq->ops[opq->num_ops] = op; - else { - /* Shift everything over by one */ - memmove(opq->ops + 1, opq->ops, opq->num_ops* sizeof(int)); - opq->ops[0] = op; - } - - opq->num_ops++; -} - -static void gen_op_mark_loc(struct op_queue *opq, int end) -{ - add_to_opq(opq, end, op_mark_loc_indx); -} - -/* Adds a parameter to the opq */ -void add_to_op_params(struct op_queue *opq, int end, unsigned long param) -{ - if(opq->num_ops_param == opq->ops_param_len) { - opq->ops_param_len += OPS_ENLARGE_BY; - if(!(opq->ops_param = realloc(opq->ops_param, opq->ops_param_len * sizeof(int)))) { - fprintf(stderr, "OOM\n"); - exit(1); - } - } - - if(end) - opq->ops_param[opq->num_ops_param] = param; - else { - /* Shift everything over by one */ - memmove(opq->ops_param + 1, opq->ops_param, opq->num_ops_param); - opq->ops_param[0] = param; - } - - opq->num_ops_param++; -} - -/* Initialises the recompiler */ -void init_dyn_recomp(void) -{ - struct sigaction sigact; - struct op_queue *opq = NULL; - unsigned int i; - - cpu_state.opqs = NULL; - - /* Allocate the operation queue list (+1 for the page chaining) */ - for(i = 0; i < (immu_state->pagesize / 4) + 1; i++) { - if(!(opq = malloc(sizeof(struct op_queue)))) { - fprintf(stderr, "OOM\n"); - exit(1); - } - - /* initialise some fields */ - opq->ops_len = 0; - opq->ops = NULL; - opq->ops_param_len = 0; - opq->ops_param = NULL; - opq->xref = 0; - - if(cpu_state.opqs) - cpu_state.opqs->prev = opq; - - opq->next = cpu_state.opqs; - cpu_state.opqs = opq; - } - - opq->prev = NULL; - - cpu_state.curr_page = NULL; - if(!(cpu_state.dyn_pages = malloc(sizeof(void *) * (2 << (32 - - immu_state->pagesize_log2))))) { - fprintf(stderr, "OOM\n"); - exit(1); - } - memset(cpu_state.dyn_pages, 0, - sizeof(void *) * (2 << (32 - immu_state->pagesize_log2))); - - /* Register our segmentation fault handler */ - sigact.sa_sigaction = dyn_sigsegv_debug; - memset(&sigact.sa_mask, 0, sizeof(sigact.sa_mask)); - sigact.sa_flags = SA_SIGINFO | SA_NOMASK; - if(sigaction(SIGSEGV, &sigact, NULL)) - printf("WARN: Unable to install SIGSEGV handler! Don't expect to be able to debug the recompiler.\n"); - - /* FIXME: Find a better place for this */ - { /* Needed by execution */ - extern int do_stats; - do_stats = config.cpu.dependstats || config.cpu.superscalar || config.cpu.dependstats - || config.sim.history || config.sim.exe_log; - } - - printf("Recompile engine up and running\n"); -} - -/* Parses instructions and their operands and populates opq with them */ -static void eval_insn_ops(struct op_queue *opq, oraddr_t addr) -{ - int breakp; - struct insn_op_struct *opd; - - for(; opq->next; opq = opq->next, addr += 4) { - opq->param_num = 0; - breakp = 0; - opq->insn = eval_insn(addr, &breakp); - - /* FIXME: If a breakpoint is set at this location, insert exception code */ - if(breakp) { - fprintf(stderr, "FIXME: Insert breakpoint code\n"); - } - - opq->insn_index = insn_decode(opq->insn); - - if(opq->insn_index == -1) - continue; - - opd = op_start[opq->insn_index]; - - do { - opq->param[opq->param_num] = eval_operand_val(opq->insn, opd); - opq->param_type[opq->param_num] = opd->type; - - opq->param_num++; - while(!(opd->type & OPTYPE_OP)) opd++; - } while(!(opd++->type & OPTYPE_LAST)); - } -} - -/* Adds code to the opq for the instruction pointed to by addr */ -static void recompile_insn(struct op_queue *opq, int delay_insn) -{ - int j, k; - int param_t[5]; /* Which temporary the parameters reside in */ - - /* Check if we have an illegal instruction */ - if(opq->insn_index == -1) { - gen_l_invalid(opq, NULL, delay_insn); - return; - } - - /* If we are recompileing an instruction that has a delay slot and is in the - * delay slot, ignore it. This is undefined behavour. */ - if(delay_insn && (or32_opcodes[opq->insn_index].flags & OR32_IF_DELAY)) - return; - - param_t[0] = T_NONE; - param_t[1] = T_NONE; - param_t[2] = T_NONE; - param_t[3] = T_NONE; - param_t[4] = T_NONE; - - /* Jump instructions are special since they have a delay slot and thus they - * need to control the exact operation sequence. Special case these here to - * avoid haveing loads of if(!(.& OR32_IF_DELAY)) below */ - if(or32_opcodes[opq->insn_index].flags & OR32_IF_DELAY) { - /* Jump instructions don't have a disposition */ - or32_opcodes[opq->insn_index].exec(opq, param_t, delay_insn); - - /* Analysis is done by the individual jump instructions */ - /* Jump instructions don't touch runtime.sim.mem_cycles */ - /* Jump instructions run their own scheduler */ - return; - } - - /* Before an exception takes place, all registers must be stored. */ - if((or32_opcodes[opq->insn_index].func_unit == it_exception)) { - ship_gprs_out_t(opq); - - or32_opcodes[opq->insn_index].exec(opq, param_t, delay_insn); - return; - } - - for(j = 0; j < opq->param_num; j++) { - if(!(opq->param_type[j] & OPTYPE_REG)) - continue; - - /* Never, ever, move r0 into a temporary */ - if(!opq->param[j]) - continue; - - k = find_t(opq, opq->param[j]); - - param_t[j] = k; - - if(opq->reg_t[k] == opq->param[j]) { - if(!(opq->param_type[j] & OPTYPE_DST) && - !(opq->tflags[k] & TFLAG_SOURCED)) { - gen_op_move_t_gpr[k][opq->reg_t[k]](opq, 0); - opq->tflags[k] |= TFLAG_SOURCED; - } - - if(opq->param_type[j] & OPTYPE_DST) - opq->tflags[k] |= TFLAG_DST; - else - opq->tflags[k] |= TFLAG_SRC; - - continue; - } - - if(opq->reg_t[k] < 32) { - /* Only ship the temporary out if it has been used as a destination - * register */ - ship_t_out(opq, k); - } - - if(opq->param_type[j] & OPTYPE_DST) - opq->tflags[k] = TFLAG_DST; - else - opq->tflags[k] = TFLAG_SRC; - - opq->reg_t[k] = opq->param[j]; - - /* Only generate code to move the register into a temporary if it is used as - * a source operand */ - if(!(opq->param_type[j] & OPTYPE_DST)) { - gen_op_move_t_gpr[k][opq->reg_t[k]](opq, 0); - opq->tflags[k] |= TFLAG_SOURCED; - } - } - - /* To get the execution log correct for instructions like l.lwz r4,0(r4) the - * effective address needs to be calculated before the instruction is - * simulated */ - if(do_stats) { - for(j = 0; j < opq->param_num; j++) { - if(!(opq->param_type[j] & OPTYPE_DIS)) - continue; - - if(!opq->param[j + 1]) - gen_op_store_insn_ea(opq, 1, opq->param[j]); - else - calc_insn_ea_table[param_t[j + 1]](opq, 1, opq->param[j]); - } - } - - or32_opcodes[opq->insn_index].exec(opq, param_t, delay_insn); - - if(do_stats) { - ship_gprs_out_t(opq); - gen_op_analysis(opq, 1); - } - - /* The call to join_mem_cycles() could be put into the individual operations - * that emulate the load/store instructions, but then it would be added to - * the cycle counter before analysis() is called, which is not how the complex - * execution model does it. */ - if((or32_opcodes[opq->insn_index].func_unit == it_load) || - (or32_opcodes[opq->insn_index].func_unit == it_store)) - gen_op_join_mem_cycles(opq, 1); - - /* Delay slot instructions get a special scheduler, thus don't generate it - * here */ - if(!delay_insn) - gen_op_do_sched(opq, 1); -} - -/* Recompiles the page associated with *dyn */ -void recompile_page(struct dyn_page *dyn) -{ - unsigned int j; - struct op_queue *opq = cpu_state.opqs; - oraddr_t rec_addr = dyn->or_page; - oraddr_t rec_page = dyn->or_page; - void **loc; - - /* The start of the next page */ - rec_page += immu_state->pagesize; - - printf("Recompileing page %"PRIxADDR"\n", rec_addr); - fflush(stdout); - - /* Mark all temporaries as not containing a register */ - for(j = 0; j < NUM_T_REGS; j++) { - opq->reg_t[j] = 32; /* Out-of-range registers */ - opq->tflags[j] = 0; - } - - dyn->delayr = -verify_memoryarea(rec_addr)->ops.delayr; - - opq->num_ops = 0; - opq->num_ops_param = 0; - - eval_insn_ops(opq, rec_addr); - - /* Insert code to check if the first instruction is exeucted in a delay slot*/ - gen_op_check_delay_slot(opq, 1, 0); - recompile_insn(opq, 1); - ship_gprs_out_t(opq); - gen_op_do_sched_delay(opq, 1); - gen_op_clear_delay_insn(opq, 1); - gen_op_do_jump_delay(opq, 1); - gen_op_do_jump(opq, 1); - gen_op_mark_loc(opq, 1); - - for(j = 0; j < NUM_T_REGS; j++) - opq->reg_t[j] = 32; /* Out-of-range registers */ - - for(; rec_addr < rec_page; rec_addr += 4, opq = opq->next) { - if(opq->prev) { - opq->num_ops = 0; - opq->num_ops_param = 0; - } - opq->jump_local = -1; - opq->not_jump_loc = -1; - - opq->insn_addr = rec_addr; - - for(j = 0; j < NUM_T_REGS; j++) - opq->tflags[j] = TFLAG_SOURCED; - - /* Check if this location is cross referenced */ - if(opq->xref) { - /* If the current address is cross-referenced, the temporaries shall be - * in an undefined state, so we must assume that no registers reside in - * them */ - /* Ship out the current set of registers from the temporaries */ - if(opq->prev) { - ship_gprs_out_t(opq->prev); - for(j = 0; j < NUM_T_REGS; j++) { - opq->reg_t[j] = 32; - opq->prev->reg_t[j] = 32; - } - } - } - - recompile_insn(opq, 0); - - /* Store the state of the temporaries */ - memcpy(opq->next->reg_t, opq->reg_t, sizeof(opq->reg_t)); - } - - dyn->dirty = 0; - - /* Ship temporaries out to the corrisponding registers */ - ship_gprs_out_t(opq->prev); - - opq->num_ops = 0; - opq->num_ops_param = 0; - opq->not_jump_loc = -1; - opq->jump_local = -1; - - /* Insert code to jump to the next page */ - gen_op_do_jump(opq, 1); - - /* Generate the code */ - gen_code(cpu_state.opqs, dyn); - - /* Fix up the locations */ - for(loc = dyn->locs; loc < &dyn->locs[immu_state->pagesize / 4]; loc++) - *loc += (unsigned int)dyn->host_page; - - cpu_state.opqs->ops_param[0] += (unsigned int)dyn->host_page; - - /* Search for page-local jumps */ - opq = cpu_state.opqs; - for(j = 0; j < (immu_state->pagesize / 4); opq = opq->next, j++) { - if(opq->jump_local != -1) - opq->ops_param[opq->jump_local] = - (unsigned int)dyn->locs[opq->jump_local_loc >> 2]; - - if(opq->not_jump_loc != -1) - opq->ops_param[opq->not_jump_loc] = (unsigned int)dyn->locs[j + 1]; - - /* Store the state of the temporaries into dyn->ts_bound */ - dyn->ts_bound[j] = 0; - if(opq->reg_t[0] < 32) - dyn->ts_bound[j] = opq->reg_t[0]; - if(opq->reg_t[1] < 32) - dyn->ts_bound[j] |= opq->reg_t[1] << 5; - if(opq->reg_t[2] < 32) - dyn->ts_bound[j] |= opq->reg_t[2] << 10; - - /* Reset for the next page to be recompiled */ - opq->xref = 0; - } - - /* Patch the relocations */ - patch_relocs(cpu_state.opqs, dyn->host_page); - - if(do_stats) { - opq = cpu_state.opqs; - for(j = 0; j < (immu_state->pagesize / 4); j++, opq = opq->next) { - dyn->insns[j] = opq->insn; - dyn->insn_indexs[j] = opq->insn_index; - } - } - - /* FIXME: Fix the issue below in a more elegent way */ - /* Since eval_insn is called to get the instruction, runtime.sim.mem_cycles is - * updated but the recompiler expectes it to start a 0, so reset it */ - runtime.sim.mem_cycles = 0; -} - -/* Recompiles a delay-slot instruction (opq is the opq of the instruction - * haveing the delay-slot) */ -static void recompile_delay_insn(struct op_queue *opq) -{ - struct op_queue delay_opq; - int i; - - /* Setup a fake opq that looks very much like the delay slot instruction */ - memcpy(&delay_opq, opq, sizeof(struct op_queue)); - /* `Fix' a couple of bits */ - for(i = 0; i < NUM_T_REGS; i++) - delay_opq.tflags[i] = TFLAG_SOURCED; - delay_opq.insn_index = opq->next->insn_index; - memcpy(delay_opq.param_type, opq->next->param_type, sizeof(delay_opq.param_type)); - memcpy(delay_opq.param, opq->next->param, sizeof(delay_opq.param)); - delay_opq.param_num = opq->next->param_num; - delay_opq.insn = opq->next->insn; - - delay_opq.xref = 0; - delay_opq.insn_addr = opq->insn_addr + 4; - delay_opq.prev = opq->prev; - delay_opq.next = NULL; - - /* Generate the delay slot instruction */ - recompile_insn(&delay_opq, 1); - - ship_gprs_out_t(&delay_opq); - - opq->num_ops = delay_opq.num_ops; - opq->ops_len = delay_opq.ops_len; - opq->ops = delay_opq.ops; - opq->num_ops_param = delay_opq.num_ops_param; - opq->ops_param_len = delay_opq.ops_param_len; - opq->ops_param = delay_opq.ops_param; - - for(i = 0; i < NUM_T_REGS; i++) - opq->reg_t[i] = 32; -} - -/* Returns non-zero if the jump is into this page, 0 otherwise */ -static int find_jump_loc(oraddr_t j_ea, struct op_queue *opq) -{ - int i; - - /* Mark the jump as non page local if the delay slot instruction is on the - * next page to the jump instruction. This should not be needed */ - if(IADDR_PAGE(j_ea) != IADDR_PAGE(opq->insn_addr)) - /* We can't do anything as the j_ea (as passed to find_jump_loc) is a - * VIRTUAL offset and the next physical page may not be the next VIRTUAL - * page */ - return 0; - - /* The jump is into the page currently undergoing dynamic recompilation */ - - /* If we haven't got to the location of the jump, everything is ok */ - if(j_ea > opq->insn_addr) { - /* Find the corissponding opq and mark it as cross referenced */ - for(i = (j_ea - opq->insn_addr) / 4; i; i--) - opq = opq->next; - opq->xref = 1; - return 1; - } - - /* Insert temporary -> register code before the jump ea and register -> - * temporary at the x-ref address */ - for(i = (opq->insn_addr - j_ea) / 4; i; i--) - opq = opq->prev; - - if(!opq->prev) - /* We're at the begining of a page, no need to do anything */ - return 1; - - /* Found location, insert code */ - - ship_gprs_out_t(opq->prev); - - for(i = 0; i < NUM_T_REGS; i++) { - if(opq->prev->reg_t[i] < 32) - /* FIXME: Ship temporaries in the begining of the opq that needs it */ - gen_op_move_t_gpr[i][opq->prev->reg_t[i]](opq, 0); - } - - opq->xref = 1; - - return 1; -} - -static void gen_j_imm(struct op_queue *opq, oraddr_t off) -{ - int jump_local; - - off <<= 2; - - if(IADDR_PAGE(opq->insn_addr) != IADDR_PAGE(opq->insn_addr + 4)) { - gen_op_set_pc_delay_imm(opq, 1, off); - gen_op_do_sched(opq, 1); - return; - } - - jump_local = find_jump_loc(opq->insn_addr + off, opq); - - gen_op_set_delay_insn(opq, 1); - gen_op_do_sched(opq, 1); - - recompile_delay_insn(opq); - - gen_op_add_pc(opq, 1, (orreg_t)off - 8); - gen_op_clear_delay_insn(opq, 1); - gen_op_do_sched_delay(opq, 1); - - if(jump_local) { - gen_op_jmp_imm(opq, 1, 0); - opq->jump_local = opq->num_ops_param - 1; - opq->jump_local_loc = (opq->insn_addr + (orreg_t)off) & immu_state->page_offset_mask; - } else - gen_op_do_jump(opq, 1); -} - -static const generic_gen_op set_pc_delay_gpr[32] = { - NULL, - gen_op_move_gpr1_pc_delay, - gen_op_move_gpr2_pc_delay, - gen_op_move_gpr3_pc_delay, - gen_op_move_gpr4_pc_delay, - gen_op_move_gpr5_pc_delay, - gen_op_move_gpr6_pc_delay, - gen_op_move_gpr7_pc_delay, - gen_op_move_gpr8_pc_delay, - gen_op_move_gpr9_pc_delay, - gen_op_move_gpr10_pc_delay, - gen_op_move_gpr11_pc_delay, - gen_op_move_gpr12_pc_delay, - gen_op_move_gpr13_pc_delay, - gen_op_move_gpr14_pc_delay, - gen_op_move_gpr15_pc_delay, - gen_op_move_gpr16_pc_delay, - gen_op_move_gpr17_pc_delay, - gen_op_move_gpr18_pc_delay, - gen_op_move_gpr19_pc_delay, - gen_op_move_gpr20_pc_delay, - gen_op_move_gpr21_pc_delay, - gen_op_move_gpr22_pc_delay, - gen_op_move_gpr23_pc_delay, - gen_op_move_gpr24_pc_delay, - gen_op_move_gpr25_pc_delay, - gen_op_move_gpr26_pc_delay, - gen_op_move_gpr27_pc_delay, - gen_op_move_gpr28_pc_delay, - gen_op_move_gpr29_pc_delay, - gen_op_move_gpr30_pc_delay, - gen_op_move_gpr31_pc_delay }; - -static void gen_j_reg(struct op_queue *opq, unsigned int gpr) -{ - int i; - - /* Ship the jump-to register out (if it exists). It requires special - * handleing */ - for(i = 0; i < NUM_T_REGS; i++) { - if(opq->reg_t[i] == opq->param[0]) - /* Ship temporary out in the last opq that used it */ - ship_t_out(opq, i); - } - - if(do_stats) - gen_op_analysis(opq, 1); - - if(!gpr) - gen_op_clear_pc_delay(opq, 1); - else - set_pc_delay_gpr[gpr](opq, 1); - - gen_op_do_sched(opq, 1); - - if(IADDR_PAGE(opq->insn_addr) != IADDR_PAGE(opq->insn_addr + 4)) - return; - - recompile_delay_insn(opq); - - gen_op_set_pc_pc_delay(opq, 1); - gen_op_clear_delay_insn(opq, 1); - gen_op_do_sched_delay(opq, 1); - - gen_op_do_jump_delay(opq, 1); - gen_op_do_jump(opq, 1); -} - -/*------------------------------[ Operation generation for an instruction ]---*/ -/* FIXME: Flag setting is not done in any instruction */ -/* FIXME: Since r0 is not moved into a temporary, check all arguments below! */ - -DEF_1T_OP(generic_gen_op, clear_t, gen_op_clear); -DEF_2T_OP_NEQ(generic_gen_op, move_t_t, gen_op_move); -DEF_1T_OP(imm_gen_op, mov_t_imm, gen_op_imm); - -DEF_2T_OP(imm_gen_op, l_add_imm_t_table, gen_op_add_imm); -DEF_3T_OP(generic_gen_op, l_add_t_table, gen_op_add); - -void gen_l_add(struct op_queue *opq, int param_t[3], int delay_slot) -{ - if(!opq->param[0]) - /* Screw this, the operation shall do nothing */ - return; - - if(!opq->param[1] && !opq->param[2]) { - /* Just clear param_t[0] */ - clear_t[param_t[0]](opq, 1); - return; - } - - if(!opq->param[2]) { - if(opq->param[0] != opq->param[1]) - /* This just moves a register */ - move_t_t[param_t[0]][param_t[1]](opq, 1); - return; - } - - if(!opq->param[1]) { - /* Check if we are moveing an immediate */ - if(param_t[2] == T_NONE) { - /* Yep, an immediate */ - mov_t_imm[param_t[0]](opq, 1, opq->param[2]); - return; - } - /* Just another move */ - if(opq->param[0] != opq->param[2]) - move_t_t[param_t[0]][param_t[2]](opq, 1); - return; - } - - /* Ok, This _IS_ an add... */ - if(param_t[2] == T_NONE) - /* immediate */ - l_add_imm_t_table[param_t[0]][param_t[1]](opq, 1, opq->param[2]); - else - l_add_t_table[param_t[0]][param_t[1]][param_t[2]](opq, 1); -} - -DEF_3T_OP(generic_gen_op, l_addc_t_table, gen_op_addc); - -void gen_l_addc(struct op_queue *opq, int param_t[3], int delay_slot) -{ - if(!opq->param[0]) - /* Screw this, the operation shall do nothing */ - return; - - /* FIXME: More optimisations !! (...and immediate...) */ - l_addc_t_table[param_t[0]][param_t[1]][param_t[2]](opq, 1); -} - -DEF_2T_OP(imm_gen_op, l_and_imm_t_table, gen_op_and_imm); -DEF_3T_OP_NEQ(generic_gen_op, l_and_t_table, gen_op_and); - -void gen_l_and(struct op_queue *opq, int param_t[3], int delay_slot) -{ - if(!opq->param[0]) - /* Screw this, the operation shall do nothing */ - return; - - if(!opq->param[1] || !opq->param[2]) { - /* Just clear param_t[0] */ - clear_t[param_t[0]](opq, 1); - return; - } - - if((opq->param[0] == opq->param[1]) && - (opq->param[0] == opq->param[2]) && - (param_t[2] != T_NONE)) - return; - - if(param_t[2] == T_NONE) - l_and_imm_t_table[param_t[0]][param_t[1]](opq, 1, opq->param[2]); - else - l_and_t_table[param_t[0]][param_t[1]][param_t[2]](opq, 1); -} - -void gen_l_bf(struct op_queue *opq, int param_t[3], int delay_slot) -{ - if(do_stats) - /* All gprs are current since this insn doesn't touch any reg */ - gen_op_analysis(opq, 1); - - /* The temporaries are expected to be shiped out after the execution of the - * branch instruction wether it branched or not */ - ship_gprs_out_t(opq->prev); - - if(IADDR_PAGE(opq->insn_addr) != IADDR_PAGE(opq->insn_addr + 4)) { - gen_op_check_flag_delay(opq, 1, opq->param[0] << 2); - gen_op_do_sched(opq, 1); - opq->not_jump_loc = -1; - return; - } - - gen_op_check_flag(opq, 1, 0); - opq->not_jump_loc = opq->num_ops_param - 1; - - gen_j_imm(opq, opq->param[0]); -} - -void gen_l_bnf(struct op_queue *opq, int param_t[3], int delay_slot) -{ - if(do_stats) - /* All gprs are current since this insn doesn't touch any reg */ - gen_op_analysis(opq, 1); - - /* The temporaries are expected to be shiped out after the execution of the - * branch instruction wether it branched or not */ - ship_gprs_out_t(opq->prev); - - if(IADDR_PAGE(opq->insn_addr) != IADDR_PAGE(opq->insn_addr + 4)) { - gen_op_check_not_flag_delay(opq, 1, opq->param[0] << 2); - gen_op_do_sched(opq, 1); - opq->not_jump_loc = -1; - return; - } - - gen_op_check_not_flag(opq, 1, 0); - opq->not_jump_loc = opq->num_ops_param - 1; - - gen_j_imm(opq, opq->param[0]); -} - -DEF_3T_OP_NEQ(generic_gen_op, l_cmov_t_table, gen_op_cmov); - -/* FIXME: Check if either opperand 1 or 2 is r0 */ -void gen_l_cmov(struct op_queue *opq, int param_t[3], int delay_slot) -{ - if(!opq->param[0]) - return; - - if(!opq->param[1] && !opq->param[2]) { - clear_t[param_t[0]](opq, 1); - return; - } - - if((opq->param[1] == opq->param[2]) && (opq->param[0] == opq->param[1])) - return; - - if(opq->param[1] == opq->param[2]) { - move_t_t[param_t[0]][param_t[1]](opq, 1); - return; - } - - l_cmov_t_table[param_t[0]][param_t[1]][param_t[2]](opq, 1); -} - -void gen_l_cust1(struct op_queue *opq, int param_t[3], int delay_slot) -{ -} - -void gen_l_cust2(struct op_queue *opq, int param_t[3], int delay_slot) -{ -} - -void gen_l_cust3(struct op_queue *opq, int param_t[3], int delay_slot) -{ -} - -void gen_l_cust4(struct op_queue *opq, int param_t[3], int delay_slot) -{ -} - -void gen_l_cust5(struct op_queue *opq, int param_t[3], int delay_slot) -{ -} - -void gen_l_cust6(struct op_queue *opq, int param_t[3], int delay_slot) -{ -} - -void gen_l_cust7(struct op_queue *opq, int param_t[3], int delay_slot) -{ -} - -void gen_l_cust8(struct op_queue *opq, int param_t[3], int delay_slot) -{ -} - -/* FIXME: All registers need to be stored before the div instructions as they - * have the potenticial to cause an exception */ - -DEF_1T_OP(generic_gen_op, check_null_excpt, gen_op_check_null_except); -DEF_1T_OP(generic_gen_op, check_null_excpt_delay, gen_op_check_null_except_delay); -DEF_3T_OP(generic_gen_op, l_div_t_table, gen_op_div); - -void gen_l_div(struct op_queue *opq, int param_t[3], int delay_slot) -{ - if(!opq->param[2]) { - /* There is no option. This _will_ cause an illeagal exception */ - if(!delay_slot) { - gen_op_illegal(opq, 1); - gen_op_do_jump(opq, 1); - } else { - gen_op_illegal(opq, 1); - gen_op_do_jump(opq, 1); - } - return; - } - - if(!delay_slot) - check_null_excpt[param_t[2]](opq, 1); - else - check_null_excpt_delay[param_t[2]](opq, 1); - - if(!opq->param[0]) - return; - - if(!opq->param[1]) { - /* Clear param_t[0] */ - clear_t[param_t[0]](opq, 1); - return; - } - - l_div_t_table[param_t[0]][param_t[1]][param_t[2]](opq, 1); -} - -DEF_3T_OP(generic_gen_op, l_divu_t_table, gen_op_divu); - -void gen_l_divu(struct op_queue *opq, int param_t[3], int delay_slot) -{ - if(!opq->param[2]) { - /* There is no option. This _will_ cause an illeagal exception */ - if(!delay_slot) { - gen_op_illegal(opq, 1); - gen_op_do_jump(opq, 1); - } else { - gen_op_illegal(opq, 1); - gen_op_do_jump(opq, 1); - } - return; - } - - if(!delay_slot) - check_null_excpt[param_t[2]](opq, 1); - else - check_null_excpt_delay[param_t[2]](opq, 1); - - if(!opq->param[0]) - return; - - if(!opq->param[1]) { - /* Clear param_t[0] */ - clear_t[param_t[0]](opq, 1); - return; - } - - l_divu_t_table[param_t[0]][param_t[1]][param_t[2]](opq, 1); -} - -DEF_2T_OP(generic_gen_op, l_extbs_t_table, gen_op_extbs); - -void gen_l_extbs(struct op_queue *opq, int param_t[3], int delay_slot) -{ - if(!opq->param[0]) - return; - - if(!opq->param[1]) { - clear_t[param_t[0]](opq, 1); - return; - } - - l_extbs_t_table[param_t[0]][param_t[1]](opq, 1); -} - -DEF_2T_OP(generic_gen_op, l_extbz_t_table, gen_op_extbz); - -void gen_l_extbz(struct op_queue *opq, int param_t[3], int delay_slot) -{ - if(!opq->param[0]) - return; - - if(!opq->param[1]) { - clear_t[param_t[0]](opq, 1); - return; - } - - l_extbz_t_table[param_t[0]][param_t[1]](opq, 1); -} - -DEF_2T_OP(generic_gen_op, l_exths_t_table, gen_op_exths); - -void gen_l_exths(struct op_queue *opq, int param_t[3], int delay_slot) -{ - if(!opq->param[0]) - return; - - if(!opq->param[1]) { - clear_t[param_t[0]](opq, 1); - return; - } - - l_exths_t_table[param_t[0]][param_t[1]](opq, 1); -} - -DEF_2T_OP(generic_gen_op, l_exthz_t_table, gen_op_exthz); - -void gen_l_exthz(struct op_queue *opq, int param_t[3], int delay_slot) -{ - if(!opq->param[0]) - return; - - if(!opq->param[1]) { - clear_t[param_t[0]](opq, 1); - return; - } - - l_exthz_t_table[param_t[0]][param_t[1]](opq, 1); -} - -void gen_l_extws(struct op_queue *opq, int param_t[3], int delay_slot) -{ - if(!opq->param[0]) - return; - - if(!opq->param[1]) { - clear_t[param_t[0]](opq, 1); - return; - } - - if(opq->param[0] == opq->param[1]) - return; - - /* In the 32-bit architechture this instruction reduces to a move */ - move_t_t[param_t[0]][param_t[1]](opq, 1); -} - -void gen_l_extwz(struct op_queue *opq, int param_t[3], int delay_slot) -{ - if(!opq->param[0]) - return; - - if(!opq->param[1]) { - clear_t[param_t[0]](opq, 1); - return; - } - - if(opq->param[0] == opq->param[1]) - return; - - /* In the 32-bit architechture this instruction reduces to a move */ - move_t_t[param_t[0]][param_t[1]](opq, 1); -} - -DEF_2T_OP(generic_gen_op, l_ff1_t_table, gen_op_ff1); - -void gen_l_ff1(struct op_queue *opq, int param_t[3], int delay_slot) -{ - if(!opq->param[0]) - return; - - if(!opq->param[1]) { - clear_t[param_t[0]](opq, 1); - return; - } - - l_ff1_t_table[param_t[0]][param_t[1]](opq, 1); -} - -void gen_l_j(struct op_queue *opq, int param_t[3], int delay_slot) -{ - if(do_stats) - /* All gprs are current since this insn doesn't touch any reg */ - gen_op_analysis(opq, 1); - - gen_j_imm(opq, opq->param[0]); -} - -void gen_l_jal(struct op_queue *opq, int param_t[3], int delay_slot) -{ - int i; - - /* In the case of a l.jal instruction, make sure that LINK_REGNO is not in - * a temporary. The problem is that the l.jal(r) instruction stores the - * `return address' in LINK_REGNO. The temporaries are shiped out only - * after the delay slot instruction has executed and so it overwrittes the - * `return address'. */ - for(i = 0; i < NUM_T_REGS; i++) { - if(opq->reg_t[i] == LINK_REGNO) { - /* Don't bother storeing the register, it is going to get clobered in this - * instruction anyway */ - opq->reg_t[i] = 32; - break; - } - } - - /* Store the return address */ - gen_op_store_link_addr_gpr(opq, 1); - - if(do_stats) - /* All gprs are current since this insn doesn't touch any reg */ - gen_op_analysis(opq, 1); - - gen_j_imm(opq, opq->param[0]); -} - -void gen_l_jr(struct op_queue *opq, int param_t[3], int delay_slot) -{ - gen_j_reg(opq, opq->param[0]); -} - -void gen_l_jalr(struct op_queue *opq, int param_t[3], int delay_slot) -{ - int i; - - /* In the case of a l.jal instruction, make sure that LINK_REGNO is not in - * a temporary. The problem is that the l.jal(r) instruction stores the - * `return address' in LINK_REGNO. The temporaries are shiped out only - * after the delay slot instruction has executed and so it overwrittes the - * `return address'. */ - for(i = 0; i < NUM_T_REGS; i++) { - if(opq->reg_t[i] == LINK_REGNO) { - /* Don't bother storeing the register, it is going to get clobered in this - * instruction anyway */ - opq->reg_t[i] = 32; - break; - } - } - - /* Store the return address */ - gen_op_store_link_addr_gpr(opq, 1); - - gen_j_reg(opq, opq->param[0]); -} - -/* FIXME: Optimise all load instruction when the disposition == 0 */ - -DEF_1T_OP(imm_gen_op, l_lbs_imm_t_table, gen_op_lbs_imm); -DEF_2T_OP(imm_gen_op, l_lbs_t_table, gen_op_lbs); - -void gen_l_lbs(struct op_queue *opq, int param_t[3], int delay_slot) -{ - if(!opq->param[0]) { - /* FIXME: This will work, but the statistics need to be updated... */ - return; - } - - /* Just in case an exception happens */ - ship_gprs_out_t(opq->prev); - - if(!opq->param[2]) { - /* Load the data from the immediate */ - l_lbs_imm_t_table[param_t[0]](opq, 1, opq->param[1]); - return; - } - - l_lbs_t_table[param_t[0]][param_t[2]](opq, 1, opq->param[1]); -} - -DEF_1T_OP(imm_gen_op, l_lbz_imm_t_table, gen_op_lbz_imm); -DEF_2T_OP(imm_gen_op, l_lbz_t_table, gen_op_lbz); - -void gen_l_lbz(struct op_queue *opq, int param_t[3], int delay_slot) -{ - if(!opq->param[0]) { - /* FIXME: This will work, but the statistics need to be updated... */ - return; - } - - /* Just in case an exception happens */ - ship_gprs_out_t(opq->prev); - - if(!opq->param[2]) { - /* Load the data from the immediate */ - l_lbz_imm_t_table[param_t[0]](opq, 1, opq->param[1]); - return; - } - - l_lbz_t_table[param_t[0]][param_t[2]](opq, 1, opq->param[1]); -} - -DEF_1T_OP(imm_gen_op, l_lhs_imm_t_table, gen_op_lhs_imm); -DEF_2T_OP(imm_gen_op, l_lhs_t_table, gen_op_lhs); - -void gen_l_lhs(struct op_queue *opq, int param_t[3], int delay_slot) -{ - if(!opq->param[0]) { - /* FIXME: This will work, but the statistics need to be updated... */ - return; - } - - /* Just in case an exception happens */ - ship_gprs_out_t(opq->prev); - - if(!opq->param[2]) { - /* Load the data from the immediate */ - l_lhs_imm_t_table[param_t[0]](opq, 1, opq->param[1]); - return; - } - - l_lhs_t_table[param_t[0]][param_t[2]](opq, 1, opq->param[1]); -} - -DEF_1T_OP(imm_gen_op, l_lhz_imm_t_table, gen_op_lhz_imm); -DEF_2T_OP(imm_gen_op, l_lhz_t_table, gen_op_lhz); - -void gen_l_lhz(struct op_queue *opq, int param_t[3], int delay_slot) -{ - if(!opq->param[0]) { - /* FIXME: This will work, but the statistics need to be updated... */ - return; - } - - /* Just in case an exception happens */ - ship_gprs_out_t(opq->prev); - - if(!opq->param[2]) { - /* Load the data from the immediate */ - l_lhz_imm_t_table[param_t[0]](opq, 1, opq->param[1]); - return; - } - - l_lhz_t_table[param_t[0]][param_t[2]](opq, 1, opq->param[1]); -} - -DEF_1T_OP(imm_gen_op, l_lws_imm_t_table, gen_op_lws_imm); -DEF_2T_OP(imm_gen_op, l_lws_t_table, gen_op_lws); - -void gen_l_lws(struct op_queue *opq, int param_t[3], int delay_slot) -{ - if(!opq->param[0]) { - /* FIXME: This will work, but the statistics need to be updated... */ - return; - } - - /* Just in case an exception happens */ - ship_gprs_out_t(opq->prev); - - if(!opq->param[2]) { - /* Load the data from the immediate */ - l_lws_imm_t_table[param_t[0]](opq, 1, opq->param[1]); - return; - } - - l_lws_t_table[param_t[0]][param_t[2]](opq, 1, opq->param[1]); -} - -DEF_1T_OP(imm_gen_op, l_lwz_imm_t_table, gen_op_lwz_imm); -DEF_2T_OP(imm_gen_op, l_lwz_t_table, gen_op_lwz); - -void gen_l_lwz(struct op_queue *opq, int param_t[3], int delay_slot) -{ - if(!opq->param[0]) { - /* FIXME: This will work, but the statistics need to be updated... */ - return; - } - - /* Just in case an exception happens */ - ship_gprs_out_t(opq->prev); - - if(!opq->param[2]) { - /* Load the data from the immediate */ - l_lwz_imm_t_table[param_t[0]](opq, 1, opq->param[1]); - return; - } - - l_lwz_t_table[param_t[0]][param_t[2]](opq, 1, opq->param[1]); -} - -DEF_1T_OP(imm_gen_op, l_mac_imm_t_table, gen_op_mac_imm); -DEF_2T_OP(generic_gen_op, l_mac_t_table, gen_op_mac); - -void gen_l_mac(struct op_queue *opq, int param_t[3], int delay_slot) -{ - if(!opq->param[0] || !opq->param[1]) - return; - - if(param_t[1] == T_NONE) - l_mac_imm_t_table[param_t[0]](opq, 1, opq->param[1]); - else - l_mac_t_table[param_t[0]][param_t[1]](opq, 1); -} - -DEF_1T_OP(generic_gen_op, l_macrc_t_table, gen_op_macrc); - -void gen_l_macrc(struct op_queue *opq, int param_t[3], int delay_slot) -{ - if(!opq->param[0]) { - gen_op_macc(opq, 1); - return; - } - - l_macrc_t_table[param_t[0]](opq, 1); -} - -DEF_1T_OP(imm_gen_op, l_mfspr_imm_t_table, gen_op_mfspr_imm); -DEF_2T_OP(imm_gen_op, l_mfspr_t_table, gen_op_mfspr); - -void gen_l_mfspr(struct op_queue *opq, int param_t[3], int delay_slot) -{ - if(!opq->param[0]) - return; - - if(!opq->param[1]) { - l_mfspr_imm_t_table[param_t[0]](opq, 1, opq->param[2]); - return; - } - - l_mfspr_t_table[param_t[0]][param_t[1]](opq, 1, opq->param[2]); -} - -void gen_l_movhi(struct op_queue *opq, int param_t[3], int delay_slot) -{ - if(!opq->param[0]) - return; - - if(!opq->param[1]) { - clear_t[param_t[0]](opq, 1); - return; - } - - mov_t_imm[param_t[0]](opq, 1, opq->param[1] << 16); -} - -DEF_2T_OP(generic_gen_op, l_msb_t_table, gen_op_msb); - -void gen_l_msb(struct op_queue *opq, int param_t[3], int delay_slot) -{ - if(!opq->param[0] || !opq->param[1]) - return; - - l_msb_t_table[param_t[0]][param_t[1]](opq, 1); -} - -DEF_1T_OP(imm_gen_op, l_mtspr_clear_t_table, gen_op_mtspr_clear); -DEF_1T_OP(imm_gen_op, l_mtspr_imm_t_table, gen_op_mtspr_imm); -DEF_2T_OP(imm_gen_op, l_mtspr_t_table, gen_op_mtspr); - -void gen_l_mtspr(struct op_queue *opq, int param_t[3], int delay_slot) -{ - /* Just in case an exception happens */ - ship_gprs_out_t(opq->prev); - - if(!opq->param[0]) { - if(!opq->param[1]) { - /* Clear the immediate SPR */ - gen_op_mtspr_imm_clear(opq, 1, opq->param[2]); - return; - } - l_mtspr_imm_t_table[param_t[1]](opq, 1, opq->param[2]); - return; - } - - if(!opq->param[1]) { - l_mtspr_clear_t_table[param_t[0]](opq, 1, opq->param[2]); - return; - } - - l_mtspr_t_table[param_t[0]][param_t[1]](opq, 1, opq->param[2]); -} - -DEF_2T_OP(imm_gen_op, l_mul_imm_t_table, gen_op_mul_imm); -DEF_3T_OP(generic_gen_op, l_mul_t_table, gen_op_mul); - -void gen_l_mul(struct op_queue *opq, int param_t[3], int delay_slot) -{ - if(!opq->param[0]) - return; - - if(!opq->param[1] || !opq->param[2]) { - clear_t[param_t[0]](opq, 1); - return; - } - - if(param_t[2] == T_NONE) - l_mul_imm_t_table[param_t[0]][param_t[1]](opq, 1, opq->param[2]); - else - l_mul_t_table[param_t[0]][param_t[1]][param_t[2]](opq, 1); -} - -DEF_3T_OP(generic_gen_op, l_mulu_t_table, gen_op_mulu); - -void gen_l_mulu(struct op_queue *opq, int param_t[3], int delay_slot) -{ - if(!opq->param[0]) - return; - - if(!opq->param[1] || !opq->param[2]) { - clear_t[param_t[0]](opq, 1); - return; - } - - l_mulu_t_table[param_t[0]][param_t[1]][param_t[2]](opq, 1); -} - -void gen_l_nop(struct op_queue *opq, int param_t[3], int delay_slot) -{ - /* Do parameter switch now */ - switch(opq->param[0]) { - case NOP_NOP: - break; - case NOP_EXIT: - ship_gprs_out_t(opq->prev); - gen_op_nop_exit(opq, 1); - break; - case NOP_CNT_RESET: - gen_op_nop_reset(opq, 1); - break; - case NOP_PRINTF: - ship_gprs_out_t(opq->prev); - gen_op_nop_printf(opq, 1); - break; - case NOP_REPORT: - ship_gprs_out_t(opq->prev); - gen_op_nop_report(opq, 1); - break; - default: - if((opq->param[0] >= NOP_REPORT_FIRST) && (opq->param[0] <= NOP_REPORT_LAST)) { - ship_gprs_out_t(opq->prev); - gen_op_nop_report_imm(opq, 1, opq->param[0] - NOP_REPORT_FIRST); - } - break; - } -} - -DEF_2T_OP(imm_gen_op, l_or_imm_t_table, gen_op_or_imm); -DEF_3T_OP_NEQ(generic_gen_op, l_or_t_table, gen_op_or); - -void gen_l_or(struct op_queue *opq, int param_t[3], int delay_slot) -{ - if(!opq->param[0]) - return; - - if((opq->param[0] == opq->param[1]) && - (opq->param[0] == opq->param[2]) && - (param_t[2] != T_NONE)) - return; - - if(!opq->param[1] && !opq->param[2]) { - clear_t[param_t[0]](opq, 1); - return; - } - - if(!opq->param[2]) { - if((param_t[2] == T_NONE) && (opq->param[0] == opq->param[1])) - return; - move_t_t[param_t[0]][param_t[1]](opq, 1); - return; - } - - if(!opq->param[1]) { - /* Check if we are moveing an immediate */ - if(param_t[2] == T_NONE) { - /* Yep, an immediate */ - mov_t_imm[param_t[0]](opq, 1, opq->param[2]); - return; - } - /* Just another move */ - move_t_t[param_t[0]][param_t[2]](opq, 1); - return; - } - - if(param_t[2] == T_NONE) - l_or_imm_t_table[param_t[0]][param_t[1]](opq, 1, opq->param[2]); - else - l_or_t_table[param_t[0]][param_t[1]][param_t[2]](opq, 1); -} - -void gen_l_rfe(struct op_queue *opq, int param_t[3], int delay_slot) -{ - if(do_stats) - /* All gprs are current since this insn doesn't touch any reg */ - gen_op_analysis(opq, 1); - - gen_op_prep_rfe(opq, 1); - /* FIXME: rename op_do_sched_delay */ - gen_op_do_sched_delay(opq, 1); - gen_op_do_jump(opq, 1); -} - -/* FIXME: All store instructions should be optimised when the disposition = 0 */ - -DEF_1T_OP(imm_gen_op, l_sb_clear_table, gen_op_sb_clear); -DEF_1T_OP(imm_gen_op, l_sb_imm_t_table, gen_op_sb_imm); -DEF_2T_OP(imm_gen_op, l_sb_t_table, gen_op_sb); - -void gen_l_sb(struct op_queue *opq, int param_t[3], int delay_slot) -{ - /* Just in case an exception happens */ - ship_gprs_out_t(opq->prev); - - if(!opq->param[2]) { - if(!opq->param[1]) { - gen_op_sb_clear_imm(opq, 1, opq->param[0]); - return; - } - l_sb_clear_table[param_t[1]](opq, 1, opq->param[0]); - return; - } - - if(!opq->param[1]) { - /* Store the data to the immediate */ - l_sb_imm_t_table[param_t[2]](opq, 1, opq->param[0]); - return; - } - - l_sb_t_table[param_t[1]][param_t[2]](opq, 1, opq->param[0]); -} - -DEF_1T_OP(imm_gen_op, l_sh_clear_table, gen_op_sh_clear); -DEF_1T_OP(imm_gen_op, l_sh_imm_t_table, gen_op_sh_imm); -DEF_2T_OP(imm_gen_op, l_sh_t_table, gen_op_sh); - -void gen_l_sh(struct op_queue *opq, int param_t[3], int delay_slot) -{ - /* Just in case an exception happens */ - ship_gprs_out_t(opq->prev); - - if(!opq->param[2]) { - if(!opq->param[1]) { - gen_op_sh_clear_imm(opq, 1, opq->param[0]); - return; - } - l_sh_clear_table[param_t[1]](opq, 1, opq->param[0]); - return; - } - - if(!opq->param[1]) { - /* Store the data to the immediate */ - l_sh_imm_t_table[param_t[2]](opq, 1, opq->param[0]); - return; - } - - l_sh_t_table[param_t[1]][param_t[2]](opq, 1, opq->param[0]); -} - -DEF_1T_OP(imm_gen_op, l_sw_clear_table, gen_op_sw_clear); -DEF_1T_OP(imm_gen_op, l_sw_imm_t_table, gen_op_sw_imm); -DEF_2T_OP(imm_gen_op, l_sw_t_table, gen_op_sw); - -void gen_l_sw(struct op_queue *opq, int param_t[3], int delay_slot) -{ - /* Just in case an exception happens */ - ship_gprs_out_t(opq->prev); - - if(!opq->param[2]) { - if(!opq->param[1]) { - gen_op_sw_clear_imm(opq, 1, opq->param[0]); - return; - } - l_sw_clear_table[param_t[1]](opq, 1, opq->param[0]); - return; - } - - if(!opq->param[1]) { - /* Store the data to the immediate */ - l_sw_imm_t_table[param_t[2]](opq, 1, opq->param[0]); - return; - } - - l_sw_t_table[param_t[1]][param_t[2]](opq, 1, opq->param[0]); -} - -DEF_1T_OP(generic_gen_op, l_sfeq_null_t_table, gen_op_sfeq_null); -DEF_1T_OP(imm_gen_op, l_sfeq_imm_t_table, gen_op_sfeq_imm); -DEF_2T_OP(generic_gen_op, l_sfeq_t_table, gen_op_sfeq); - -void gen_l_sfeq(struct op_queue *opq, int param_t[3], int delay_slot) -{ - if(!opq->param[0] && !opq->param[1]) { - gen_op_set_flag(opq, 1); - return; - } - - if(!opq->param[0]) { - if(param_t[1] == T_NONE) { - if(!opq->param[1]) - gen_op_set_flag(opq, 1); - else - gen_op_clear_flag(opq, 1); - } else - l_sfeq_null_t_table[param_t[1]](opq, 1); - return; - } - - if(!opq->param[1]) { - l_sfeq_null_t_table[param_t[0]](opq, 1); - return; - } - - if(param_t[1] == T_NONE) - l_sfeq_imm_t_table[param_t[0]](opq, 1, opq->param[1]); - else - l_sfeq_t_table[param_t[0]][param_t[1]](opq, 1); -} - -DEF_1T_OP(generic_gen_op, l_sfges_null_t_table, gen_op_sfges_null); -DEF_1T_OP(generic_gen_op, l_sfles_null_t_table, gen_op_sfles_null); -DEF_1T_OP(imm_gen_op, l_sfges_imm_t_table, gen_op_sfges_imm); -DEF_2T_OP(generic_gen_op, l_sfges_t_table, gen_op_sfges); - -void gen_l_sfges(struct op_queue *opq, int param_t[3], int delay_slot) -{ - if(!opq->param[0] && !opq->param[1]) { - gen_op_set_flag(opq, 1); - return; - } - - if(!opq->param[0]) { - /* sfles IS correct */ - if(param_t[1] == T_NONE) { - if(0 >= (orreg_t)opq->param[1]) - gen_op_set_flag(opq, 1); - else - gen_op_clear_flag(opq, 1); - } else - l_sfles_null_t_table[param_t[1]](opq, 1); - return; - } - - if(!opq->param[1]) { - l_sfges_null_t_table[param_t[0]](opq, 1); - return; - } - - if(param_t[1] == T_NONE) - l_sfges_imm_t_table[param_t[0]](opq, 1, opq->param[1]); - else - l_sfges_t_table[param_t[0]][param_t[1]](opq, 1); -} - -DEF_1T_OP(generic_gen_op, l_sfgeu_null_t_table, gen_op_sfgeu_null); -DEF_1T_OP(generic_gen_op, l_sfleu_null_t_table, gen_op_sfleu_null); -DEF_1T_OP(imm_gen_op, l_sfgeu_imm_t_table, gen_op_sfgeu_imm); -DEF_2T_OP(generic_gen_op, l_sfgeu_t_table, gen_op_sfgeu); - -void gen_l_sfgeu(struct op_queue *opq, int param_t[3], int delay_slot) -{ - if(!opq->param[0] && !opq->param[1]) { - gen_op_set_flag(opq, 1); - return; - } - - if(!opq->param[0]) { - /* sfleu IS correct */ - if(param_t[1] == T_NONE) { - if(0 >= opq->param[1]) - gen_op_set_flag(opq, 1); - else - gen_op_clear_flag(opq, 1); - } else - l_sfleu_null_t_table[param_t[1]](opq, 1); - return; - } - - if(!opq->param[1]) { - l_sfgeu_null_t_table[param_t[0]](opq, 1); - return; - } - if(param_t[1] == T_NONE) - l_sfgeu_imm_t_table[param_t[0]](opq, 1, opq->param[1]); - else - l_sfgeu_t_table[param_t[0]][param_t[1]](opq, 1); -} - -DEF_1T_OP(generic_gen_op, l_sfgts_null_t_table, gen_op_sfgts_null); -DEF_1T_OP(generic_gen_op, l_sflts_null_t_table, gen_op_sflts_null); -DEF_1T_OP(imm_gen_op, l_sfgts_imm_t_table, gen_op_sfgts_imm); -DEF_2T_OP(generic_gen_op, l_sfgts_t_table, gen_op_sfgts); - -void gen_l_sfgts(struct op_queue *opq, int param_t[3], int delay_slot) -{ - if(!opq->param[0] && !opq->param[1]) { - gen_op_clear_flag(opq, 1); - return; - } - - if(!opq->param[0]) { - /* sflts IS correct */ - if(param_t[1] == T_NONE) { - if(0 > (orreg_t)opq->param[1]) - gen_op_set_flag(opq, 1); - else - gen_op_clear_flag(opq, 1); - } else - l_sflts_null_t_table[param_t[1]](opq, 1); - return; - } - - if(!opq->param[1]) { - l_sfgts_null_t_table[param_t[0]](opq, 1); - return; - } - - if(param_t[1] == T_NONE) - l_sfgts_imm_t_table[param_t[0]](opq, 1, opq->param[1]); - else - l_sfgts_t_table[param_t[0]][param_t[1]](opq, 1); -} - -DEF_1T_OP(generic_gen_op, l_sfgtu_null_t_table, gen_op_sfgtu_null); -DEF_1T_OP(generic_gen_op, l_sfltu_null_t_table, gen_op_sfltu_null); -DEF_1T_OP(imm_gen_op, l_sfgtu_imm_t_table, gen_op_sfgtu_imm); -DEF_2T_OP(generic_gen_op, l_sfgtu_t_table, gen_op_sfgtu); - -void gen_l_sfgtu(struct op_queue *opq, int param_t[3], int delay_slot) -{ - if(!opq->param[0] && !opq->param[1]) { - gen_op_clear_flag(opq, 1); - return; - } - - if(!opq->param[0]) { - /* sfltu IS correct */ - if(param_t[1] == T_NONE) { - if(0 > opq->param[1]) - gen_op_set_flag(opq, 1); - else - gen_op_clear_flag(opq, 1); - } else - l_sfltu_null_t_table[param_t[1]](opq, 1); - return; - } - - if(!opq->param[1]) { - l_sfgtu_null_t_table[param_t[0]](opq, 1); - return; - } - - if(param_t[1] == T_NONE) - l_sfgtu_imm_t_table[param_t[0]](opq, 1, opq->param[1]); - else - l_sfgtu_t_table[param_t[0]][param_t[1]](opq, 1); -} - -DEF_1T_OP(imm_gen_op, l_sfles_imm_t_table, gen_op_sfles_imm); -DEF_2T_OP(generic_gen_op, l_sfles_t_table, gen_op_sfles); - -void gen_l_sfles(struct op_queue *opq, int param_t[3], int delay_slot) -{ - if(!opq->param[0] && !opq->param[1]) { - gen_op_set_flag(opq, 1); - return; - } - - if(!opq->param[0]) { - /* sfges IS correct */ - if(param_t[1] == T_NONE) { - if(0 <= (orreg_t)opq->param[1]) - gen_op_set_flag(opq, 1); - else - gen_op_clear_flag(opq, 1); - } else - l_sfges_null_t_table[param_t[1]](opq, 1); - return; - } - - if(!opq->param[1]) { - l_sfles_null_t_table[param_t[0]](opq, 1); - return; - } - - if(param_t[1] == T_NONE) - l_sfles_imm_t_table[param_t[0]](opq, 1, opq->param[1]); - else - l_sfles_t_table[param_t[0]][param_t[1]](opq, 1); -} - -DEF_1T_OP(imm_gen_op, l_sfleu_imm_t_table, gen_op_sfleu_imm); -DEF_2T_OP(generic_gen_op, l_sfleu_t_table, gen_op_sfleu); - -void gen_l_sfleu(struct op_queue *opq, int param_t[3], int delay_slot) -{ - if(!opq->param[0] && !opq->param[1]) { - gen_op_set_flag(opq, 1); - return; - } - - if(!opq->param[0]) { - /* sfleu IS correct */ - if(param_t[1] == T_NONE) { - if(0 <= opq->param[1]) - gen_op_set_flag(opq, 1); - else - gen_op_clear_flag(opq, 1); - } else - l_sfgeu_null_t_table[param_t[1]](opq, 1); - return; - } - - if(!opq->param[1]) { - l_sfleu_null_t_table[param_t[0]](opq, 1); - return; - } - - if(param_t[1] == T_NONE) - l_sfleu_imm_t_table[param_t[0]](opq, 1, opq->param[1]); - else - l_sfleu_t_table[param_t[0]][param_t[1]](opq, 1); -} - -DEF_1T_OP(imm_gen_op, l_sflts_imm_t_table, gen_op_sflts_imm); -DEF_2T_OP(generic_gen_op, l_sflts_t_table, gen_op_sflts); - -void gen_l_sflts(struct op_queue *opq, int param_t[3], int delay_slot) -{ - if(!opq->param[0] && !opq->param[1]) { - gen_op_clear_flag(opq, 1); - return; - } - - if(!opq->param[0]) { - /* sfgts IS correct */ - if(param_t[1] == T_NONE) { - if(0 < (orreg_t)opq->param[1]) - gen_op_set_flag(opq, 1); - else - gen_op_clear_flag(opq, 1); - } else - l_sfgts_null_t_table[param_t[1]](opq, 1); - return; - } - - if(!opq->param[1]) { - l_sflts_null_t_table[param_t[0]](opq, 1); - return; - } - - if(param_t[1] == T_NONE) - l_sflts_imm_t_table[param_t[0]](opq, 1, opq->param[1]); - else - l_sflts_t_table[param_t[0]][param_t[1]](opq, 1); -} - -DEF_1T_OP(imm_gen_op, l_sfltu_imm_t_table, gen_op_sfltu_imm); -DEF_2T_OP(generic_gen_op, l_sfltu_t_table, gen_op_sfltu); - -void gen_l_sfltu(struct op_queue *opq, int param_t[3], int delay_slot) -{ - if(!opq->param[0] && !opq->param[1]) { - gen_op_clear_flag(opq, 1); - return; - } - - if(!opq->param[0]) { - /* sfgtu IS correct */ - if(param_t[1] == T_NONE) { - if(0 < opq->param[1]) - gen_op_set_flag(opq, 1); - else - gen_op_clear_flag(opq, 1); - } else - l_sfgtu_null_t_table[param_t[1]](opq, 1); - return; - } - - if(!opq->param[1]) { - l_sfltu_null_t_table[param_t[0]](opq, 1); - return; - } - - if(param_t[1] == T_NONE) - l_sfltu_imm_t_table[param_t[0]](opq, 1, opq->param[1]); - else - l_sfltu_t_table[param_t[0]][param_t[1]](opq, 1); -} - -DEF_1T_OP(generic_gen_op, l_sfne_null_t_table, gen_op_sfne_null); -DEF_1T_OP(imm_gen_op, l_sfne_imm_t_table, gen_op_sfne_imm); -DEF_2T_OP(generic_gen_op, l_sfne_t_table, gen_op_sfne); - -void gen_l_sfne(struct op_queue *opq, int param_t[3], int delay_slot) -{ - if(!opq->param[0] && !opq->param[1]) { - gen_op_set_flag(opq, 1); - return; - } - - if(!opq->param[0]) { - if(param_t[1] == T_NONE) - if(opq->param[1]) - gen_op_set_flag(opq, 1); - else - gen_op_clear_flag(opq, 1); - else - l_sfne_null_t_table[param_t[1]](opq, 1); - return; - } - - if(!opq->param[1]) { - l_sfne_null_t_table[param_t[0]](opq, 1); - return; - } - - if(param_t[1] == T_NONE) - l_sfne_imm_t_table[param_t[0]](opq, 1, opq->param[1]); - else - l_sfne_t_table[param_t[0]][param_t[1]](opq, 1); -} - -DEF_2T_OP(imm_gen_op, l_sll_imm_t_table, gen_op_sll_imm); -DEF_3T_OP(generic_gen_op, l_sll_t_table, gen_op_sll); - -void gen_l_sll(struct op_queue *opq, int param_t[3], int delay_slot) -{ - if(!opq->param[0]) - return; - - if(!opq->param[1]) { - clear_t[param_t[0]](opq, 1); - return; - } - - if(!opq->param[2]) { - move_t_t[param_t[0]][param_t[1]](opq, 1); - return; - } - - if(param_t[2] == T_NONE) - l_sll_imm_t_table[param_t[0]][param_t[1]](opq, 1, opq->param[2]); - else - l_sll_t_table[param_t[0]][param_t[1]][param_t[2]](opq, 1); -} - -DEF_2T_OP(imm_gen_op, l_sra_imm_t_table, gen_op_sra_imm); -DEF_3T_OP(generic_gen_op, l_sra_t_table, gen_op_sra); - -void gen_l_sra(struct op_queue *opq, int param_t[3], int delay_slot) -{ - if(!opq->param[0]) - return; - - if(!opq->param[1]) { - clear_t[param_t[0]](opq, 1); - return; - } - - if(!opq->param[2]) { - move_t_t[param_t[0]][param_t[1]](opq, 1); - return; - } - - if(param_t[2] == T_NONE) - l_sra_imm_t_table[param_t[0]][param_t[1]](opq, 1, opq->param[2]); - else - l_sra_t_table[param_t[0]][param_t[1]][param_t[2]](opq, 1); -} - -DEF_2T_OP(imm_gen_op, l_srl_imm_t_table, gen_op_srl_imm); -DEF_3T_OP(generic_gen_op, l_srl_t_table, gen_op_srl); - -void gen_l_srl(struct op_queue *opq, int param_t[3], int delay_slot) -{ - if(!opq->param[0]) - return; - - if(!opq->param[1]) { - clear_t[param_t[0]](opq, 1); - return; - } - - if(!opq->param[2]) { - move_t_t[param_t[0]][param_t[1]](opq, 1); - return; - } - - if(param_t[2] == T_NONE) - l_srl_imm_t_table[param_t[0]][param_t[1]](opq, 1, opq->param[2]); - else - l_srl_t_table[param_t[0]][param_t[1]][param_t[2]](opq, 1); -} - -DEF_2T_OP(generic_gen_op, l_neg_t_table, gen_op_neg); -DEF_3T_OP(generic_gen_op, l_sub_t_table, gen_op_sub); - -void gen_l_sub(struct op_queue *opq, int param_t[3], int delay_slot) -{ - if(!opq->param[0]) - return; - - if((param_t[2] != T_NONE) && (opq->param[1] == opq->param[2])) { - clear_t[param_t[0]](opq, 1); - return; - } - - if(!opq->param[1] && !opq->param[2]) { - clear_t[param_t[0]](opq, 1); - return; - } - - if(!opq->param[1]) { - if(param_t[2] == T_NONE) - mov_t_imm[param_t[0]](opq, 1, -opq->param[2]); - else - l_neg_t_table[param_t[0]][param_t[2]](opq, 1); - return; - } - - if(!opq->param[2]) { - move_t_t[param_t[0]][param_t[1]](opq, 1); - return; - } - - l_sub_t_table[param_t[0]][param_t[1]][param_t[2]](opq, 1); -} - -/* FIXME: This will not work if the l.sys is in a delay slot */ -void gen_l_sys(struct op_queue *opq, int param_t[3], int delay_slot) -{ - if(do_stats) - /* All gprs are current since this insn doesn't touch any reg */ - gen_op_analysis(opq, 1); - - if(!delay_slot) - gen_op_prep_sys(opq, 1); - else - gen_op_prep_sys_delay(opq, 1); - - gen_op_do_sched(opq, 1); - gen_op_do_jump(opq, 1); -} - -/* FIXME: This will not work if the l.trap is in a delay slot */ -void gen_l_trap(struct op_queue *opq, int param_t[3], int delay_slot) -{ - if(do_stats) - /* All gprs are current since this insn doesn't touch any reg */ - gen_op_analysis(opq, 1); - - if(!delay_slot) - gen_op_prep_trap(opq, 1); - else - gen_op_prep_trap_delay(opq, 1); -} - -DEF_2T_OP(imm_gen_op, l_xor_imm_t_table, gen_op_xor_imm); -/* FIXME: Make unused elements NULL */ -DEF_3T_OP_NEQ(generic_gen_op, l_xor_t_table, gen_op_xor); - -void gen_l_xor(struct op_queue *opq, int param_t[3], int delay_slot) -{ - if(!opq->param[0]) - return; - - if((param_t[2] != T_NONE) && (opq->param[1] == opq->param[2])) { - clear_t[param_t[0]](opq, 1); - return; - } - - if(!opq->param[2]) { - if((param_t[2] == T_NONE) && (opq->param[0] == opq->param[1])) - return; - move_t_t[param_t[0]][param_t[1]](opq, 1); - return; - } - - if(!opq->param[1]) { - if(param_t[2] == T_NONE) { - mov_t_imm[param_t[0]](opq, 1, opq->param[2]); - return; - } - move_t_t[param_t[0]][param_t[2]](opq, 1); - return; - } - - if(param_t[2] == T_NONE) - l_xor_imm_t_table[param_t[0]][param_t[1]](opq, 1, opq->param[2]); - else - l_xor_t_table[param_t[0]][param_t[1]][param_t[2]](opq, 1); -} - -void gen_l_invalid(struct op_queue *opq, int param_t[3], int delay_slot) -{ - if(!delay_slot) { - gen_op_illegal(opq, 1); - gen_op_do_jump(opq, 1); - } else { - gen_op_illegal_delay(opq, 1); - gen_op_do_jump(opq, 1); - } -} - -/*----------------------------------[ Floating point instructions (stubs) ]---*/ -void gen_lf_add_s(struct op_queue *opq, int param_t[3], int delay_slot) -{ - gen_l_invalid(opq, param_t, delay_slot); -} - -void gen_lf_div_s(struct op_queue *opq, int param_t[3], int delay_slot) -{ - gen_l_invalid(opq, param_t, delay_slot); -} - -void gen_lf_ftoi_s(struct op_queue *opq, int param_t[3], int delay_slot) -{ - gen_l_invalid(opq, param_t, delay_slot); -} - -void gen_lf_itof_s(struct op_queue *opq, int param_t[3], int delay_slot) -{ - gen_l_invalid(opq, param_t, delay_slot); -} - -void gen_lf_madd_s(struct op_queue *opq, int param_t[3], int delay_slot) -{ - gen_l_invalid(opq, param_t, delay_slot); -} - -void gen_lf_mul_s(struct op_queue *opq, int param_t[3], int delay_slot) -{ - gen_l_invalid(opq, param_t, delay_slot); -} - -void gen_lf_rem_s(struct op_queue *opq, int param_t[3], int delay_slot) -{ - gen_l_invalid(opq, param_t, delay_slot); -} - -void gen_lf_sfeq_s(struct op_queue *opq, int param_t[3], int delay_slot) -{ - gen_l_invalid(opq, param_t, delay_slot); -} - -void gen_lf_sfge_s(struct op_queue *opq, int param_t[3], int delay_slot) -{ - gen_l_invalid(opq, param_t, delay_slot); -} - -void gen_lf_sfgt_s(struct op_queue *opq, int param_t[3], int delay_slot) -{ - gen_l_invalid(opq, param_t, delay_slot); -} - -void gen_lf_sfle_s(struct op_queue *opq, int param_t[3], int delay_slot) -{ - gen_l_invalid(opq, param_t, delay_slot); -} - -void gen_lf_sflt_s(struct op_queue *opq, int param_t[3], int delay_slot) -{ - gen_l_invalid(opq, param_t, delay_slot); -} - -void gen_lf_sfne_s(struct op_queue *opq, int param_t[3], int delay_slot) -{ - gen_l_invalid(opq, param_t, delay_slot); -} - -void gen_lf_sub_s(struct op_queue *opq, int param_t[3], int delay_slot) -{ - gen_l_invalid(opq, param_t, delay_slot); -} -
cpu/or32/dyn-rec.c Property changes : Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:keywords ## -1 +0,0 ## -Id \ No newline at end of property Index: cpu/or32/op-mftspr-op.h =================================================================== --- cpu/or32/op-mftspr-op.h (revision 538) +++ cpu/or32/op-mftspr-op.h (nonexistent) @@ -1,78 +0,0 @@ -/* op-mftspr-op.h -- Micro operations template for the m{f,t}spr operations - - Copyright (C) 2005 György `nog' Jeney, nog@sdf.lonestar.org - Copyright (C) 2008 Embecosm Limited - - Contributor Jeremy Bennett - - This file is part of Or1ksim, the OpenRISC 1000 Architectural Simulator. - - This program is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - more details. - - You should have received a copy of the GNU General Public License along - with this program. If not, see . */ - -/* This program is commented throughout in a fashion suitable for processing - with Doxygen. */ - - -#ifdef OP_2T -__or_dynop void glue (op_mfspr, T) (void) -{ - /* FIXME: NPC/PPC Handling is br0ke */ - if (env->sprs[SPR_SR] & SPR_SR_SM) - T0 = mfspr (T1 + OP_PARAM1); -} -#endif - -#ifdef OP_1T -__or_dynop void glue (op_mfspr_imm, T) (void) -{ - /* FIXME: NPC/PPC Handling is br0ke */ - if (env->sprs[SPR_SR] & SPR_SR_SM) - T0 = mfspr (OP_PARAM1); -} -#endif - -#ifdef OP_2T -__or_dynop void glue (op_mtspr, T) (void) -{ - /* FIXME: NPC handling DOES NOT WORK like this */ - if (env->sprs[SPR_SR] & SPR_SR_SM) - mtspr (T0 + OP_PARAM1, T1); -} -#endif - -#ifdef OP_1T -__or_dynop void glue (op_mtspr_clear, T) (void) -{ - /* FIXME: NPC handling DOES NOT WORK like this */ - if (env->sprs[SPR_SR] & SPR_SR_SM) - mtspr (T0 + OP_PARAM1, 0); -} - -__or_dynop void glue (op_mtspr_imm, T) (void) -{ - /* FIXME: NPC handling DOES NOT WORK like this */ - if (env->sprs[SPR_SR] & SPR_SR_SM) - mtspr (OP_PARAM1, T0); -} -#endif - -#if !defined(OP_1T) && !defined(OP_2T) -__or_dynop void -op_mtspr_imm_clear (void) -{ - /* FIXME: NPC handling DOES NOT WORK like this */ - if (env->sprs[SPR_SR] & SPR_SR_SM) - mtspr (OP_PARAM1, 0); -} -#endif
cpu/or32/op-mftspr-op.h Property changes : Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:keywords ## -1 +0,0 ## -Id \ No newline at end of property Index: cpu/or32/dyn-rec.h =================================================================== --- cpu/or32/dyn-rec.h (revision 538) +++ cpu/or32/dyn-rec.h (nonexistent) @@ -1,70 +0,0 @@ -/* dyn-rec.h -- Recompiler specific definitions - - Copyright (C) 2005 György `nog' Jeney, nog@sdf.lonestar.org - Copyright (C) 2008 Embecosm Limited - - Contributor Jeremy Bennett - - This file is part of OpenRISC 1000 Architectural Simulator. - - This program is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - more details. - - You should have received a copy of the GNU General Public License along - with this program. If not, see . */ - -/* This program is commented throughout in a fashion suitable for processing - with Doxygen. */ - - -#ifndef DYN_REC__H -#define DYN_REC__H - -typedef void (*gen_code_ent)(void); - -/* Each dynamically recompiled page has one of these */ -struct dyn_page { - oraddr_t or_page; - void *host_page; - unsigned int host_len; - int dirty; /* Is recompiled page invalid? */ - int delayr; /* delayr of memory backing this page */ - uint16_t ts_bound[2049]; /* What registers the temporaries back (on the - * begining boundry of the instruction) */ - void **locs; /* Openrisc locations in the recompiled code */ - uint32_t *insns; /* Copy of instructions on this page */ - unsigned int *insn_indexs; /* Decoded instructions on this page */ -}; - -/* Function prototypes for external use */ -extern void recompile_page(struct dyn_page *dyn); -extern struct dyn_page *new_dp(oraddr_t page); -extern void add_to_opq(struct op_queue *opq, int end, int op); -extern void add_to_op_params(struct op_queue *opq, int end, unsigned long param); -extern void *enough_host_page(struct dyn_page *dp, void *cur, unsigned int *len, - unsigned int amount); -extern void init_dyn_recomp(void); -extern void run_sched_out_of_line(void); -extern void recheck_immu(int got_en_dis); -extern void enter_dyn_code(oraddr_t addr, struct dyn_page *dp); -extern void dyn_checkwrite(oraddr_t addr); -extern void dyn_main(void); - -/* Global variables for external use */ -extern void *rec_stack_base; - -#define IMMU_GOT_ENABLED 1 -#define IMMU_GOT_DISABLED 2 - -#define xglue(x, y) x ## y -#define glue(x, y) xglue(x, y) - -#endif /* DYN_REC__H */ -
cpu/or32/dyn-rec.h Property changes : Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:keywords ## -1 +0,0 ## -Id \ No newline at end of property Index: cpu/or32/op-ff1-op.h =================================================================== --- cpu/or32/op-ff1-op.h (revision 538) +++ cpu/or32/op-ff1-op.h (nonexistent) @@ -1,35 +0,0 @@ -/* op-ff1-op.h -- Micro operations template for the ff1 instruction - Copyright (C) 2005 György `nog' Jeney, nog@sdf.lonestar.org - -This file is part of OpenRISC 1000 Architectural Simulator. - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ - - -__or_dynop void glue(glue(glue(op_ff1_, DST_T), _), SRC_T)(void) -{ - int i; - - for(i = 0; i < 32; i++, SRC_T >>= 1) { - if(SRC_T & 1) { - DST_T = i; - break; - } - } - - FORCE_RET; -} - -
cpu/or32/op-ff1-op.h Property changes : Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:keywords ## -1 +0,0 ## -Id \ No newline at end of property Index: cpu/or32/i386-regs.h =================================================================== --- cpu/or32/i386-regs.h (revision 538) +++ cpu/or32/i386-regs.h (nonexistent) @@ -1,26 +0,0 @@ -/* i386_regs.h -- Register definitions for i386 - Copyright (C) 2005 György `nog' Jeney, nog@sdf.lonestar.org - -This file is part of OpenRISC 1000 Architectural Simulator. - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ - - -#define CPU_STATE_REG "ebp" -#define T0_REG "ebx" -#define T1_REG "esi" -#define T2_REG "edi" - -#define NUM_T_REGS 3
cpu/or32/i386-regs.h Property changes : Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:keywords ## -1 +0,0 ## -Id \ No newline at end of property Index: cpu/or32/op-3t.h =================================================================== --- cpu/or32/op-3t.h (revision 538) +++ cpu/or32/op-3t.h (nonexistent) @@ -1,135 +0,0 @@ -/* op-3t.h -- Instantiation of operatations that work on only 3 temporary - Copyright (C) 2005 György `nog' Jeney, nog@sdf.lonestar.org - -This file is part of OpenRISC 1000 Architectural Simulator. - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ - - -#define OP_3T -#define T glue(glue(glue(glue(glue(_, T0), _), T1), _), T2) - -#if NUM_T_REGS == 3 -# define T0 t0 -# define T1 t0 -# define T2 t0 -# include OP_FILE -# undef T2 -# define T2 t1 -# include OP_FILE -# undef T2 -# define T2 t2 -# include OP_FILE -# undef T2 -# undef T1 -# define T1 t1 -# define T2 t0 -# include OP_FILE -# undef T2 -# define T2 t1 -# include OP_FILE -# undef T2 -# define T2 t2 -# include OP_FILE -# undef T2 -# undef T1 -# define T1 t2 -# define T2 t0 -# include OP_FILE -# undef T2 -# define T2 t1 -# include OP_FILE -# undef T2 -# define T2 t2 -# include OP_FILE -# undef T2 -# undef T1 -# undef T0 -# define T0 t1 -# define T1 t0 -# define T2 t0 -# include OP_FILE -# undef T2 -# define T2 t1 -# include OP_FILE -# undef T2 -# define T2 t2 -# include OP_FILE -# undef T2 -# undef T1 -# define T1 t1 -# define T2 t0 -# include OP_FILE -# undef T2 -# define T2 t1 -# include OP_FILE -# undef T2 -# define T2 t2 -# include OP_FILE -# undef T2 -# undef T1 -# define T1 t2 -# define T2 t0 -# include OP_FILE -# undef T2 -# define T2 t1 -# include OP_FILE -# undef T2 -# define T2 t2 -# include OP_FILE -# undef T2 -# undef T1 -# undef T0 -# define T0 t2 -# define T1 t0 -# define T2 t0 -# include OP_FILE -# undef T2 -# define T2 t1 -# include OP_FILE -# undef T2 -# define T2 t2 -# include OP_FILE -# undef T2 -# undef T1 -# define T1 t1 -# define T2 t0 -# include OP_FILE -# undef T2 -# define T2 t1 -# include OP_FILE -# undef T2 -# define T2 t2 -# include OP_FILE -# undef T2 -# undef T1 -# define T1 t2 -# define T2 t0 -# include OP_FILE -# undef T2 -# define T2 t1 -# include OP_FILE -# undef T2 -# define T2 t2 -# include OP_FILE -# undef T2 -# undef T1 -# undef T0 -#else -#error Update op_3t.h for NUM_T_REGS temporaries -#endif - -#undef T -#undef OP_3T
cpu/or32/op-3t.h Property changes : Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:keywords ## -1 +0,0 ## -Id \ No newline at end of property Index: cpu/or32/op-2t.h =================================================================== --- cpu/or32/op-2t.h (revision 538) +++ cpu/or32/op-2t.h (nonexistent) @@ -1,62 +0,0 @@ -/* op-2t.h -- Instantiation of operatations that work on only 2 temporary - Copyright (C) 2005 György `nog' Jeney, nog@sdf.lonestar.org - -This file is part of OpenRISC 1000 Architectural Simulator. - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ - -#define OP_2T -#define T glue(glue(glue(_, T0), _), T1) - -#if NUM_T_REGS == 3 -# define T0 t0 -# define T1 t0 -# include OP_FILE -# undef T1 -# define T1 t1 -# include OP_FILE -# undef T1 -# define T1 t2 -# include OP_FILE -# undef T1 -# undef T0 -# define T0 t1 -# define T1 t0 -# include OP_FILE -# undef T1 -# define T1 t1 -# include OP_FILE -# undef T1 -# define T1 t2 -# include OP_FILE -# undef T1 -# undef T0 -# define T0 t2 -# define T1 t0 -# include OP_FILE -# undef T1 -# define T1 t1 -# include OP_FILE -# undef T1 -# define T1 t2 -# include OP_FILE -# undef T1 -# undef T0 -#else -#error Update op_2t.h for NUM_T_REGS temporaries -#endif - -#undef T -#undef OP_2T
cpu/or32/op-2t.h Property changes : Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:keywords ## -1 +0,0 ## -Id \ No newline at end of property Index: cpu/or32/op-1t.h =================================================================== --- cpu/or32/op-1t.h (revision 538) +++ cpu/or32/op-1t.h (nonexistent) @@ -1,38 +0,0 @@ -/* op-1t.h -- Instantiation of operatations that work on only 1 temporary - Copyright (C) 2005 György `nog' Jeney, nog@sdf.lonestar.org - -This file is part of OpenRISC 1000 Architectural Simulator. - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ - -#define OP_1T -#define T glue(_, T0) - -#if NUM_T_REGS == 3 -#define T0 t0 -#include OP_FILE -#undef T0 -#define T0 t1 -#include OP_FILE -#undef T0 -#define T0 t2 -#include OP_FILE -#undef T0 -#else -#error Update op_1t.h for NUM_T_REGS temporaries -#endif - -#undef T -#undef OP_1T
cpu/or32/op-1t.h Property changes : Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:keywords ## -1 +0,0 ## -Id \ No newline at end of property Index: cpu/or32/op-comp-op.h =================================================================== --- cpu/or32/op-comp-op.h (revision 538) +++ cpu/or32/op-comp-op.h (nonexistent) @@ -1,50 +0,0 @@ -/* op-comp-op.h -- Micro operations template for comparison operations - Copyright (C) 2005 György `nog' Jeney, nog@sdf.lonestar.org - -This file is part of OpenRISC 1000 Architectural Simulator. - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ - -#ifdef OP_2T -__or_dynop void glue(glue(op_, COMP_NAME), T)(void) -{ - if(COMP_CAST(T0) COMP COMP_CAST(T1)) - env->sprs[SPR_SR] |= SPR_SR_F; - else - env->sprs[SPR_SR] &= ~SPR_SR_F; - FORCE_RET; -} -#endif - -#ifdef OP_1T -__or_dynop void glue(glue(glue(op_, COMP_NAME), _imm), T)(void) -{ - if(COMP_CAST(T0) COMP COMP_CAST(OP_PARAM1)) - env->sprs[SPR_SR] |= SPR_SR_F; - else - env->sprs[SPR_SR] &= ~SPR_SR_F; - FORCE_RET; -} - -__or_dynop void glue(glue(glue(op_, COMP_NAME), _null), T)(void) -{ - if(COMP_CAST(T0) COMP 0) - env->sprs[SPR_SR] |= SPR_SR_F; - else - env->sprs[SPR_SR] &= ~SPR_SR_F; - FORCE_RET; -} -#endif -
cpu/or32/op-comp-op.h Property changes : Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:keywords ## -1 +0,0 ## -Id \ No newline at end of property Index: cpu/or32/def-op-t.h =================================================================== --- cpu/or32/def-op-t.h (revision 538) +++ cpu/or32/def-op-t.h (nonexistent) @@ -1,138 +0,0 @@ -/* def_op_t.h -- Operation-generation strucutre definitions helpers - Copyright (C) 2005 György `nog' Jeney, nog@sdf.lonestar.org - -This file is part of OpenRISC 1000 Architectural Simulator. - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ - -#define GPR_T(op_name, temp) \ - { NULL, \ - glue(glue(op_name, 1), temp), \ - glue(glue(op_name, 2), temp), \ - glue(glue(op_name, 3), temp), \ - glue(glue(op_name, 4), temp), \ - glue(glue(op_name, 5), temp), \ - glue(glue(op_name, 6), temp), \ - glue(glue(op_name, 7), temp), \ - glue(glue(op_name, 8), temp), \ - glue(glue(op_name, 9), temp), \ - glue(glue(op_name, 10), temp), \ - glue(glue(op_name, 11), temp), \ - glue(glue(op_name, 12), temp), \ - glue(glue(op_name, 13), temp), \ - glue(glue(op_name, 14), temp), \ - glue(glue(op_name, 15), temp), \ - glue(glue(op_name, 16), temp), \ - glue(glue(op_name, 17), temp), \ - glue(glue(op_name, 18), temp), \ - glue(glue(op_name, 19), temp), \ - glue(glue(op_name, 20), temp), \ - glue(glue(op_name, 21), temp), \ - glue(glue(op_name, 22), temp), \ - glue(glue(op_name, 23), temp), \ - glue(glue(op_name, 24), temp), \ - glue(glue(op_name, 25), temp), \ - glue(glue(op_name, 26), temp), \ - glue(glue(op_name, 27), temp), \ - glue(glue(op_name, 28), temp), \ - glue(glue(op_name, 29), temp), \ - glue(glue(op_name, 30), temp), \ - glue(glue(op_name, 31), temp) } - -#if NUM_T_REGS == 3 - -#define OP_ROW(op_name) \ - { glue(op_name, _t0), glue(op_name, _t1), glue(op_name, _t2) } - -#define OP_ROW_NEQ0(op_name) \ - { NULL, glue(op_name, _t1), glue(op_name, _t2) } - -#define OP_ROW_NEQ1(op_name) \ - { glue(op_name, _t0), NULL, glue(op_name, _t2) } - -#define OP_ROW_NEQ2(op_name) \ - { glue(op_name, _t0), glue(op_name, _t1), NULL } - -#define OP_ROW_COL(op_name) { \ - OP_ROW(glue(op_name, _t0)), \ - OP_ROW(glue(op_name, _t1)), \ - OP_ROW(glue(op_name, _t2)), } - -/* In 3D space: row, column, ??? */ -#define OP_ROW_COL_3D(op_name) { \ - OP_ROW_COL(glue(op_name, _t0)), \ - OP_ROW_COL(glue(op_name, _t1)), \ - OP_ROW_COL(glue(op_name, _t2)) } - -#define OP_ROW_COL_NEQ(op_name) { \ - OP_ROW_NEQ0(glue(op_name, _t0)), \ - OP_ROW_NEQ1(glue(op_name, _t1)), \ - OP_ROW_NEQ2(glue(op_name, _t2)) } - -#define OP_ROW_COL_NEQ0(op_name) { \ - OP_ROW_NEQ0(glue(op_name, _t0)), \ - OP_ROW(glue(op_name, _t1)), \ - OP_ROW(glue(op_name, _t2)) } - -#define OP_ROW_COL_NEQ1(op_name) { \ - OP_ROW(glue(op_name, _t0)), \ - OP_ROW_NEQ1(glue(op_name, _t1)), \ - OP_ROW(glue(op_name, _t2)) } - -#define OP_ROW_COL_NEQ2(op_name) { \ - OP_ROW(glue(op_name, _t0)), \ - OP_ROW(glue(op_name, _t1)), \ - OP_ROW_NEQ2(glue(op_name, _t2)) } - -#define OP_ROW_COL_3D_NEQ(op_name) { \ - OP_ROW_COL_NEQ0(glue(op_name, _t0)), \ - OP_ROW_COL_NEQ1(glue(op_name, _t1)), \ - OP_ROW_COL_NEQ2(glue(op_name, _t2)) } - -#define GPR_ROW_COL(op_name) { \ - GPR_T(op_name, _t0), \ - GPR_T(op_name, _t1), \ - GPR_T(op_name, _t2) } - -#else -#error Update def_op_t.h for NUM_T_REGS temporaries -#endif - -#define DEF_1T_OP(type, name, op_name) \ - static const type name[NUM_T_REGS] = \ - OP_ROW(op_name) - -#define DEF_2T_OP(type, name, op_name) \ - static const type name[NUM_T_REGS][NUM_T_REGS] = \ - OP_ROW_COL(op_name) - -#define DEF_3T_OP(type, name, op_name) \ - static const type name[NUM_T_REGS][NUM_T_REGS][NUM_T_REGS] = \ - OP_ROW_COL_3D(op_name) - -/* Same as above but put NULL in places where T0 == T1 */ -#define DEF_2T_OP_NEQ(type, name, op_name) \ - static const type name[NUM_T_REGS][NUM_T_REGS] = \ - OP_ROW_COL_NEQ(op_name) - -/* Same as above but put NULL in places where T0 == T1 == T2 */ -#define DEF_3T_OP_NEQ(type, name, op_name) \ - static const type name[NUM_T_REGS][NUM_T_REGS][NUM_T_REGS] = \ - OP_ROW_COL_3D_NEQ(op_name) - -#define DEF_GPR_OP(type, name, op_name) \ - static const generic_gen_op name[NUM_T_REGS][32] = \ - GPR_ROW_COL(op_name) -
cpu/or32/def-op-t.h Property changes : Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:keywords ## -1 +0,0 ## -Id \ No newline at end of property Index: cpu/or32/op-lwhb-op.h =================================================================== --- cpu/or32/op-lwhb-op.h (revision 538) +++ cpu/or32/op-lwhb-op.h (nonexistent) @@ -1,38 +0,0 @@ -/* op-lwhb-op.h -- Micro operations template for load operations - Copyright (C) 2005 György `nog' Jeney, nog@sdf.lonestar.org - -This file is part of OpenRISC 1000 Architectural Simulator. - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ - - -/* FIXME: Do something if a breakpoint is hit */ - -#ifdef OP_2T -__or_dynop void glue(glue(op_, LS_OP_NAME), T)(void) -{ - int breakpoint; - T0 = LS_OP_CAST LS_OP_FUNC(T1 + OP_PARAM1, &breakpoint); -} -#endif - -#ifdef OP_1T -__or_dynop void glue(glue(glue(op_, LS_OP_NAME), _imm), T)(void) -{ - int breakpoint; - T0 = LS_OP_CAST LS_OP_FUNC(OP_PARAM1, &breakpoint); -} -#endif -
cpu/or32/op-lwhb-op.h Property changes : Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:keywords ## -1 +0,0 ## -Id \ No newline at end of property Index: cpu/or32/op-swhb-op.h =================================================================== --- cpu/or32/op-swhb-op.h (revision 538) +++ cpu/or32/op-swhb-op.h (nonexistent) @@ -1,57 +0,0 @@ -/* op-swhb-op.h -- Micro operations template for store operations - - Copyright (C) 2005 György `nog' Jeney, nog@sdf.lonestar.org - Copyright (C) 2008 Embecosm Limited - - Contributor Jeremy Bennett - - This file is part of Or1ksim, the OpenRISC 1000 Architectural Simulator. - - This program is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - more details. - - You should have received a copy of the GNU General Public License along - with this program. If not, see . */ - -/* This program is commented throughout in a fashion suitable for processing - with Doxygen. */ - -/* FIXME: Do something with breakpoint */ - - -#ifdef OP_2T -__or_dynop void glue (glue (op_, S_OP_NAME), T) (void) -{ - int breakpoint; - S_FUNC (T0 + OP_PARAM1, T1, &breakpoint); -} -#endif - -#ifdef OP_1T -__or_dynop void glue (glue (glue (op_, S_OP_NAME), _imm), T) (void) -{ - int breakpoint; - S_FUNC (OP_PARAM1, T0, &breakpoint); -} - -__or_dynop void glue (glue (glue (op_, S_OP_NAME), _clear), T) (void) -{ - int breakpoint; - S_FUNC (T0 + OP_PARAM1, 0, &breakpoint); -} -#endif - -#if !defined(OP_1T) && !defined(OP_2T) -__or_dynop void glue (glue (op_, S_OP_NAME), _clear_imm) (void) -{ - int breakpoint; - S_FUNC (OP_PARAM1, 0, &breakpoint); -} -#endif
cpu/or32/op-swhb-op.h Property changes : Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:keywords ## -1 +0,0 ## -Id \ No newline at end of property Index: cpu/or32/op-t-reg-mov-op.h =================================================================== --- cpu/or32/op-t-reg-mov-op.h (revision 538) +++ cpu/or32/op-t-reg-mov-op.h (nonexistent) @@ -1,330 +0,0 @@ -/* op-t-reg-mov-op.h -- Micro operations template for reg<->temporary operations - Copyright (C) 2005 György `nog' Jeney, nog@sdf.lonestar.org - -This file is part of OpenRISC 1000 Architectural Simulator. - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ - - -__or_dynop void glue(op_gtt_gpr1, T)(void) -{ - T0 = env->reg[1]; -} - -__or_dynop void glue(op_gtt_gpr2, T)(void) -{ - T0 = env->reg[2]; -} - -__or_dynop void glue(op_gtt_gpr3, T)(void) -{ - T0 = env->reg[3]; -} - -__or_dynop void glue(op_gtt_gpr4, T)(void) -{ - T0 = env->reg[4]; -} - -__or_dynop void glue(op_gtt_gpr5, T)(void) -{ - T0 = env->reg[5]; -} - -__or_dynop void glue(op_gtt_gpr6, T)(void) -{ - T0 = env->reg[6]; -} - -__or_dynop void glue(op_gtt_gpr7, T)(void) -{ - T0 = env->reg[7]; -} - -__or_dynop void glue(op_gtt_gpr8, T)(void) -{ - T0 = env->reg[8]; -} - -__or_dynop void glue(op_gtt_gpr9, T)(void) -{ - T0 = env->reg[9]; -} - -__or_dynop void glue(op_gtt_gpr10, T)(void) -{ - T0 = env->reg[10]; -} - -__or_dynop void glue(op_gtt_gpr11, T)(void) -{ - T0 = env->reg[11]; -} - -__or_dynop void glue(op_gtt_gpr12, T)(void) -{ - T0 = env->reg[12]; -} - -__or_dynop void glue(op_gtt_gpr13, T)(void) -{ - T0 = env->reg[13]; -} - -__or_dynop void glue(op_gtt_gpr14, T)(void) -{ - T0 = env->reg[14]; -} - -__or_dynop void glue(op_gtt_gpr15, T)(void) -{ - T0 = env->reg[15]; -} - -__or_dynop void glue(op_gtt_gpr16, T)(void) -{ - T0 = env->reg[16]; -} - -__or_dynop void glue(op_gtt_gpr17, T)(void) -{ - T0 = env->reg[17]; -} - -__or_dynop void glue(op_gtt_gpr18, T)(void) -{ - T0 = env->reg[18]; -} - -__or_dynop void glue(op_gtt_gpr19, T)(void) -{ - T0 = env->reg[19]; -} - -__or_dynop void glue(op_gtt_gpr20, T)(void) -{ - T0 = env->reg[20]; -} - -__or_dynop void glue(op_gtt_gpr21, T)(void) -{ - T0 = env->reg[21]; -} - -__or_dynop void glue(op_gtt_gpr22, T)(void) -{ - T0 = env->reg[22]; -} - -__or_dynop void glue(op_gtt_gpr23, T)(void) -{ - T0 = env->reg[23]; -} - -__or_dynop void glue(op_gtt_gpr24, T)(void) -{ - T0 = env->reg[24]; -} - -__or_dynop void glue(op_gtt_gpr25, T)(void) -{ - T0 = env->reg[25]; -} - -__or_dynop void glue(op_gtt_gpr26, T)(void) -{ - T0 = env->reg[26]; -} - -__or_dynop void glue(op_gtt_gpr27, T)(void) -{ - T0 = env->reg[27]; -} - -__or_dynop void glue(op_gtt_gpr28, T)(void) -{ - T0 = env->reg[28]; -} - -__or_dynop void glue(op_gtt_gpr29, T)(void) -{ - T0 = env->reg[29]; -} - -__or_dynop void glue(op_gtt_gpr30, T)(void) -{ - T0 = env->reg[30]; -} - -__or_dynop void glue(op_gtt_gpr31, T)(void) -{ - T0 = env->reg[31]; -} - -__or_dynop void glue(op_ttg_gpr1, T)(void) -{ - env->reg[1] = T0; -} - -__or_dynop void glue(op_ttg_gpr2, T)(void) -{ - env->reg[2] = T0; -} - -__or_dynop void glue(op_ttg_gpr3, T)(void) -{ - env->reg[3] = T0; -} - -__or_dynop void glue(op_ttg_gpr4, T)(void) -{ - env->reg[4] = T0; -} - -__or_dynop void glue(op_ttg_gpr5, T)(void) -{ - env->reg[5] = T0; -} - -__or_dynop void glue(op_ttg_gpr6, T)(void) -{ - env->reg[6] = T0; -} - -__or_dynop void glue(op_ttg_gpr7, T)(void) -{ - env->reg[7] = T0; -} - -__or_dynop void glue(op_ttg_gpr8, T)(void) -{ - env->reg[8] = T0; -} - -__or_dynop void glue(op_ttg_gpr9, T)(void) -{ - env->reg[9] = T0; -} - -__or_dynop void glue(op_ttg_gpr10, T)(void) -{ - env->reg[10] = T0; -} - -__or_dynop void glue(op_ttg_gpr11, T)(void) -{ - env->reg[11] = T0; -} - -__or_dynop void glue(op_ttg_gpr12, T)(void) -{ - env->reg[12] = T0; -} - -__or_dynop void glue(op_ttg_gpr13, T)(void) -{ - env->reg[13] = T0; -} - -__or_dynop void glue(op_ttg_gpr14, T)(void) -{ - env->reg[14] = T0; -} - -__or_dynop void glue(op_ttg_gpr15, T)(void) -{ - env->reg[15] = T0; -} - -__or_dynop void glue(op_ttg_gpr16, T)(void) -{ - env->reg[16] = T0; -} - -__or_dynop void glue(op_ttg_gpr17, T)(void) -{ - env->reg[17] = T0; -} - -__or_dynop void glue(op_ttg_gpr18, T)(void) -{ - env->reg[18] = T0; -} - -__or_dynop void glue(op_ttg_gpr19, T)(void) -{ - env->reg[19] = T0; -} - -__or_dynop void glue(op_ttg_gpr20, T)(void) -{ - env->reg[20] = T0; -} - -__or_dynop void glue(op_ttg_gpr21, T)(void) -{ - env->reg[21] = T0; -} - -__or_dynop void glue(op_ttg_gpr22, T)(void) -{ - env->reg[22] = T0; -} - -__or_dynop void glue(op_ttg_gpr23, T)(void) -{ - env->reg[23] = T0; -} - -__or_dynop void glue(op_ttg_gpr24, T)(void) -{ - env->reg[24] = T0; -} - -__or_dynop void glue(op_ttg_gpr25, T)(void) -{ - env->reg[25] = T0; -} - -__or_dynop void glue(op_ttg_gpr26, T)(void) -{ - env->reg[26] = T0; -} - -__or_dynop void glue(op_ttg_gpr27, T)(void) -{ - env->reg[27] = T0; -} - -__or_dynop void glue(op_ttg_gpr28, T)(void) -{ - env->reg[28] = T0; -} - -__or_dynop void glue(op_ttg_gpr29, T)(void) -{ - env->reg[29] = T0; -} - -__or_dynop void glue(op_ttg_gpr30, T)(void) -{ - env->reg[30] = T0; -} - -__or_dynop void glue(op_ttg_gpr31, T)(void) -{ - env->reg[31] = T0; -} -
cpu/or32/op-t-reg-mov-op.h Property changes : Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:keywords ## -1 +0,0 ## -Id \ No newline at end of property Index: cpu/or32/op-support.h =================================================================== --- cpu/or32/op-support.h (revision 538) +++ cpu/or32/op-support.h (nonexistent) @@ -1,28 +0,0 @@ -/* op-support.h -- Definitions of support routines for operations - Copyright (C) 2005 György `nog' Jeney, nog@sdf.lonestar.org - -This file is part of OpenRISC 1000 Architectural Simulator. - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ - -void op_support_nop_exit(void); -void op_support_nop_reset(void); -void op_support_nop_printf(void); -void op_support_nop_report(void); -void op_support_nop_report_imm(int imm); -void op_support_analysis(void); -void do_jump(oraddr_t addr); - -void upd_reg_from_t(oraddr_t pc, int bound);
cpu/or32/op-support.h Property changes : Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:keywords ## -1 +0,0 ## -Id \ No newline at end of property Index: cpu/or32/op-support.c =================================================================== --- cpu/or32/op-support.c (revision 538) +++ cpu/or32/op-support.c (nonexistent) @@ -1,114 +0,0 @@ -/* op-support.c -- Support routines for micro operations - Copyright (C) 2005 György `nog' Jeney, nog@sdf.lonestar.org - -This file is part of OpenRISC 1000 Architectural Simulator. - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ - - -#include - -#include "config.h" - -#ifdef HAVE_INTTYPES_H -#include -#endif - -#include "port.h" -#include "arch.h" -#include "opcode/or32.h" -#include "sim-config.h" -#include "spr-defs.h" -#include "except.h" -#include "immu.h" -#include "abstract.h" -#include "execute.h" -#include "sched.h" -#include "i386-regs.h" -#include "dyn-rec.h" -#include "op-support.h" -#include "simprintf.h" - - -/* Stuff that is really a `micro' operation but is rather big (or for some other - * reason like calling exit()) */ - -void op_support_nop_exit(void) -{ - PRINTF("exit(%"PRIdREG")\n", cpu_state.reg[3]); - fprintf(stderr, "@reset : cycles %lld, insn #%lld\n", - runtime.sim.reset_cycles, runtime.cpu.reset_instructions); - fprintf(stderr, "@exit : cycles %lld, insn #%lld\n", runtime.sim.cycles, - runtime.cpu.instructions); - fprintf(stderr, " diff : cycles %lld, insn #%lld\n", - runtime.sim.cycles - runtime.sim.reset_cycles, - runtime.cpu.instructions - runtime.cpu.reset_instructions); - /* FIXME: Implement emulation of a stalled cpu - if (config.debug.gdb_enabled) - set_stall_state (1); - else { - handle_sim_command(); - sim_done(); - } - */ - exit(0); -} - -void op_support_nop_reset(void) -{ - PRINTF("****************** counters reset ******************\n"); - PRINTF("cycles %lld, insn #%lld\n", runtime.sim.cycles, runtime.cpu.instructions); - PRINTF("****************** counters reset ******************\n"); - runtime.sim.reset_cycles = runtime.sim.cycles; - runtime.cpu.reset_instructions = runtime.cpu.instructions; -} - -void op_support_nop_printf(void) -{ - simprintf(cpu_state.reg[4], cpu_state.reg[3]); -} - -void op_support_nop_report(void) -{ - PRINTF("report(0x%"PRIxREG");\n", cpu_state.reg[3]); -} - -void op_support_nop_report_imm(int imm) -{ - PRINTF("report %i (0x%"PRIxREG");\n", imm, cpu_state.reg[3]); -} - -/* Handles a jump */ -/* addr is a VIRTUAL address */ -/* NOTE: We can't use env since this code is compiled like the rest of the - * simulator (most likely without -fomit-frame-pointer) and thus env will point - * to some bogus value. */ -void do_jump(oraddr_t addr) -{ - cpu_state.pc = addr; - longjmp(cpu_state.excpt_loc, 0); -} - -/* Wrapper around analysis() that contains all the recompiler specific stuff */ -void op_support_analysis(void) -{ - oraddr_t off = (cpu_state.pc & immu_state->page_offset_mask) >> 2; - runtime.cpu.instructions++; - cpu_state.iqueue.insn_index = cpu_state.curr_page->insn_indexs[off]; - cpu_state.iqueue.insn = cpu_state.curr_page->insns[off]; - cpu_state.iqueue.insn_addr = cpu_state.pc; - analysis(&cpu_state.iqueue); -} -
cpu/or32/op-support.c Property changes : Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:keywords ## -1 +0,0 ## -Id \ No newline at end of property Index: cpu/or32/dyn32-defs.h =================================================================== --- cpu/or32/dyn32-defs.h (revision 538) +++ cpu/or32/dyn32-defs.h (nonexistent) @@ -1,139 +0,0 @@ -/* dyn32-defs.h -- Definitions for the dynamic execution model - - Copyright (C) 2005 György `nog' Jeney, nog@sdf.lonestar.org - Copyright (C) 2008 Embecosm Limited - - Contributor Jeremy Bennett - - This file is part of OpenRISC 1000 Architectural Simulator. - - This program is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - more details. - - You should have received a copy of the GNU General Public License along - with this program. If not, see . */ - -/* This program is commented throughout in a fashion suitable for processing - with Doxygen. */ - - -#ifndef DYN32_DEFS__H -#define DYN32_DEFS__H - - -/* Package includes */ -#include "arch.h" - - -struct op_queue { - unsigned int num_ops; - unsigned int ops_len; - unsigned int *ops; - unsigned int num_ops_param; - unsigned int ops_param_len; - unsigned int *ops_param; - unsigned int jump_local; /* Parameter index that holds the location of the jump */ - oraddr_t jump_local_loc; /* Location to jump to (relative to start of page */ - unsigned int not_jump_loc; /* Location to jump if not jumping (l.bf/l.bnf) */ - int xref; /* Is this location cross referenced? */ - oraddr_t insn_addr; /* Physical address of the instruction */ - unsigned int reg_t[3]; /* Which registers are in the temporaries (after the instruction)? */ - unsigned int tflags[3]; - - int insn_index; - unsigned int param_type[5]; /* opd->type */ - orreg_t param[5]; /* Value of operand */ - unsigned int param_num; /* Number of operands */ - uint32_t insn; /* Instruction word */ - - struct op_queue *prev; - struct op_queue *next; -}; - -void gen_l_add PARAMS((struct op_queue *, int *, int)); -void gen_l_addc PARAMS((struct op_queue *, int *, int)); -void gen_l_and PARAMS((struct op_queue *, int *, int)); -void gen_l_bf PARAMS((struct op_queue *, int *, int)); -void gen_l_bnf PARAMS((struct op_queue *, int *, int)); -void gen_l_cmov PARAMS((struct op_queue *, int *, int)); -void gen_l_cust1 PARAMS((struct op_queue *, int *, int)); -void gen_l_cust2 PARAMS((struct op_queue *, int *, int)); -void gen_l_cust3 PARAMS((struct op_queue *, int *, int)); -void gen_l_cust4 PARAMS((struct op_queue *, int *, int)); -void gen_l_div PARAMS((struct op_queue *, int *, int)); -void gen_l_divu PARAMS((struct op_queue *, int *, int)); -void gen_l_extbs PARAMS((struct op_queue *, int *, int)); -void gen_l_extbz PARAMS((struct op_queue *, int *, int)); -void gen_l_exths PARAMS((struct op_queue *, int *, int)); -void gen_l_exthz PARAMS((struct op_queue *, int *, int)); -void gen_l_extws PARAMS((struct op_queue *, int *, int)); -void gen_l_extwz PARAMS((struct op_queue *, int *, int)); -void gen_l_ff1 PARAMS((struct op_queue *, int *, int)); -void gen_l_j PARAMS((struct op_queue *, int *, int)); -void gen_l_jal PARAMS((struct op_queue *, int *, int)); -void gen_l_jr PARAMS((struct op_queue *, int *, int)); -void gen_l_jalr PARAMS((struct op_queue *, int *, int)); -void gen_l_lbs PARAMS((struct op_queue *, int *, int)); -void gen_l_lbz PARAMS((struct op_queue *, int *, int)); -void gen_l_lhs PARAMS((struct op_queue *, int *, int)); -void gen_l_lhz PARAMS((struct op_queue *, int *, int)); -void gen_l_lws PARAMS((struct op_queue *, int *, int)); -void gen_l_lwz PARAMS((struct op_queue *, int *, int)); -void gen_l_mac PARAMS((struct op_queue *, int *, int)); -void gen_l_macrc PARAMS((struct op_queue *, int *, int)); -void gen_l_mfspr PARAMS((struct op_queue *, int *, int)); -void gen_l_movhi PARAMS((struct op_queue *, int *, int)); -void gen_l_msb PARAMS((struct op_queue *, int *, int)); -void gen_l_mtspr PARAMS((struct op_queue *, int *, int)); -void gen_l_mul PARAMS((struct op_queue *, int *, int)); -void gen_l_mulu PARAMS((struct op_queue *, int *, int)); -void gen_l_nop PARAMS((struct op_queue *, int *, int)); -void gen_l_or PARAMS((struct op_queue *, int *, int)); -void gen_l_rfe PARAMS((struct op_queue *, int *, int)); -void gen_l_sb PARAMS((struct op_queue *, int *, int)); -void gen_l_sh PARAMS((struct op_queue *, int *, int)); -void gen_l_sw PARAMS((struct op_queue *, int *, int)); -void gen_l_sfeq PARAMS((struct op_queue *, int *, int)); -void gen_l_sfges PARAMS((struct op_queue *, int *, int)); -void gen_l_sfgeu PARAMS((struct op_queue *, int *, int)); -void gen_l_sfgts PARAMS((struct op_queue *, int *, int)); -void gen_l_sfgtu PARAMS((struct op_queue *, int *, int)); -void gen_l_sfles PARAMS((struct op_queue *, int *, int)); -void gen_l_sfleu PARAMS((struct op_queue *, int *, int)); -void gen_l_sflts PARAMS((struct op_queue *, int *, int)); -void gen_l_sfltu PARAMS((struct op_queue *, int *, int)); -void gen_l_sfne PARAMS((struct op_queue *, int *, int)); -void gen_l_sll PARAMS((struct op_queue *, int *, int)); -void gen_l_sra PARAMS((struct op_queue *, int *, int)); -void gen_l_srl PARAMS((struct op_queue *, int *, int)); -void gen_l_sub PARAMS((struct op_queue *, int *, int)); -void gen_l_sys PARAMS((struct op_queue *, int *, int)); -void gen_l_trap PARAMS((struct op_queue *, int *, int)); -void gen_l_xor PARAMS((struct op_queue *, int *, int)); -void gen_l_invalid PARAMS((struct op_queue *, int *, int)); - -void gen_lf_add_s PARAMS((struct op_queue *, int *, int)); -void gen_lf_div_s PARAMS((struct op_queue *, int *, int)); -void gen_lf_ftoi_s PARAMS((struct op_queue *, int *, int)); -void gen_lf_itof_s PARAMS((struct op_queue *, int *, int)); -void gen_lf_madd_s PARAMS((struct op_queue *, int *, int)); -void gen_lf_mul_s PARAMS((struct op_queue *, int *, int)); -void gen_lf_rem_s PARAMS((struct op_queue *, int *, int)); -void gen_lf_sfeq_s PARAMS((struct op_queue *, int *, int)); -void gen_lf_sfge_s PARAMS((struct op_queue *, int *, int)); -void gen_lf_sfgt_s PARAMS((struct op_queue *, int *, int)); -void gen_lf_sfle_s PARAMS((struct op_queue *, int *, int)); -void gen_lf_sflt_s PARAMS((struct op_queue *, int *, int)); -void gen_lf_sfne_s PARAMS((struct op_queue *, int *, int)); -void gen_lf_sub_s PARAMS((struct op_queue *, int *, int)); -void l_none(struct op_queue *opq, int *param_t, int delay_slot); - -#endif /* DYN32_DEFS__H */ -
cpu/or32/dyn32-defs.h Property changes : Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:keywords ## -1 +0,0 ## -Id \ No newline at end of property Index: cpu/or32/op-arith-op.h =================================================================== --- cpu/or32/op-arith-op.h (revision 538) +++ cpu/or32/op-arith-op.h (nonexistent) @@ -1,33 +0,0 @@ -/* op-arith-op.h -- Micro operations template for arithmetic operations - Copyright (C) 2005 György `nog' Jeney, nog@sdf.lonestar.org - -This file is part of OpenRISC 1000 Architectural Simulator. - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ - -#ifdef OP_3T -__or_dynop void glue(glue(op_, OP_NAME), T)(void) -{ - T0 = OP_CAST(T1) OP OP_CAST(T2) OP_EXTRA; -} -#endif - -#ifdef OP_2T -__or_dynop void glue(glue(glue(op_, OP_NAME), _imm), T)(void) -{ - T0 = OP_CAST(T1) OP OP_CAST(OP_PARAM1) OP_EXTRA; -} -#endif -
cpu/or32/op-arith-op.h Property changes : Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:keywords ## -1 +0,0 ## -Id \ No newline at end of property Index: cpu/or32/rec-i386.h =================================================================== --- cpu/or32/rec-i386.h (revision 538) +++ cpu/or32/rec-i386.h (nonexistent) @@ -1,28 +0,0 @@ -/* rec-i386.h -- i386 specific parts of the recompile engine - Copyright (C) 2005 György `nog' Jeney, nog@sdf.lonestar.org - -This file is part of OpenRISC 1000 Architectural Simulator. - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ - - -/* Gets the current stack pointer */ -static void *get_sp(void) -{ - void *stack; - asm("movl %%esp, %0" : "=rm" (stack)); - return stack; -} -
cpu/or32/rec-i386.h Property changes : Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:keywords ## -1 +0,0 ## -Id \ No newline at end of property Index: cpu/or32/Makefile.in =================================================================== --- cpu/or32/Makefile.in (revision 538) +++ cpu/or32/Makefile.in (revision 552) @@ -58,8 +58,6 @@ build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ -@DYNAMIC_EXECUTION_FALSE@@GENERATE_NEEDED_TRUE@noinst_PROGRAMS = generate$(EXEEXT) -@DYNAMIC_EXECUTION_TRUE@noinst_PROGRAMS = dyngen$(EXEEXT) subdir = cpu/or32 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 @@ -75,49 +73,15 @@ CONFIG_CLEAN_VPATH_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) libarch_la_LIBADD = -am__libarch_la_SOURCES_DIST = execute.c or32.c common-i386.h \ - dyn32-defs.h dyngen.h dyn-rec.h i386-regs.h op-arith-op.h \ - op-comp-op.h op-extend-op.h op-ff1-op.h op-i386.h op-lwhb-op.h \ - op-mac-op.h op-mftspr-op.h op-support.h op-swhb-op.h \ - op-t-reg-mov-op.h rec-i386.h sched-i386.h simpl32-defs.h op.c \ - dyn-rec.c op-support.c -@DYNAMIC_EXECUTION_FALSE@@GENERATE_NEEDED_FALSE@am_libarch_la_OBJECTS = \ -@DYNAMIC_EXECUTION_FALSE@@GENERATE_NEEDED_FALSE@ execute.lo \ -@DYNAMIC_EXECUTION_FALSE@@GENERATE_NEEDED_FALSE@ or32.lo -@DYNAMIC_EXECUTION_FALSE@@GENERATE_NEEDED_TRUE@am_libarch_la_OBJECTS = \ -@DYNAMIC_EXECUTION_FALSE@@GENERATE_NEEDED_TRUE@ execute.lo \ -@DYNAMIC_EXECUTION_FALSE@@GENERATE_NEEDED_TRUE@ or32.lo -@DYNAMIC_EXECUTION_TRUE@am_libarch_la_OBJECTS = execute.lo or32.lo \ -@DYNAMIC_EXECUTION_TRUE@ op.lo dyn-rec.lo op-support.lo -@DYNAMIC_EXECUTION_TRUE@nodist_libarch_la_OBJECTS = gen-ops.lo \ -@DYNAMIC_EXECUTION_TRUE@ gen-ops-gen.lo gen-ops-rel.lo +am__libarch_la_SOURCES_DIST = execute.c or32.c simpl32-defs.h +@GENERATE_NEEDED_FALSE@am_libarch_la_OBJECTS = execute.lo or32.lo +@GENERATE_NEEDED_TRUE@am_libarch_la_OBJECTS = execute.lo or32.lo am__dist_EXTRA_libarch_la_SOURCES_DIST = insnset.c -libarch_la_OBJECTS = $(am_libarch_la_OBJECTS) \ - $(nodist_libarch_la_OBJECTS) -@DYNAMIC_EXECUTION_FALSE@am_libarch_la_rpath = -@DYNAMIC_EXECUTION_TRUE@am_libarch_la_rpath = +libarch_la_OBJECTS = $(am_libarch_la_OBJECTS) PROGRAMS = $(noinst_PROGRAMS) -am__dyngen_SOURCES_DIST = dyngen.c dyngen-i386.c dyngen-elf.c \ - common-i386.h dyn32-defs.h dyngen.h dyn-rec.h i386-regs.h \ - op-arith-op.h op-comp-op.h op-extend-op.h op-ff1-op.h \ - op-i386.h op-lwhb-op.h op-mac-op.h op-mftspr-op.h op-support.h \ - op-swhb-op.h op-t-reg-mov-op.h rec-i386.h sched-i386.h \ - simpl32-defs.h -@DYNAMIC_EXECUTION_TRUE@am_dyngen_OBJECTS = dyngen-dyngen.$(OBJEXT) \ -@DYNAMIC_EXECUTION_TRUE@ dyngen-dyngen-i386.$(OBJEXT) \ -@DYNAMIC_EXECUTION_TRUE@ dyngen-dyngen-elf.$(OBJEXT) -dyngen_OBJECTS = $(am_dyngen_OBJECTS) -dyngen_LDADD = $(LDADD) -dyngen_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CCLD) $(dyngen_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ -am__generate_SOURCES_DIST = or32.c generate.c common-i386.h \ - dyn32-defs.h dyngen.h dyn-rec.h i386-regs.h op-arith-op.h \ - op-comp-op.h op-extend-op.h op-ff1-op.h op-i386.h op-lwhb-op.h \ - op-mac-op.h op-mftspr-op.h op-support.h op-swhb-op.h \ - op-t-reg-mov-op.h rec-i386.h sched-i386.h simpl32-defs.h -@DYNAMIC_EXECUTION_FALSE@@GENERATE_NEEDED_TRUE@am_generate_OBJECTS = generate-or32.$(OBJEXT) \ -@DYNAMIC_EXECUTION_FALSE@@GENERATE_NEEDED_TRUE@ generate-generate.$(OBJEXT) +am__generate_SOURCES_DIST = or32.c generate.c simpl32-defs.h +@GENERATE_NEEDED_TRUE@am_generate_OBJECTS = generate-or32.$(OBJEXT) \ +@GENERATE_NEEDED_TRUE@ generate-generate.$(OBJEXT) generate_OBJECTS = $(am_generate_OBJECTS) generate_LDADD = $(LDADD) generate_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ @@ -136,12 +100,11 @@ LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ -SOURCES = $(libarch_la_SOURCES) $(nodist_libarch_la_SOURCES) \ - $(dist_EXTRA_libarch_la_SOURCES) $(dyngen_SOURCES) \ +SOURCES = $(libarch_la_SOURCES) $(dist_EXTRA_libarch_la_SOURCES) \ $(generate_SOURCES) DIST_SOURCES = $(am__libarch_la_SOURCES_DIST) \ $(am__dist_EXTRA_libarch_la_SOURCES_DIST) \ - $(am__dyngen_SOURCES_DIST) $(am__generate_SOURCES_DIST) + $(am__generate_SOURCES_DIST) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -277,147 +240,29 @@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ -@DYNAMIC_EXECUTION_FALSE@noinst_LTLIBRARIES = libarch.la -@DYNAMIC_EXECUTION_TRUE@noinst_LTLIBRARIES = libarch.la -@DYNAMIC_EXECUTION_FALSE@@GENERATE_NEEDED_FALSE@libarch_la_SOURCES = execute.c \ -@DYNAMIC_EXECUTION_FALSE@@GENERATE_NEEDED_FALSE@ or32.c \ -@DYNAMIC_EXECUTION_FALSE@@GENERATE_NEEDED_FALSE@ common-i386.h \ -@DYNAMIC_EXECUTION_FALSE@@GENERATE_NEEDED_FALSE@ dyn32-defs.h \ -@DYNAMIC_EXECUTION_FALSE@@GENERATE_NEEDED_FALSE@ dyngen.h \ -@DYNAMIC_EXECUTION_FALSE@@GENERATE_NEEDED_FALSE@ dyn-rec.h \ -@DYNAMIC_EXECUTION_FALSE@@GENERATE_NEEDED_FALSE@ i386-regs.h \ -@DYNAMIC_EXECUTION_FALSE@@GENERATE_NEEDED_FALSE@ op-arith-op.h \ -@DYNAMIC_EXECUTION_FALSE@@GENERATE_NEEDED_FALSE@ op-comp-op.h \ -@DYNAMIC_EXECUTION_FALSE@@GENERATE_NEEDED_FALSE@ op-extend-op.h \ -@DYNAMIC_EXECUTION_FALSE@@GENERATE_NEEDED_FALSE@ op-ff1-op.h \ -@DYNAMIC_EXECUTION_FALSE@@GENERATE_NEEDED_FALSE@ op-i386.h \ -@DYNAMIC_EXECUTION_FALSE@@GENERATE_NEEDED_FALSE@ op-lwhb-op.h \ -@DYNAMIC_EXECUTION_FALSE@@GENERATE_NEEDED_FALSE@ op-mac-op.h \ -@DYNAMIC_EXECUTION_FALSE@@GENERATE_NEEDED_FALSE@ op-mftspr-op.h \ -@DYNAMIC_EXECUTION_FALSE@@GENERATE_NEEDED_FALSE@ op-support.h \ -@DYNAMIC_EXECUTION_FALSE@@GENERATE_NEEDED_FALSE@ op-swhb-op.h \ -@DYNAMIC_EXECUTION_FALSE@@GENERATE_NEEDED_FALSE@ op-t-reg-mov-op.h \ -@DYNAMIC_EXECUTION_FALSE@@GENERATE_NEEDED_FALSE@ rec-i386.h \ -@DYNAMIC_EXECUTION_FALSE@@GENERATE_NEEDED_FALSE@ sched-i386.h \ -@DYNAMIC_EXECUTION_FALSE@@GENERATE_NEEDED_FALSE@ simpl32-defs.h +noinst_LTLIBRARIES = libarch.la +@GENERATE_NEEDED_TRUE@EXTRA_DIST = insnset.c +@GENERATE_NEEDED_FALSE@libarch_la_SOURCES = execute.c \ +@GENERATE_NEEDED_FALSE@ or32.c \ +@GENERATE_NEEDED_FALSE@ simpl32-defs.h -@DYNAMIC_EXECUTION_FALSE@@GENERATE_NEEDED_TRUE@libarch_la_SOURCES = execute.c \ -@DYNAMIC_EXECUTION_FALSE@@GENERATE_NEEDED_TRUE@ or32.c \ -@DYNAMIC_EXECUTION_FALSE@@GENERATE_NEEDED_TRUE@ common-i386.h \ -@DYNAMIC_EXECUTION_FALSE@@GENERATE_NEEDED_TRUE@ dyn32-defs.h \ -@DYNAMIC_EXECUTION_FALSE@@GENERATE_NEEDED_TRUE@ dyngen.h \ -@DYNAMIC_EXECUTION_FALSE@@GENERATE_NEEDED_TRUE@ dyn-rec.h \ -@DYNAMIC_EXECUTION_FALSE@@GENERATE_NEEDED_TRUE@ i386-regs.h \ -@DYNAMIC_EXECUTION_FALSE@@GENERATE_NEEDED_TRUE@ op-arith-op.h \ -@DYNAMIC_EXECUTION_FALSE@@GENERATE_NEEDED_TRUE@ op-comp-op.h \ -@DYNAMIC_EXECUTION_FALSE@@GENERATE_NEEDED_TRUE@ op-extend-op.h \ -@DYNAMIC_EXECUTION_FALSE@@GENERATE_NEEDED_TRUE@ op-ff1-op.h \ -@DYNAMIC_EXECUTION_FALSE@@GENERATE_NEEDED_TRUE@ op-i386.h \ -@DYNAMIC_EXECUTION_FALSE@@GENERATE_NEEDED_TRUE@ op-lwhb-op.h \ -@DYNAMIC_EXECUTION_FALSE@@GENERATE_NEEDED_TRUE@ op-mac-op.h \ -@DYNAMIC_EXECUTION_FALSE@@GENERATE_NEEDED_TRUE@ op-mftspr-op.h \ -@DYNAMIC_EXECUTION_FALSE@@GENERATE_NEEDED_TRUE@ op-support.h \ -@DYNAMIC_EXECUTION_FALSE@@GENERATE_NEEDED_TRUE@ op-swhb-op.h \ -@DYNAMIC_EXECUTION_FALSE@@GENERATE_NEEDED_TRUE@ op-t-reg-mov-op.h \ -@DYNAMIC_EXECUTION_FALSE@@GENERATE_NEEDED_TRUE@ rec-i386.h \ -@DYNAMIC_EXECUTION_FALSE@@GENERATE_NEEDED_TRUE@ sched-i386.h \ -@DYNAMIC_EXECUTION_FALSE@@GENERATE_NEEDED_TRUE@ simpl32-defs.h +@GENERATE_NEEDED_TRUE@libarch_la_SOURCES = execute.c \ +@GENERATE_NEEDED_TRUE@ or32.c \ +@GENERATE_NEEDED_TRUE@ simpl32-defs.h -@DYNAMIC_EXECUTION_TRUE@libarch_la_SOURCES = execute.c \ -@DYNAMIC_EXECUTION_TRUE@ or32.c \ -@DYNAMIC_EXECUTION_TRUE@ op.c \ -@DYNAMIC_EXECUTION_TRUE@ dyn-rec.c \ -@DYNAMIC_EXECUTION_TRUE@ op-support.c \ -@DYNAMIC_EXECUTION_TRUE@ common-i386.h \ -@DYNAMIC_EXECUTION_TRUE@ dyn32-defs.h \ -@DYNAMIC_EXECUTION_TRUE@ dyngen.h \ -@DYNAMIC_EXECUTION_TRUE@ dyn-rec.h \ -@DYNAMIC_EXECUTION_TRUE@ i386-regs.h \ -@DYNAMIC_EXECUTION_TRUE@ op-arith-op.h \ -@DYNAMIC_EXECUTION_TRUE@ op-comp-op.h \ -@DYNAMIC_EXECUTION_TRUE@ op-extend-op.h \ -@DYNAMIC_EXECUTION_TRUE@ op-ff1-op.h \ -@DYNAMIC_EXECUTION_TRUE@ op-i386.h \ -@DYNAMIC_EXECUTION_TRUE@ op-lwhb-op.h \ -@DYNAMIC_EXECUTION_TRUE@ op-mac-op.h \ -@DYNAMIC_EXECUTION_TRUE@ op-mftspr-op.h \ -@DYNAMIC_EXECUTION_TRUE@ op-support.h \ -@DYNAMIC_EXECUTION_TRUE@ op-swhb-op.h \ -@DYNAMIC_EXECUTION_TRUE@ op-t-reg-mov-op.h \ -@DYNAMIC_EXECUTION_TRUE@ rec-i386.h \ -@DYNAMIC_EXECUTION_TRUE@ sched-i386.h \ -@DYNAMIC_EXECUTION_TRUE@ simpl32-defs.h +@GENERATE_NEEDED_TRUE@BUILT_SOURCES = execgen.c +@GENERATE_NEEDED_TRUE@noinst_PROGRAMS = generate$(EXEEXT) +@GENERATE_NEEDED_TRUE@generate_SOURCES = or32.c \ +@GENERATE_NEEDED_TRUE@ generate.c \ +@GENERATE_NEEDED_TRUE@ simpl32-defs.h -@DYNAMIC_EXECUTION_TRUE@nodist_libarch_la_SOURCES = gen-ops.h \ -@DYNAMIC_EXECUTION_TRUE@ gen-ops.c \ -@DYNAMIC_EXECUTION_TRUE@ gen-ops-gen.c \ -@DYNAMIC_EXECUTION_TRUE@ gen-ops-rel.c +@GENERATE_NEEDED_TRUE@generate_CFLAGS = $(AM_CFLAGS) +@GENERATE_NEEDED_FALSE@dist_EXTRA_libarch_la_SOURCES = insnset.c -@DYNAMIC_EXECUTION_FALSE@@GENERATE_NEEDED_TRUE@BUILT_SOURCES = execgen.c -@DYNAMIC_EXECUTION_TRUE@BUILT_SOURCES = gen-ops.h \ -@DYNAMIC_EXECUTION_TRUE@ gen-ops.c \ -@DYNAMIC_EXECUTION_TRUE@ gen-ops-gen.c \ -@DYNAMIC_EXECUTION_TRUE@ gen-ops-rel.c - -@DYNAMIC_EXECUTION_TRUE@dyngen_SOURCES = dyngen.c \ -@DYNAMIC_EXECUTION_TRUE@ dyngen-i386.c \ -@DYNAMIC_EXECUTION_TRUE@ dyngen-elf.c \ -@DYNAMIC_EXECUTION_TRUE@ common-i386.h \ -@DYNAMIC_EXECUTION_TRUE@ dyn32-defs.h \ -@DYNAMIC_EXECUTION_TRUE@ dyngen.h \ -@DYNAMIC_EXECUTION_TRUE@ dyn-rec.h \ -@DYNAMIC_EXECUTION_TRUE@ i386-regs.h \ -@DYNAMIC_EXECUTION_TRUE@ op-arith-op.h \ -@DYNAMIC_EXECUTION_TRUE@ op-comp-op.h \ -@DYNAMIC_EXECUTION_TRUE@ op-extend-op.h \ -@DYNAMIC_EXECUTION_TRUE@ op-ff1-op.h \ -@DYNAMIC_EXECUTION_TRUE@ op-i386.h \ -@DYNAMIC_EXECUTION_TRUE@ op-lwhb-op.h \ -@DYNAMIC_EXECUTION_TRUE@ op-mac-op.h \ -@DYNAMIC_EXECUTION_TRUE@ op-mftspr-op.h \ -@DYNAMIC_EXECUTION_TRUE@ op-support.h \ -@DYNAMIC_EXECUTION_TRUE@ op-swhb-op.h \ -@DYNAMIC_EXECUTION_TRUE@ op-t-reg-mov-op.h \ -@DYNAMIC_EXECUTION_TRUE@ rec-i386.h \ -@DYNAMIC_EXECUTION_TRUE@ sched-i386.h \ -@DYNAMIC_EXECUTION_TRUE@ simpl32-defs.h - -@DYNAMIC_EXECUTION_TRUE@dyngen_CFLAGS = $(AM_CFLAGS) -@DYNAMIC_EXECUTION_TRUE@OP_CFLAGS = -Wall -fomit-frame-pointer -fno-reorder-blocks -O2 -@DYNAMIC_EXECUTION_FALSE@@GENERATE_NEEDED_TRUE@EXTRA_DIST = insnset.c -@DYNAMIC_EXECUTION_FALSE@@GENERATE_NEEDED_TRUE@generate_SOURCES = or32.c \ -@DYNAMIC_EXECUTION_FALSE@@GENERATE_NEEDED_TRUE@ generate.c \ -@DYNAMIC_EXECUTION_FALSE@@GENERATE_NEEDED_TRUE@ common-i386.h \ -@DYNAMIC_EXECUTION_FALSE@@GENERATE_NEEDED_TRUE@ dyn32-defs.h \ -@DYNAMIC_EXECUTION_FALSE@@GENERATE_NEEDED_TRUE@ dyngen.h \ -@DYNAMIC_EXECUTION_FALSE@@GENERATE_NEEDED_TRUE@ dyn-rec.h \ -@DYNAMIC_EXECUTION_FALSE@@GENERATE_NEEDED_TRUE@ i386-regs.h \ -@DYNAMIC_EXECUTION_FALSE@@GENERATE_NEEDED_TRUE@ op-arith-op.h \ -@DYNAMIC_EXECUTION_FALSE@@GENERATE_NEEDED_TRUE@ op-comp-op.h \ -@DYNAMIC_EXECUTION_FALSE@@GENERATE_NEEDED_TRUE@ op-extend-op.h \ -@DYNAMIC_EXECUTION_FALSE@@GENERATE_NEEDED_TRUE@ op-ff1-op.h \ -@DYNAMIC_EXECUTION_FALSE@@GENERATE_NEEDED_TRUE@ op-i386.h \ -@DYNAMIC_EXECUTION_FALSE@@GENERATE_NEEDED_TRUE@ op-lwhb-op.h \ -@DYNAMIC_EXECUTION_FALSE@@GENERATE_NEEDED_TRUE@ op-mac-op.h \ -@DYNAMIC_EXECUTION_FALSE@@GENERATE_NEEDED_TRUE@ op-mftspr-op.h \ -@DYNAMIC_EXECUTION_FALSE@@GENERATE_NEEDED_TRUE@ op-support.h \ -@DYNAMIC_EXECUTION_FALSE@@GENERATE_NEEDED_TRUE@ op-swhb-op.h \ -@DYNAMIC_EXECUTION_FALSE@@GENERATE_NEEDED_TRUE@ op-t-reg-mov-op.h \ -@DYNAMIC_EXECUTION_FALSE@@GENERATE_NEEDED_TRUE@ rec-i386.h \ -@DYNAMIC_EXECUTION_FALSE@@GENERATE_NEEDED_TRUE@ sched-i386.h \ -@DYNAMIC_EXECUTION_FALSE@@GENERATE_NEEDED_TRUE@ simpl32-defs.h - -@DYNAMIC_EXECUTION_FALSE@@GENERATE_NEEDED_TRUE@generate_CFLAGS = $(AM_CFLAGS) -@DYNAMIC_EXECUTION_FALSE@@GENERATE_NEEDED_FALSE@dist_EXTRA_libarch_la_SOURCES = insnset.c - # If the simulator was first built without --enable-simple and then with it, # then also remove these two files CLEANFILES = execgen.c \ - generate \ - gen-ops.c \ - gen-ops.h \ - gen-ops-rel.c \ - gen-ops-gen.c + generate all: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) all-am @@ -464,7 +309,7 @@ rm -f "$${dir}/so_locations"; \ done libarch.la: $(libarch_la_OBJECTS) $(libarch_la_DEPENDENCIES) - $(LINK) $(am_libarch_la_rpath) $(libarch_la_OBJECTS) $(libarch_la_LIBADD) $(LIBS) + $(LINK) $(libarch_la_OBJECTS) $(libarch_la_LIBADD) $(LIBS) clean-noinstPROGRAMS: @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ @@ -474,9 +319,6 @@ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list -dyngen$(EXEEXT): $(dyngen_OBJECTS) $(dyngen_DEPENDENCIES) - @rm -f dyngen$(EXEEXT) - $(dyngen_LINK) $(dyngen_OBJECTS) $(dyngen_LDADD) $(LIBS) generate$(EXEEXT): $(generate_OBJECTS) $(generate_DEPENDENCIES) @rm -f generate$(EXEEXT) $(generate_LINK) $(generate_OBJECTS) $(generate_LDADD) $(LIBS) @@ -487,19 +329,10 @@ distclean-compile: -rm -f *.tab.c -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dyn-rec.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dyngen-dyngen-elf.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dyngen-dyngen-i386.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dyngen-dyngen.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execute.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gen-ops-gen.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gen-ops-rel.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gen-ops.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/generate-generate.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/generate-or32.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/insnset.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/op-support.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/op.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/or32.Plo@am__quote@ .c.o: @@ -523,48 +356,6 @@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< -dyngen-dyngen.o: dyngen.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(dyngen_CFLAGS) $(CFLAGS) -MT dyngen-dyngen.o -MD -MP -MF $(DEPDIR)/dyngen-dyngen.Tpo -c -o dyngen-dyngen.o `test -f 'dyngen.c' || echo '$(srcdir)/'`dyngen.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/dyngen-dyngen.Tpo $(DEPDIR)/dyngen-dyngen.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dyngen.c' object='dyngen-dyngen.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(dyngen_CFLAGS) $(CFLAGS) -c -o dyngen-dyngen.o `test -f 'dyngen.c' || echo '$(srcdir)/'`dyngen.c - -dyngen-dyngen.obj: dyngen.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(dyngen_CFLAGS) $(CFLAGS) -MT dyngen-dyngen.obj -MD -MP -MF $(DEPDIR)/dyngen-dyngen.Tpo -c -o dyngen-dyngen.obj `if test -f 'dyngen.c'; then $(CYGPATH_W) 'dyngen.c'; else $(CYGPATH_W) '$(srcdir)/dyngen.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/dyngen-dyngen.Tpo $(DEPDIR)/dyngen-dyngen.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dyngen.c' object='dyngen-dyngen.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(dyngen_CFLAGS) $(CFLAGS) -c -o dyngen-dyngen.obj `if test -f 'dyngen.c'; then $(CYGPATH_W) 'dyngen.c'; else $(CYGPATH_W) '$(srcdir)/dyngen.c'; fi` - -dyngen-dyngen-i386.o: dyngen-i386.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(dyngen_CFLAGS) $(CFLAGS) -MT dyngen-dyngen-i386.o -MD -MP -MF $(DEPDIR)/dyngen-dyngen-i386.Tpo -c -o dyngen-dyngen-i386.o `test -f 'dyngen-i386.c' || echo '$(srcdir)/'`dyngen-i386.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/dyngen-dyngen-i386.Tpo $(DEPDIR)/dyngen-dyngen-i386.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dyngen-i386.c' object='dyngen-dyngen-i386.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(dyngen_CFLAGS) $(CFLAGS) -c -o dyngen-dyngen-i386.o `test -f 'dyngen-i386.c' || echo '$(srcdir)/'`dyngen-i386.c - -dyngen-dyngen-i386.obj: dyngen-i386.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(dyngen_CFLAGS) $(CFLAGS) -MT dyngen-dyngen-i386.obj -MD -MP -MF $(DEPDIR)/dyngen-dyngen-i386.Tpo -c -o dyngen-dyngen-i386.obj `if test -f 'dyngen-i386.c'; then $(CYGPATH_W) 'dyngen-i386.c'; else $(CYGPATH_W) '$(srcdir)/dyngen-i386.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/dyngen-dyngen-i386.Tpo $(DEPDIR)/dyngen-dyngen-i386.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dyngen-i386.c' object='dyngen-dyngen-i386.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(dyngen_CFLAGS) $(CFLAGS) -c -o dyngen-dyngen-i386.obj `if test -f 'dyngen-i386.c'; then $(CYGPATH_W) 'dyngen-i386.c'; else $(CYGPATH_W) '$(srcdir)/dyngen-i386.c'; fi` - -dyngen-dyngen-elf.o: dyngen-elf.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(dyngen_CFLAGS) $(CFLAGS) -MT dyngen-dyngen-elf.o -MD -MP -MF $(DEPDIR)/dyngen-dyngen-elf.Tpo -c -o dyngen-dyngen-elf.o `test -f 'dyngen-elf.c' || echo '$(srcdir)/'`dyngen-elf.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/dyngen-dyngen-elf.Tpo $(DEPDIR)/dyngen-dyngen-elf.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dyngen-elf.c' object='dyngen-dyngen-elf.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(dyngen_CFLAGS) $(CFLAGS) -c -o dyngen-dyngen-elf.o `test -f 'dyngen-elf.c' || echo '$(srcdir)/'`dyngen-elf.c - -dyngen-dyngen-elf.obj: dyngen-elf.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(dyngen_CFLAGS) $(CFLAGS) -MT dyngen-dyngen-elf.obj -MD -MP -MF $(DEPDIR)/dyngen-dyngen-elf.Tpo -c -o dyngen-dyngen-elf.obj `if test -f 'dyngen-elf.c'; then $(CYGPATH_W) 'dyngen-elf.c'; else $(CYGPATH_W) '$(srcdir)/dyngen-elf.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/dyngen-dyngen-elf.Tpo $(DEPDIR)/dyngen-dyngen-elf.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dyngen-elf.c' object='dyngen-dyngen-elf.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(dyngen_CFLAGS) $(CFLAGS) -c -o dyngen-dyngen-elf.obj `if test -f 'dyngen-elf.c'; then $(CYGPATH_W) 'dyngen-elf.c'; else $(CYGPATH_W) '$(srcdir)/dyngen-elf.c'; fi` - generate-or32.o: or32.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(generate_CFLAGS) $(CFLAGS) -MT generate-or32.o -MD -MP -MF $(DEPDIR)/generate-or32.Tpo -c -o generate-or32.o `test -f 'or32.c' || echo '$(srcdir)/'`or32.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/generate-or32.Tpo $(DEPDIR)/generate-or32.Po @@ -802,17 +593,9 @@ tags uninstall uninstall-am -@DYNAMIC_EXECUTION_TRUE@gen-ops.h gen-ops.c gen-ops-gen.c gen-ops-rel.c: dyngen$(EXEEXT) op-tmp.o -@DYNAMIC_EXECUTION_TRUE@ ./dyngen$(EXEEXT) op-tmp.o gen-ops.c gen-ops-gen.c gen-ops-rel.c gen-ops.h +@GENERATE_NEEDED_TRUE@execgen.c: generate$(EXEEXT) insnset.c +@GENERATE_NEEDED_TRUE@ ./generate$(EXEEXT) $(srcdir)/insnset.c execgen.c -@DYNAMIC_EXECUTION_TRUE@op-tmp.o: op.c op-t-reg-mov-op.h op-i386.h op-arith-op.h op-comp-op.h \ -@DYNAMIC_EXECUTION_TRUE@ op-extend-op.h op-ff1-op.h op-mac-op.h op-mftspr-op.h op-lwhb-op.h \ -@DYNAMIC_EXECUTION_TRUE@ op-swhb-op.h -@DYNAMIC_EXECUTION_TRUE@ $(CC) $(INCLUDES) -I$(top_builddir) $(OP_CFLAGS) -o $@ -c $< - -@DYNAMIC_EXECUTION_FALSE@@GENERATE_NEEDED_TRUE@execgen.c: generate$(EXEEXT) insnset.c -@DYNAMIC_EXECUTION_FALSE@@GENERATE_NEEDED_TRUE@ ./generate$(EXEEXT) $(srcdir)/insnset.c execgen.c - # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT:
/cpu/or32/execute.c
98,9 → 98,7
static int sbuf_head = 0;
static int sbuf_tail = 0;
static int sbuf_count = 0;
#if !(DYNAMIC_EXECUTION)
static int sbuf_buf[MAX_SBUF_LEN] = { 0 };
#endif
 
static int sbuf_prev_cycles = 0;
 
109,9 → 107,7
static int next_delay_insn;
 
/* Forward declaration of static functions */
#if !(DYNAMIC_EXECUTION)
static void decode_execute (struct iqueue_entry *current);
#endif
 
/*---------------------------------------------------------------------------*/
/*!Get an actual value of a specific register
487,8 → 483,6
} /* analysis() */
 
 
#if !(DYNAMIC_EXECUTION)
 
/*---------------------------------------------------------------------------*/
/*!Store buffer analysis for store instructions
 
570,9 → 564,6
}
} /* sbuf_load() */
 
#endif /* !DYNAMIC_EXECUTION */
 
 
/*---------------------------------------------------------------------------*/
/*!Outputs dissasembled instruction */
/*---------------------------------------------------------------------------*/
832,10 → 823,7
#error HAVE_EXECUTION has to be defined in order to execute programs.
#endif
 
/* FIXME: Most of this file is not needed with DYNAMIC_EXECUTION */
#if !(DYNAMIC_EXECUTION)
decode_execute (current);
#endif
 
if (breakpoint)
{
917,10 → 905,8
pcnext += 4;
 
/* MM1409: All programs should set their stack pointer! */
#if !(DYNAMIC_EXECUTION)
except_handle (EXCEPT_RESET, 0);
update_pc ();
#endif
 
except_pending = 0;
cpu_state.pc = cpu_state.sprs[SPR_SR] & SPR_SR_EPH ?
1283,8 → 1269,6
 
#include "insnset.c"
 
#elif defined(DYNAMIC_EXECUTION)
 
#else
# error "Must define SIMPLE_EXECUTION, COMPLEX_EXECUTION or DYNAMIC_EXECUTION"
# error "Must define SIMPLE_EXECUTION, COMPLEX_EXECUTION"
#endif
/cpu/or32/or32.c
78,10 → 78,6
# else
# define EF(func) "func"
# endif
# else /* DYNAMIC_EXECUTION */
# define EFN &l_none
# define EF(func) &(gen_ ##func)
# define EFI &gen_l_invalid
# endif
#else /* HAVE_EXECUTION */
# define EFN &l_none
/cpu/or32/Makefile.am
21,84 → 21,8
# with this program. If not, see <http://www.gnu.org/licenses/>.
 
 
if DYNAMIC_EXECUTION
 
noinst_LTLIBRARIES = libarch.la
 
noinst_PROGRAMS = dyngen
 
libarch_la_SOURCES = execute.c \
or32.c \
op.c \
dyn-rec.c \
op-support.c \
common-i386.h \
dyn32-defs.h \
dyngen.h \
dyn-rec.h \
i386-regs.h \
op-arith-op.h \
op-comp-op.h \
op-extend-op.h \
op-ff1-op.h \
op-i386.h \
op-lwhb-op.h \
op-mac-op.h \
op-mftspr-op.h \
op-support.h \
op-swhb-op.h \
op-t-reg-mov-op.h \
rec-i386.h \
sched-i386.h \
simpl32-defs.h
 
nodist_libarch_la_SOURCES = gen-ops.h \
gen-ops.c \
gen-ops-gen.c \
gen-ops-rel.c
 
BUILT_SOURCES = gen-ops.h \
gen-ops.c \
gen-ops-gen.c \
gen-ops-rel.c
 
dyngen_SOURCES = dyngen.c \
dyngen-i386.c \
dyngen-elf.c \
common-i386.h \
dyn32-defs.h \
dyngen.h \
dyn-rec.h \
i386-regs.h \
op-arith-op.h \
op-comp-op.h \
op-extend-op.h \
op-ff1-op.h \
op-i386.h \
op-lwhb-op.h \
op-mac-op.h \
op-mftspr-op.h \
op-support.h \
op-swhb-op.h \
op-t-reg-mov-op.h \
rec-i386.h \
sched-i386.h \
simpl32-defs.h
dyngen_CFLAGS = $(AM_CFLAGS)
 
gen-ops.h gen-ops.c gen-ops-gen.c gen-ops-rel.c: dyngen$(EXEEXT) op-tmp.o
./dyngen$(EXEEXT) op-tmp.o gen-ops.c gen-ops-gen.c gen-ops-rel.c gen-ops.h
 
OP_CFLAGS = -Wall -fomit-frame-pointer -fno-reorder-blocks -O2
 
op-tmp.o: op.c op-t-reg-mov-op.h op-i386.h op-arith-op.h op-comp-op.h \
op-extend-op.h op-ff1-op.h op-mac-op.h op-mftspr-op.h op-lwhb-op.h \
op-swhb-op.h
$(CC) $(INCLUDES) -I$(top_builddir) $(OP_CFLAGS) -o $@ -c $<
else
 
noinst_LTLIBRARIES = libarch.la
 
if GENERATE_NEEDED
 
EXTRA_DIST = insnset.c
105,25 → 29,7
 
libarch_la_SOURCES = execute.c \
or32.c \
common-i386.h \
dyn32-defs.h \
dyngen.h \
dyn-rec.h \
i386-regs.h \
op-arith-op.h \
op-comp-op.h \
op-extend-op.h \
op-ff1-op.h \
op-i386.h \
op-lwhb-op.h \
op-mac-op.h \
op-mftspr-op.h \
op-support.h \
op-swhb-op.h \
op-t-reg-mov-op.h \
rec-i386.h \
sched-i386.h \
simpl32-defs.h
simpl32-defs.h
 
BUILT_SOURCES = execgen.c
 
131,25 → 37,7
 
generate_SOURCES = or32.c \
generate.c \
common-i386.h \
dyn32-defs.h \
dyngen.h \
dyn-rec.h \
i386-regs.h \
op-arith-op.h \
op-comp-op.h \
op-extend-op.h \
op-ff1-op.h \
op-i386.h \
op-lwhb-op.h \
op-mac-op.h \
op-mftspr-op.h \
op-support.h \
op-swhb-op.h \
op-t-reg-mov-op.h \
rec-i386.h \
sched-i386.h \
simpl32-defs.h
simpl32-defs.h
 
generate_CFLAGS = $(AM_CFLAGS)
 
160,37 → 48,15
 
libarch_la_SOURCES = execute.c \
or32.c \
common-i386.h \
dyn32-defs.h \
dyngen.h \
dyn-rec.h \
i386-regs.h \
op-arith-op.h \
op-comp-op.h \
op-extend-op.h \
op-ff1-op.h \
op-i386.h \
op-lwhb-op.h \
op-mac-op.h \
op-mftspr-op.h \
op-support.h \
op-swhb-op.h \
op-t-reg-mov-op.h \
rec-i386.h \
sched-i386.h \
simpl32-defs.h
 
dist_EXTRA_libarch_la_SOURCES = insnset.c
 
endif
endif
 
 
# If the simulator was first built without --enable-simple and then with it,
# then also remove these two files
 
CLEANFILES = execgen.c \
generate \
gen-ops.c \
gen-ops.h \
gen-ops-rel.c \
gen-ops-gen.c
generate
/cpu/common/abstract.c
48,11 → 48,6
#include "immu.h"
#include "execute.h"
 
#if DYNAMIC_EXECUTION
#include "dyn-rec.h"
#endif
 
 
/*! Global temporary variable to increase speed. */
struct dev_memarea *cur_area;
 
561,12 → 556,10
mprofile (memaddr, MPROF_32 | MPROF_FETCH);
 
phys_memaddr = memaddr;
#if !(DYNAMIC_EXECUTION)
phys_memaddr = immu_translate (memaddr);
 
if (except_pending)
return 0;
#endif
 
if (config.debug.enabled)
*breakpoint += check_debug_unit (DebugInstructionFetch, memaddr);
731,9 → 724,6
runtime.sim.mem_cycles += mem->ops.delayw;
mem->ops.writefunc32 (memaddr & mem->size_mask, value,
mem->ops.write_dat32);
#if DYNAMIC_EXECUTION
dyn_checkwrite (memaddr);
#endif
}
else
{
763,9 → 753,6
runtime.sim.mem_cycles += mem->ops.delayw;
mem->ops.writefunc16 (memaddr & mem->size_mask, value,
mem->ops.write_dat16);
#if DYNAMIC_EXECUTION
dyn_checkwrite (memaddr);
#endif
}
else
{
795,9 → 782,6
runtime.sim.mem_cycles += mem->ops.delayw;
mem->ops.writefunc8 (memaddr & mem->size_mask, value,
mem->ops.write_dat8);
#if DYNAMIC_EXECUTION
dyn_checkwrite (memaddr);
#endif
}
else
{
/cpu/common/execute.h
31,12 → 31,6
#include "opcode/or32.h"
#include "abstract.h"
 
#if DYNAMIC_EXECUTION
#include "setjmp.h"
#include "dyn-rec.h"
#endif
 
 
#define CURINSN(INSN) (strcmp(cur->insn, (INSN)) == 0)
 
/*!The main structure holding the current execution state of the CPU
61,13 → 55,6
struct iqueue_entry iqueue; /*!< Decode of just executed instr */
struct iqueue_entry icomplet; /*!< Decode of instr before this */
 
#if DYNAMIC_EXECUTION
jmp_buf excpt_loc; /*!< Longjump here for exception */
struct dyn_page *curr_page; /*!< Current page in execution */
struct dyn_page **dyn_pages; /*!< Pointers to recompiled pages */
int32_t cycles_dec;
struct op_queue *opqs; /*!< Micro-operation queue */
#endif
};
 
/*! History of execution */
/cpu/or1k/sprs.c
108,16 → 108,6
cpu_state.sprs[regno] |= SPR_SR_FO;
if((value & SPR_SR_IEE) && !(prev_val & SPR_SR_IEE))
pic_ints_en();
#if DYNAMIC_EXECUTION
if((value & SPR_SR_IME) && !(prev_val & SPR_SR_IME)) {
TRACE_(immu)("IMMU just became enabled (%lli).\n", runtime.sim.cycles);
recheck_immu(IMMU_GOT_ENABLED);
} else if(!(value & SPR_SR_IME) && (prev_val & SPR_SR_IME)) {
TRACE_(immu)("Remove counting of mmu hit delay with cycles (%lli)\n",
runtime.sim.cycles);
recheck_immu(IMMU_GOT_DISABLED);
}
#endif
break;
case SPR_NPC:
{
199,15 → 189,6
(value & (SPR_ITLBTR_CC | SPR_ITLBTR_CI | SPR_ITLBTR_WBC | SPR_ITLBTR_WOM |
SPR_ITLBTR_A | SPR_ITLBTR_D | SPR_ITLBTR_SXE | SPR_ITLBTR_UXE));
 
#if DYNAMIC_EXECUTION
if(cpu_state.sprs[SPR_SR] & SPR_SR_IME) {
/* The immu got reconfigured. Recheck if the current page in execution
* is resident in the immu ways. This check would be done during the
* instruction fetch but since the dynamic execution model does not do
* instruction fetchs, do it now. */
recheck_immu(0);
}
#endif
}
 
/* Links to GPRS */
/cpu/or1k/except.c
36,11 → 36,6
#include "execute.h"
#include "debug-unit.h"
 
#if DYNAMIC_EXECUTION
#include "sched.h"
#include "op-support.h"
#endif
 
extern void op_join_mem_cycles(void);
 
 
58,19 → 53,15
if (debug_ignore_exception (except))
return;
 
#if !(DYNAMIC_EXECUTION)
/* In the dynamic recompiler, this function never returns, so this is not
* needed. Ofcourse we could set it anyway, but then all code that checks
* this variable would break, since it is never reset */
except_pending = 1;
#endif
 
except_vector =
except + (cpu_state.sprs[SPR_SR] & SPR_SR_EPH ? 0xf0000000 : 0x00000000);
 
#if !(DYNAMIC_EXECUTION)
pcnext = except_vector;
#endif
 
cpu_state.sprs[SPR_EEAR_BASE] = ea;
cpu_state.sprs[SPR_ESR_BASE] = cpu_state.sprs[SPR_SR];
83,15 → 74,6
/* Address translation is always disabled when starting exception. */
cpu_state.sprs[SPR_SR] &= ~SPR_SR_DME;
 
#if DYNAMIC_EXECUTION
/* If we were called from do_scheduler and there were more jobs scheduled to
* run after this, they won't run unless the following call is made since this
* function never returns. (If we weren't called from do_scheduler, then the
* job at the head of the queue will still have some time remaining) */
if (scheduler.job_queue->time <= 0)
do_scheduler ();
#endif
 
switch (except)
{
/* EPCR is irrelevent */
101,9 → 83,6
case EXCEPT_ITLBMISS:
case EXCEPT_IPF:
cpu_state.sprs[SPR_EPCR_BASE] = ea - (cpu_state.delay_insn ? 4 : 0);
#if DYNAMIC_EXECUTION
op_join_mem_cycles ();
#endif
break;
case EXCEPT_BUSERR:
case EXCEPT_DPF:
113,12 → 92,6
case EXCEPT_RANGE:
case EXCEPT_TRAP:
/* All these exceptions happen during a simulated instruction */
#if DYNAMIC_EXECUTION
/* Since these exceptions happen during a simulated instruction and this
* function jumps out to the exception vector the scheduler would never have
* a chance to run, therefore run it now */
run_sched_out_of_line ();
#endif
cpu_state.sprs[SPR_EPCR_BASE] =
cpu_state.pc - (cpu_state.delay_insn ? 4 : 0);
break;
133,13 → 106,11
case EXCEPT_INT:
cpu_state.sprs[SPR_EPCR_BASE] =
cpu_state.pc - (cpu_state.delay_insn ? 4 : 0);
#if !(DYNAMIC_EXECUTION)
/* If we don't update the pc now, then it will only happen *after* the next
* instruction (There would be serious problems if the next instruction just
* happens to be a branch), when it should happen NOW. */
cpu_state.pc = pcnext;
pcnext += 4;
#endif
break;
}
 
155,7 → 126,4
* the delay slot of the previous instruction */
cpu_state.delay_insn = 0;
 
#if DYNAMIC_EXECUTION
do_jump (except_vector);
#endif
}
/cpu/or1k/opcode/or32.h
55,8 → 55,6
#if defined(HAVE_EXECUTION)
# if SIMPLE_EXECUTION
# include "simpl32-defs.h"
# elif DYNAMIC_EXECUTION
# include "dyn32-defs.h"
# endif
#endif
 
112,8 → 110,6
char *function_name;
# elif SIMPLE_EXECUTION
void (*exec)(struct iqueue_entry *);
# else /* DYNAMIC_EXECUTION */
void (*exec)(struct op_queue *opq, int param_t[3], int);
# endif
#else /* HAVE_EXECUTION */
void (*exec)(void);
/configure.ac
57,9 → 57,6
ARCH_ISA=OR32;
AC_DEFINE(OR32_TYPES, 1, "The compiler uses the OR32 ELF types");;
 
dlx*) CPU_ARCH=dlx;
ARCH_ISA=DLX;;
 
*) AC_MSG_WARN(Unknown target architecture $target_cpu: OR32 ELF assumed);
CPU_ARCH=or32;
ARCH_ISA=OR32;
219,7 → 216,7
INCLUDES="-I\${top_builddir}/cpu/$CPU_ARCH"
AC_MSG_CHECKING(which execution style to use)
AC_ARG_ENABLE(execution,
[ --enable-execution Execution style to use (simple/complex/dynamic)],
[ --enable-execution Execution style to use (simple/complex)],
[
case "$enableval" in
simple)
232,13 → 229,8
execution="1"
AC_MSG_RESULT(complex)
;;
dynamic)
INCLUDES="-I\${top_srcdir}/cpu/$CPU_ARCH"
execution="2"
AC_MSG_RESULT(dynamic)
;;
*)
AC_MSG_ERROR("execution must one of simple/complex/dynamic")
AC_MSG_ERROR("execution must one of simple/complex")
;;
esac
],
299,11 → 291,10
AC_DEFINE_UNQUOTED(HAVE_UNSIGNED_XORI, $unsigned_xori, [Whether l.xori takes an unsigned immediate operand])
AC_DEFINE_UNQUOTED(SIMPLE_EXECUTION, $execution == 0, [Whether we are building with simple execution module])
AC_DEFINE_UNQUOTED(COMPLEX_EXECUTION, $execution == 1, [Whether we are building with complex execution module])
AC_DEFINE_UNQUOTED(DYNAMIC_EXECUTION, $execution == 2, [Whether we are building with dynamic execution module])
AM_CONDITIONAL(GENERATE_NEEDED, test x$execution = x1)
AM_CONDITIONAL(DYNAMIC_EXECUTION, test x$execution = x2)
 
 
 
test -n "$profile" && CFLAGS="$CFLAGS $profile" LDFLAGS="$LDFLAGS $profile"
 
# Check for a DejaGNU global config file. If not set, then set it
380,7 → 371,6
 
# yuck. I don't know why I cannot just substitute $CPU_ARCH in the above
case "$CPU_ARCH" in
dlx) AC_CONFIG_FILES([cpu/dlx/Makefile]);;
*) AC_CONFIG_FILES([cpu/or32/Makefile]);;
esac
 
/doc/or1ksim.info
104,7 → 104,6
 
`--enable-execution=simple'
`--enable-execution=complex'
`--enable-execution=dynamic'
Or1ksim has developed to improve functionality and performance.
This feature allows three versions of Or1ksim to be built
 
116,13 → 115,7
suggest this is 50% faster than the simple simulator. This
is the default.
 
`--enable-execution=dynamic'
Build a dynamically compiling simulator. This is the way
many modern ISS are built. This represents a work in
progress. Currently Or1ksim will compile, but segfaults if
configured with this option.
 
 
The default is `--enable-execution=complex'.
 
`--enable-ethphy'
3895,43 → 3888,43
* --debug-config: Standalone Simulator.
(line 99)
* --disable-all-tests: Configuring the Build.
(line 105)
(line 98)
* --disable-arith-flag: Configuring the Build.
(line 118)
(line 111)
* --disable-debug: Configuring the Build.
(line 98)
(line 91)
* --disable-ethphy: Configuring the Build.
(line 59)
(line 52)
* --disable-ov-flag: Configuring the Build.
(line 133)
(line 126)
* --disable-profiling: Configuring the Build.
(line 30)
* --disable-range-stats: Configuring the Build.
(line 92)
(line 85)
* --disable-unsigned-xori: Configuring the Build.
(line 69)
(line 62)
* --enable-all-tests: Configuring the Build.
(line 104)
(line 97)
* --enable-arith-flag: Configuring the Build.
(line 117)
(line 110)
* --enable-debug: Configuring the Build.
(line 97)
(line 90)
* --enable-ethphy: Configuring the Build.
(line 58)
(line 51)
* --enable-execution: Configuring the Build.
(line 37)
(line 36)
* --enable-mprofile: Standalone Simulator.
(line 133)
* --enable-ov-flag: Configuring the Build.
(line 132)
(line 125)
* --enable-profile: Standalone Simulator.
(line 130)
* --enable-profiling: Configuring the Build.
(line 29)
* --enable-range-stats: Configuring the Build.
(line 91)
(line 84)
* --enable-unsigned-xori: Configuring the Build.
(line 68)
(line 61)
* --file: Standalone Simulator.
(line 57)
* --filename: Memory Profiling Utility.
4023,9 → 4016,9
(line 66)
* 16550 (UART configuration): UART Configuration. (line 73)
* all tests enabled: Configuring the Build.
(line 105)
(line 98)
* Argtable2 debugging: Configuring the Build.
(line 98)
(line 91)
* ATA/ATAPI configuration: Disc Interface Configuration.
(line 6)
* ATA/ATAPI device configuration: Disc Interface Configuration.
4087,7 → 4080,7
* command line for Or1ksim standalone use: Standalone Simulator.
(line 6)
* complex model: Configuring the Build.
(line 37)
(line 36)
* config: Global Data Structures.
(line 7)
* config.bpb: Global Data Structures.
4185,7 → 4178,7
(line 6)
* Debug Unit verification (VAPI): Verification API. (line 34)
* debugging enabled (Argtable2): Configuring the Build.
(line 98)
(line 91)
* DejaGnu board configurations: Regression Testing. (line 35)
* DejaGnu configuration: Regression Testing. (line 21)
* DejaGNU tests directories: Regression Testing. (line 50)
4233,8 → 4226,6
(line 124)
* dynamic clock gating (power management register): Power Management Configuration.
(line 21)
* dynamic model: Configuring the Build.
(line 37)
* dynamic ports, use of: Verification API Configuration.
(line 23)
* edge_trigger (interrupt controller): Interrupt Configuration.
4271,7 → 4262,7
* enabled (VGA configuration): Display Interface Configuration.
(line 22)
* enabling Ethernet via socket: Configuring the Build.
(line 59)
(line 52)
* entrysize (MMU configuration): Memory Management Configuration.
(line 32)
* ETH_VAPI_CTRL (Ethernet verification): Verification API. (line 86)
4282,9 → 4273,9
(line 6)
* Ethernet verification (VAPI): Verification API. (line 78)
* Ethernet via socket, enabling: Configuring the Build.
(line 59)
(line 52)
* exclusive-OR immediate operand: Configuring the Build.
(line 69)
(line 62)
* exe_bin_insn_log (simulator configuration): Simulator Behavior.
(line 103)
* exe_bin_insn_log_file (simulator configuration): Simulator Behavior.
4324,7 → 4315,7
* firmware (ATA/ATAPI device configuration): Disc Interface Configuration.
(line 121)
* flag setting by instructions: Configuring the Build.
(line 118)
(line 111)
* frame buffer configuration: Frame Buffer Configuration.
(line 6)
* generic peripheral configuration: Generic Peripheral Configuration.
4501,7 → 4492,7
* or1ksim_write_spr: Simulator Library. (line 189)
* output rediretion: Concepts. (line 7)
* overflow flag setting by instructions: Configuring the Build.
(line 133)
(line 126)
* packet (ATA/ATAPI device configuration): Disc Interface Configuration.
(line 117)
* pagesize (MMU configuration): Memory Management Configuration.
4600,7 → 4591,7
* register display (Interactive CLI): Interactive Command Line.
(line 14)
* register over time statistics: Configuring the Build.
(line 92)
(line 85)
* register patching (Interactive CLI): Interactive Command Line.
(line 28)
* regression testing: Regression Testing. (line 6)
4703,7 → 4694,7
* setdbch (Interactive CLI): Interactive Command Line.
(line 141)
* simple model: Configuring the Build.
(line 37)
(line 36)
* simulator configuration: Simulator Behavior. (line 6)
* simulator configuration info (Interactive CLI): Interactive Command Line.
(line 119)
4729,7 → 4720,7
* stall the processor (Interactive CLI): Interactive Command Line.
(line 72)
* statistics, register over time: Configuring the Build.
(line 92)
(line 85)
* statistics, simulation (Interactive CLI): Interactive Command Line.
(line 83)
* stats (Interactive CLI): Interactive Command Line.
4762,7 → 4753,7
* test README: Regression Testing. (line 32)
* testing: Regression Testing. (line 6)
* tests, all enabled.: Configuring the Build.
(line 105)
(line 98)
* timings_file (CUC configuration): CUC Configuration. (line 49)
* timings_fn (CUC configuration - deprecated): CUC Configuration.
(line 49)
4849,61 → 4840,61
Node: Installation1236
Node: Preparation1483
Node: Configuring the Build1778
Node: Build and Install7918
Node: Known Issues8684
Node: Usage9739
Node: Standalone Simulator10023
Node: Profiling Utility15167
Node: Memory Profiling Utility16073
Node: Trace Generation17433
Node: Simulator Library19618
Node: Ethernet TUN/TAP Interface30050
Node: Setting Up a Persistent TAP device31155
Node: Establishing a Bridge31830
Node: Opening the Firewall33513
Node: Disabling Ethernet Filtering34004
Node: Networking from OpenRISC Linux and BusyBox34629
Node: Tearing Down a Bridge36291
Node: l.nop Support37034
Node: Configuration39196
Node: Configuration File Format39808
Node: Configuration File Preprocessing40193
Node: Configuration File Syntax40490
Node: Simulator Configuration43275
Node: Simulator Behavior43566
Node: Verification API Configuration48147
Node: CUC Configuration50087
Node: Core OpenRISC Configuration52079
Node: CPU Configuration52581
Node: Memory Configuration56700
Node: Memory Management Configuration63422
Node: Cache Configuration65799
Node: Interrupt Configuration68185
Node: Power Management Configuration70018
Node: Branch Prediction Configuration71295
Node: Debug Interface Configuration72655
Node: Peripheral Configuration74998
Node: Memory Controller Configuration75624
Node: UART Configuration79404
Node: DMA Configuration82923
Node: Ethernet Configuration84790
Node: GPIO Configuration90069
Node: Display Interface Configuration91702
Node: Frame Buffer Configuration94011
Node: Keyboard Configuration95875
Node: Disc Interface Configuration98113
Node: Generic Peripheral Configuration103217
Node: Interactive Command Line105512
Node: Verification API112486
Node: Code Internals116916
Node: Coding Conventions117499
Node: Global Data Structures121926
Node: Concepts124583
Ref: Output Redirection124728
Ref: Interrupts Internal125266
Node: Internal Debugging126419
Node: Regression Testing126943
Node: GNU Free Documentation License130732
Node: Index153139
Node: Build and Install7614
Node: Known Issues8380
Node: Usage9435
Node: Standalone Simulator9719
Node: Profiling Utility14863
Node: Memory Profiling Utility15769
Node: Trace Generation17129
Node: Simulator Library19314
Node: Ethernet TUN/TAP Interface29746
Node: Setting Up a Persistent TAP device30851
Node: Establishing a Bridge31526
Node: Opening the Firewall33209
Node: Disabling Ethernet Filtering33700
Node: Networking from OpenRISC Linux and BusyBox34325
Node: Tearing Down a Bridge35987
Node: l.nop Support36730
Node: Configuration38892
Node: Configuration File Format39504
Node: Configuration File Preprocessing39889
Node: Configuration File Syntax40186
Node: Simulator Configuration42971
Node: Simulator Behavior43262
Node: Verification API Configuration47843
Node: CUC Configuration49783
Node: Core OpenRISC Configuration51775
Node: CPU Configuration52277
Node: Memory Configuration56396
Node: Memory Management Configuration63118
Node: Cache Configuration65495
Node: Interrupt Configuration67881
Node: Power Management Configuration69714
Node: Branch Prediction Configuration70991
Node: Debug Interface Configuration72351
Node: Peripheral Configuration74694
Node: Memory Controller Configuration75320
Node: UART Configuration79100
Node: DMA Configuration82619
Node: Ethernet Configuration84486
Node: GPIO Configuration89765
Node: Display Interface Configuration91398
Node: Frame Buffer Configuration93707
Node: Keyboard Configuration95571
Node: Disc Interface Configuration97809
Node: Generic Peripheral Configuration102913
Node: Interactive Command Line105208
Node: Verification API112182
Node: Code Internals116612
Node: Coding Conventions117195
Node: Global Data Structures121622
Node: Concepts124279
Ref: Output Redirection124424
Ref: Interrupts Internal124962
Node: Internal Debugging126115
Node: Regression Testing126639
Node: GNU Free Documentation License130428
Node: Index152835

End Tag Table
/doc/or1ksim.texi
129,11 → 129,9
 
@item --enable-execution=simple
@itemx --enable-execution=complex
@itemx --enable-execution=dynamic
@cindex @code{--enable-execution}
@cindex simple model
@cindex complex model
@cindex dynamic model
@value{OR1KSIM} has developed to improve functionality and
performance. This feature allows three versions of @value{OR1KSIM} to be built
 
146,11 → 144,6
Build a more complex interpreting simulator. Experiments suggest this
is 50% faster than the simple simulator. This is the default.
 
@item --enable-execution=dynamic
Build a dynamically compiling simulator. This is the way many modern ISS are
built. This represents a work in progress. Currently @value{OR1KSIM} will
compile, but segfaults if configured with this option.
 
@end table
 
The default is @code{--enable-execution=complex}.
/doc/version.texi
1,4 → 1,4
@set UPDATED 15 April 2011
@set UPDATED-MONTH April 2011
@set UPDATED 5 June 2011
@set UPDATED-MONTH June 2011
@set EDITION 2011-04-28
@set VERSION 2011-04-28
/sim-cmd.c
306,10 → 306,6
return 0;
}
setsim_reg (strtoul (argv[1], NULL, 0), strtoul (argv[2], NULL, 0));
#if DYNAMIC_EXECUTION
PRINTF
("WARNING: Patching registers may not work with the dynamic execution model\n");
#endif
return 0;
}
 
316,9 → 312,6
static int
sim_cmd_pc (int argc, char **argv) /* patch PC */
{
#if DYNAMIC_EXECUTION
PRINTF ("Patching the pc in the dynamic execution model doesn't work\n");
#else
if (argc != 2)
{
PRINTF ("pc <value>\n");
327,7 → 320,6
 
cpu_state.pc = strtoul (argv[1], NULL, 0);
pcnext = cpu_state.pc + 4;
#endif
return 0;
}
 
341,11 → 333,6
static int
sim_cmd_break (int argc, char **argv) /* set/clear breakpoint */
{
#if DYNAMIC_EXECUTION
PRINTF
("Setting simulator breakpoints is not support with the recompiler\n");
return 0;
#else
char *p;
oraddr_t addr;
struct label_entry *l;
368,7 → 355,6
else
set_insnbrkpoint (addr);
return 0;
#endif
}
 
static int
499,27 → 485,17
static int
sim_cmd_stall (int argc, char **argv) /* Added by CZ 210801 */
{
#if DYNAMIC_EXECUTION
PRINTF ("Can't stall the cpu with the dynamic recompiler\n");
return 0;
#else
set_stall_state (1);
runtime.sim.iprompt = 0;
runtime.sim.hush = 1;
return 1;
#endif
}
 
static int
sim_cmd_unstall (int argc, char **argv) /* Added by CZ 210801 */
{
#if DYNAMIC_EXECUTION
PRINTF ("Can't unstall the cpu with the dynamic recompiler\n");
return 0;
#else
set_stall_state (0);
return 0;
#endif
}
 
static int
/ChangeLog
1,3 → 1,62
2011-06-04 Julius Baxter <julius@opencores.org>
 
* cpu/or32/rec-i386.h: Removed.
* cpu/or32/op-2t.h: Removed.
* cpu/or32/rec-i386.h: Removed.
* cpu/or32/op-2t.h: Removed.
* cpu/or32/op-mftspr-op.h: Removed.
* cpu/or32/op-i386.h: Removed.
* cpu/or32/op.c: Removed.
* cpu/or32/sched-i386.h: Removed.
* cpu/or32/dyn32-defs.h: Removed.
* cpu/or32/op-support.c: Removed.
* cpu/or32/op-lwhb-op.h: Removed.
* cpu/or32/op-comp-op.h: Removed.
* cpu/or32/op-support.h: Removed.
* cpu/or32/op-swhb-op.h: Removed.
* cpu/or32/dyn-rec.c: Removed.
* cpu/or32/op-arith-op.h: Removed.
* cpu/or32/op-1t.h: Removed.
* cpu/or32/dyn-rec.h: Removed.
* cpu/or32/op-3t.h: Removed.
* cpu/or32/op-ff1-op.h: Removed.
* cpu/or32/op-t-reg-mov-op.h: Removed.
* cpu/or32/dyngen-i386.c: Removed.
* cpu/or32/def-op-t.h: Removed.
* cpu/or32/op-1t-op.h: Removed.
* cpu/or32/op-2t-op.h: Removed.
* cpu/or32/op-3t-op.h: Removed.
* cpu/or32/common-i386.h: Removed.
* cpu/or32/op-extend-op.h: Removed.
* cpu/or32/dyngen.c: Removed.
* cpu/or32/dyngen-elf.c: Removed.
* cpu/or32/dyngen.h: Removed.
* cpu/or32/i386-regs.h: Removed.
* cpu/or32/op-mac-op.h: Removed.
* cpu/dlx: Removed.
* cpu/dlx/Makefile.in: Removed.
* cpu/dlx/arch.h: Removed.
* cpu/dlx/execute.c: Removed.
* cpu/dlx/Makefile.am: Removed.
* cpu/dlx/.cvsignore: Removed.
* cpu/or16: Removed.
* cpu/or16/.cvsignore: Removed.
* cpu/or32/or32.c: Remove dynamic execution-dependent
sections.
* cpu/or32/execute.c: Ditto.
* cpu/or32/Makefile.am: Ditto.
* cpu/common/abstract.c: Ditto.
* cpu/common/execute.h: Ditto.
* cpu/or1k/sprs.c: Ditto.
* cpu/or1k/opcode/or32.h: Ditto.
* cpu/or1k/except.c: Ditto.
* sim-cmd.c: Ditto.
* configure.ac: Remove dynamic-execution options.
Remove DLX option.
* configure: Regenerated.
* doc/or1ksim.texi <Configuring the Build>: Removed dynamic execution
option information.
2011-05-09 Julius Baxter <julius.baxter@orsoc.se>
 
* configure: Regenerated.
/config.h.in
9,9 → 9,6
/* Whether we are building with complex execution module */
#undef COMPLEX_EXECUTION
 
/* Whether we are building with dynamic execution module */
#undef DYNAMIC_EXECUTION
 
/* Define to 1 if you have the `basename' function. */
#undef HAVE_BASENAME
 
/configure
1,5 → 1,5
#! /bin/sh
# From configure.ac Id: configure.ac 532 2011-04-28 18:34:59Z jeremybennett using automake version AC_ACVERSION.
# From configure.ac Id: configure.ac 538 2011-05-09 14:42:56Z julius using automake version AC_ACVERSION.
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.64 for or1ksim 2011-04-28.
#
775,8 → 775,6
BUILD_DIR
RUNTESTDEFAULTFLAGS
DEJAGNU
DYNAMIC_EXECUTION_FALSE
DYNAMIC_EXECUTION_TRUE
GENERATE_NEEDED_FALSE
GENERATE_NEEDED_TRUE
DEBUGFLAGS
1560,7 → 1558,7
--disable-dependency-tracking speeds up one-time build
--enable-dependency-tracking do not reject slow dependency extractors
--enable-profiling generate profiling code
--enable-execution Execution style to use (simple/complex/dynamic)
--enable-execution Execution style to use (simple/complex)
--enable-ethphy compiles sim with ethernet phy support
--enable-unsigned-xori l.xori immediate operand treated as unsigned
--enable-range-stats Specifies, whether we should do register accesses over time analysis.
4512,13 → 4510,13
else
lt_cv_nm_interface="BSD nm"
echo "int some_variable = 0;" > conftest.$ac_ext
(eval echo "\"\$as_me:4515: $ac_compile\"" >&5)
(eval echo "\"\$as_me:4513: $ac_compile\"" >&5)
(eval "$ac_compile" 2>conftest.err)
cat conftest.err >&5
(eval echo "\"\$as_me:4518: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
(eval echo "\"\$as_me:4516: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
(eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
cat conftest.err >&5
(eval echo "\"\$as_me:4521: output\"" >&5)
(eval echo "\"\$as_me:4519: output\"" >&5)
cat conftest.out >&5
if $GREP 'External.*some_variable' conftest.out > /dev/null; then
lt_cv_nm_interface="MS dumpbin"
5723,7 → 5721,7
;;
*-*-irix6*)
# Find out which ABI we are using.
echo '#line 5726 "configure"' > conftest.$ac_ext
echo '#line 5724 "configure"' > conftest.$ac_ext
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
(eval $ac_compile) 2>&5
ac_status=$?
6985,11 → 6983,11
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
(eval echo "\"\$as_me:6988: $lt_compile\"" >&5)
(eval echo "\"\$as_me:6986: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
echo "$as_me:6992: \$? = $ac_status" >&5
echo "$as_me:6990: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
7324,11 → 7322,11
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
(eval echo "\"\$as_me:7327: $lt_compile\"" >&5)
(eval echo "\"\$as_me:7325: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
echo "$as_me:7331: \$? = $ac_status" >&5
echo "$as_me:7329: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
7429,11 → 7427,11
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
(eval echo "\"\$as_me:7432: $lt_compile\"" >&5)
(eval echo "\"\$as_me:7430: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
echo "$as_me:7436: \$? = $ac_status" >&5
echo "$as_me:7434: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
7484,11 → 7482,11
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
(eval echo "\"\$as_me:7487: $lt_compile\"" >&5)
(eval echo "\"\$as_me:7485: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
echo "$as_me:7491: \$? = $ac_status" >&5
echo "$as_me:7489: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
9867,7 → 9865,7
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
#line 9870 "configure"
#line 9868 "configure"
#include "confdefs.h"
 
#if HAVE_DLFCN_H
9963,7 → 9961,7
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
#line 9966 "configure"
#line 9964 "configure"
#include "confdefs.h"
 
#if HAVE_DLFCN_H
10874,9 → 10872,6
$as_echo "#define OR32_TYPES 1" >>confdefs.h
;;
 
dlx*) CPU_ARCH=dlx;
ARCH_ISA=DLX;;
 
*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unknown target architecture $target_cpu: OR32 ELF assumed" >&5
$as_echo "$as_me: WARNING: Unknown target architecture $target_cpu: OR32 ELF assumed" >&2;};
CPU_ARCH=or32;
12972,14 → 12967,8
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: complex" >&5
$as_echo "complex" >&6; }
;;
dynamic)
INCLUDES="-I\${top_srcdir}/cpu/$CPU_ARCH"
execution="2"
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: dynamic" >&5
$as_echo "dynamic" >&6; }
;;
*)
as_fn_error "\"execution must one of simple/complex/dynamic\"" "$LINENO" 5
as_fn_error "\"execution must one of simple/complex\"" "$LINENO" 5
;;
esac
 
13081,11 → 13070,6
#define COMPLEX_EXECUTION $execution == 1
_ACEOF
 
 
cat >>confdefs.h <<_ACEOF
#define DYNAMIC_EXECUTION $execution == 2
_ACEOF
 
if test x$execution = x1; then
GENERATE_NEEDED_TRUE=
GENERATE_NEEDED_FALSE='#'
13094,13 → 13078,6
GENERATE_NEEDED_FALSE=
fi
 
if test x$execution = x2; then
DYNAMIC_EXECUTION_TRUE=
DYNAMIC_EXECUTION_FALSE='#'
else
DYNAMIC_EXECUTION_TRUE='#'
DYNAMIC_EXECUTION_FALSE=
fi
 
 
 
13154,8 → 13131,6
 
# yuck. I don't know why I cannot just substitute $CPU_ARCH in the above
case "$CPU_ARCH" in
dlx) ac_config_files="$ac_config_files cpu/dlx/Makefile"
;;
*) ac_config_files="$ac_config_files cpu/or32/Makefile"
;;
esac
13297,10 → 13272,6
as_fn_error "conditional \"GENERATE_NEEDED\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
if test -z "${DYNAMIC_EXECUTION_TRUE}" && test -z "${DYNAMIC_EXECUTION_FALSE}"; then
as_fn_error "conditional \"DYNAMIC_EXECUTION\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
 
: ${CONFIG_STATUS=./config.status}
ac_write_fail=0
14182,7 → 14153,6
"testsuite/test-code/lib-upcalls/Makefile") CONFIG_FILES="$CONFIG_FILES testsuite/test-code/lib-upcalls/Makefile" ;;
"tick/Makefile") CONFIG_FILES="$CONFIG_FILES tick/Makefile" ;;
"vapi/Makefile") CONFIG_FILES="$CONFIG_FILES vapi/Makefile" ;;
"cpu/dlx/Makefile") CONFIG_FILES="$CONFIG_FILES cpu/dlx/Makefile" ;;
"cpu/or32/Makefile") CONFIG_FILES="$CONFIG_FILES cpu/or32/Makefile" ;;
 
*) as_fn_error "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
/autom4te.cache/output.1
1,5 → 1,5
@%:@! /bin/sh
@%:@ From configure.ac Id: configure.ac 532 2011-04-28 18:34:59Z jeremybennett using automake version AC_ACVERSION.
@%:@ From configure.ac Id: configure.ac 538 2011-05-09 14:42:56Z julius using automake version AC_ACVERSION.
@%:@ Guess values for system-dependent variables and create Makefiles.
@%:@ Generated by GNU Autoconf 2.64 for or1ksim 2011-04-28.
@%:@
775,8 → 775,6
BUILD_DIR
RUNTESTDEFAULTFLAGS
DEJAGNU
DYNAMIC_EXECUTION_FALSE
DYNAMIC_EXECUTION_TRUE
GENERATE_NEEDED_FALSE
GENERATE_NEEDED_TRUE
DEBUGFLAGS
1560,7 → 1558,7
--disable-dependency-tracking speeds up one-time build
--enable-dependency-tracking do not reject slow dependency extractors
--enable-profiling generate profiling code
--enable-execution Execution style to use (simple/complex/dynamic)
--enable-execution Execution style to use (simple/complex)
--enable-ethphy compiles sim with ethernet phy support
--enable-unsigned-xori l.xori immediate operand treated as unsigned
--enable-range-stats Specifies, whether we should do register accesses over time analysis.
10874,9 → 10872,6
$as_echo "@%:@define OR32_TYPES 1" >>confdefs.h
;;
 
dlx*) CPU_ARCH=dlx;
ARCH_ISA=DLX;;
 
*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unknown target architecture $target_cpu: OR32 ELF assumed" >&5
$as_echo "$as_me: WARNING: Unknown target architecture $target_cpu: OR32 ELF assumed" >&2;};
CPU_ARCH=or32;
12972,14 → 12967,8
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: complex" >&5
$as_echo "complex" >&6; }
;;
dynamic)
INCLUDES="-I\${top_srcdir}/cpu/$CPU_ARCH"
execution="2"
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: dynamic" >&5
$as_echo "dynamic" >&6; }
;;
*)
as_fn_error "\"execution must one of simple/complex/dynamic\"" "$LINENO" 5
as_fn_error "\"execution must one of simple/complex\"" "$LINENO" 5
;;
esac
13081,11 → 13070,6
@%:@define COMPLEX_EXECUTION $execution == 1
_ACEOF
 
cat >>confdefs.h <<_ACEOF
@%:@define DYNAMIC_EXECUTION $execution == 2
_ACEOF
if test x$execution = x1; then
GENERATE_NEEDED_TRUE=
GENERATE_NEEDED_FALSE='#'
13094,13 → 13078,6
GENERATE_NEEDED_FALSE=
fi
 
if test x$execution = x2; then
DYNAMIC_EXECUTION_TRUE=
DYNAMIC_EXECUTION_FALSE='#'
else
DYNAMIC_EXECUTION_TRUE='#'
DYNAMIC_EXECUTION_FALSE=
fi
 
 
 
13154,8 → 13131,6
 
# yuck. I don't know why I cannot just substitute $CPU_ARCH in the above
case "$CPU_ARCH" in
dlx) ac_config_files="$ac_config_files cpu/dlx/Makefile"
;;
*) ac_config_files="$ac_config_files cpu/or32/Makefile"
;;
esac
13297,10 → 13272,6
as_fn_error "conditional \"GENERATE_NEEDED\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
if test -z "${DYNAMIC_EXECUTION_TRUE}" && test -z "${DYNAMIC_EXECUTION_FALSE}"; then
as_fn_error "conditional \"DYNAMIC_EXECUTION\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
 
: ${CONFIG_STATUS=./config.status}
ac_write_fail=0
14182,7 → 14153,6
"testsuite/test-code/lib-upcalls/Makefile") CONFIG_FILES="$CONFIG_FILES testsuite/test-code/lib-upcalls/Makefile" ;;
"tick/Makefile") CONFIG_FILES="$CONFIG_FILES tick/Makefile" ;;
"vapi/Makefile") CONFIG_FILES="$CONFIG_FILES vapi/Makefile" ;;
"cpu/dlx/Makefile") CONFIG_FILES="$CONFIG_FILES cpu/dlx/Makefile" ;;
"cpu/or32/Makefile") CONFIG_FILES="$CONFIG_FILES cpu/or32/Makefile" ;;
 
*) as_fn_error "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
/autom4te.cache/traces.0
520,178 → 520,178
m4trace:configure.ac:58: -1- m4_pattern_allow([^OR32_TYPES$])
m4trace:configure.ac:58: -1- AH_OUTPUT([OR32_TYPES], [/* "The compiler uses the OR32 ELF types" */
@%:@undef OR32_TYPES])
m4trace:configure.ac:66: -1- AC_DEFINE_TRACE_LITERAL([OR32_TYPES])
m4trace:configure.ac:66: -1- m4_pattern_allow([^OR32_TYPES$])
m4trace:configure.ac:66: -1- AH_OUTPUT([OR32_TYPES], [/* "The compiler uses the OR32 ELF types" */
m4trace:configure.ac:63: -1- AC_DEFINE_TRACE_LITERAL([OR32_TYPES])
m4trace:configure.ac:63: -1- m4_pattern_allow([^OR32_TYPES$])
m4trace:configure.ac:63: -1- AH_OUTPUT([OR32_TYPES], [/* "The compiler uses the OR32 ELF types" */
@%:@undef OR32_TYPES])
m4trace:configure.ac:72: -1- AC_DEFINE_TRACE_LITERAL([OR32_LITTLE_ENDIAN])
m4trace:configure.ac:72: -1- m4_pattern_allow([^OR32_LITTLE_ENDIAN$])
m4trace:configure.ac:72: -1- AH_OUTPUT([OR32_LITTLE_ENDIAN], [/* "The OR32 is little endian" */
m4trace:configure.ac:69: -1- AC_DEFINE_TRACE_LITERAL([OR32_LITTLE_ENDIAN])
m4trace:configure.ac:69: -1- m4_pattern_allow([^OR32_LITTLE_ENDIAN$])
m4trace:configure.ac:69: -1- AH_OUTPUT([OR32_LITTLE_ENDIAN], [/* "The OR32 is little endian" */
@%:@undef OR32_LITTLE_ENDIAN])
m4trace:configure.ac:73: -1- AC_DEFINE_TRACE_LITERAL([OR32_BIG_ENDIAN])
m4trace:configure.ac:73: -1- m4_pattern_allow([^OR32_BIG_ENDIAN$])
m4trace:configure.ac:73: -1- AH_OUTPUT([OR32_BIG_ENDIAN], [/* "The OR32 is big endian" */
m4trace:configure.ac:70: -1- AC_DEFINE_TRACE_LITERAL([OR32_BIG_ENDIAN])
m4trace:configure.ac:70: -1- m4_pattern_allow([^OR32_BIG_ENDIAN$])
m4trace:configure.ac:70: -1- AH_OUTPUT([OR32_BIG_ENDIAN], [/* "The OR32 is big endian" */
@%:@undef OR32_BIG_ENDIAN])
m4trace:configure.ac:76: -1- AC_SUBST([CPU_ARCH])
m4trace:configure.ac:76: -1- AC_SUBST_TRACE([CPU_ARCH])
m4trace:configure.ac:76: -1- m4_pattern_allow([^CPU_ARCH$])
m4trace:configure.ac:82: -1- AC_SUBST([CCAS])
m4trace:configure.ac:82: -1- AC_SUBST_TRACE([CCAS])
m4trace:configure.ac:82: -1- m4_pattern_allow([^CCAS$])
m4trace:configure.ac:82: -1- AC_SUBST([CCASFLAGS])
m4trace:configure.ac:82: -1- AC_SUBST_TRACE([CCASFLAGS])
m4trace:configure.ac:82: -1- m4_pattern_allow([^CCASFLAGS$])
m4trace:configure.ac:82: -1- AC_SUBST([CCASDEPMODE], [depmode=$am_cv_CCAS_dependencies_compiler_type])
m4trace:configure.ac:82: -1- AC_SUBST_TRACE([CCASDEPMODE])
m4trace:configure.ac:82: -1- m4_pattern_allow([^CCASDEPMODE$])
m4trace:configure.ac:82: -1- AM_CONDITIONAL([am__fastdepCCAS], [
m4trace:configure.ac:73: -1- AC_SUBST([CPU_ARCH])
m4trace:configure.ac:73: -1- AC_SUBST_TRACE([CPU_ARCH])
m4trace:configure.ac:73: -1- m4_pattern_allow([^CPU_ARCH$])
m4trace:configure.ac:79: -1- AC_SUBST([CCAS])
m4trace:configure.ac:79: -1- AC_SUBST_TRACE([CCAS])
m4trace:configure.ac:79: -1- m4_pattern_allow([^CCAS$])
m4trace:configure.ac:79: -1- AC_SUBST([CCASFLAGS])
m4trace:configure.ac:79: -1- AC_SUBST_TRACE([CCASFLAGS])
m4trace:configure.ac:79: -1- m4_pattern_allow([^CCASFLAGS$])
m4trace:configure.ac:79: -1- AC_SUBST([CCASDEPMODE], [depmode=$am_cv_CCAS_dependencies_compiler_type])
m4trace:configure.ac:79: -1- AC_SUBST_TRACE([CCASDEPMODE])
m4trace:configure.ac:79: -1- m4_pattern_allow([^CCASDEPMODE$])
m4trace:configure.ac:79: -1- AM_CONDITIONAL([am__fastdepCCAS], [
test "x$enable_dependency_tracking" != xno \
&& test "$am_cv_CCAS_dependencies_compiler_type" = gcc3])
m4trace:configure.ac:82: -1- AC_SUBST([am__fastdepCCAS_TRUE])
m4trace:configure.ac:82: -1- AC_SUBST_TRACE([am__fastdepCCAS_TRUE])
m4trace:configure.ac:82: -1- m4_pattern_allow([^am__fastdepCCAS_TRUE$])
m4trace:configure.ac:82: -1- AC_SUBST([am__fastdepCCAS_FALSE])
m4trace:configure.ac:82: -1- AC_SUBST_TRACE([am__fastdepCCAS_FALSE])
m4trace:configure.ac:82: -1- m4_pattern_allow([^am__fastdepCCAS_FALSE$])
m4trace:configure.ac:82: -1- _AM_SUBST_NOTMAKE([am__fastdepCCAS_TRUE])
m4trace:configure.ac:82: -1- _AM_SUBST_NOTMAKE([am__fastdepCCAS_FALSE])
m4trace:configure.ac:84: -1- AC_SUBST([CC])
m4trace:configure.ac:84: -1- AC_SUBST_TRACE([CC])
m4trace:configure.ac:84: -1- m4_pattern_allow([^CC$])
m4trace:configure.ac:84: -1- AC_SUBST([CFLAGS])
m4trace:configure.ac:84: -1- AC_SUBST_TRACE([CFLAGS])
m4trace:configure.ac:84: -1- m4_pattern_allow([^CFLAGS$])
m4trace:configure.ac:84: -1- AC_SUBST([LDFLAGS])
m4trace:configure.ac:84: -1- AC_SUBST_TRACE([LDFLAGS])
m4trace:configure.ac:84: -1- m4_pattern_allow([^LDFLAGS$])
m4trace:configure.ac:84: -1- AC_SUBST([LIBS])
m4trace:configure.ac:84: -1- AC_SUBST_TRACE([LIBS])
m4trace:configure.ac:84: -1- m4_pattern_allow([^LIBS$])
m4trace:configure.ac:84: -1- AC_SUBST([CPPFLAGS])
m4trace:configure.ac:84: -1- AC_SUBST_TRACE([CPPFLAGS])
m4trace:configure.ac:84: -1- m4_pattern_allow([^CPPFLAGS$])
m4trace:configure.ac:84: -1- AC_SUBST([CC])
m4trace:configure.ac:84: -1- AC_SUBST_TRACE([CC])
m4trace:configure.ac:84: -1- m4_pattern_allow([^CC$])
m4trace:configure.ac:84: -1- AC_SUBST([CC])
m4trace:configure.ac:84: -1- AC_SUBST_TRACE([CC])
m4trace:configure.ac:84: -1- m4_pattern_allow([^CC$])
m4trace:configure.ac:84: -1- AC_SUBST([CC])
m4trace:configure.ac:84: -1- AC_SUBST_TRACE([CC])
m4trace:configure.ac:84: -1- m4_pattern_allow([^CC$])
m4trace:configure.ac:84: -1- AC_SUBST([CC])
m4trace:configure.ac:84: -1- AC_SUBST_TRACE([CC])
m4trace:configure.ac:84: -1- m4_pattern_allow([^CC$])
m4trace:configure.ac:84: -1- AC_SUBST([ac_ct_CC])
m4trace:configure.ac:84: -1- AC_SUBST_TRACE([ac_ct_CC])
m4trace:configure.ac:84: -1- m4_pattern_allow([^ac_ct_CC$])
m4trace:configure.ac:85: -1- AM_PROG_CC_C_O
m4trace:configure.ac:85: -1- AC_DEFINE_TRACE_LITERAL([NO_MINUS_C_MINUS_O])
m4trace:configure.ac:85: -1- m4_pattern_allow([^NO_MINUS_C_MINUS_O$])
m4trace:configure.ac:85: -1- AH_OUTPUT([NO_MINUS_C_MINUS_O], [/* Define to 1 if your C compiler doesn\'t accept -c and -o together. */
m4trace:configure.ac:79: -1- AC_SUBST([am__fastdepCCAS_TRUE])
m4trace:configure.ac:79: -1- AC_SUBST_TRACE([am__fastdepCCAS_TRUE])
m4trace:configure.ac:79: -1- m4_pattern_allow([^am__fastdepCCAS_TRUE$])
m4trace:configure.ac:79: -1- AC_SUBST([am__fastdepCCAS_FALSE])
m4trace:configure.ac:79: -1- AC_SUBST_TRACE([am__fastdepCCAS_FALSE])
m4trace:configure.ac:79: -1- m4_pattern_allow([^am__fastdepCCAS_FALSE$])
m4trace:configure.ac:79: -1- _AM_SUBST_NOTMAKE([am__fastdepCCAS_TRUE])
m4trace:configure.ac:79: -1- _AM_SUBST_NOTMAKE([am__fastdepCCAS_FALSE])
m4trace:configure.ac:81: -1- AC_SUBST([CC])
m4trace:configure.ac:81: -1- AC_SUBST_TRACE([CC])
m4trace:configure.ac:81: -1- m4_pattern_allow([^CC$])
m4trace:configure.ac:81: -1- AC_SUBST([CFLAGS])
m4trace:configure.ac:81: -1- AC_SUBST_TRACE([CFLAGS])
m4trace:configure.ac:81: -1- m4_pattern_allow([^CFLAGS$])
m4trace:configure.ac:81: -1- AC_SUBST([LDFLAGS])
m4trace:configure.ac:81: -1- AC_SUBST_TRACE([LDFLAGS])
m4trace:configure.ac:81: -1- m4_pattern_allow([^LDFLAGS$])
m4trace:configure.ac:81: -1- AC_SUBST([LIBS])
m4trace:configure.ac:81: -1- AC_SUBST_TRACE([LIBS])
m4trace:configure.ac:81: -1- m4_pattern_allow([^LIBS$])
m4trace:configure.ac:81: -1- AC_SUBST([CPPFLAGS])
m4trace:configure.ac:81: -1- AC_SUBST_TRACE([CPPFLAGS])
m4trace:configure.ac:81: -1- m4_pattern_allow([^CPPFLAGS$])
m4trace:configure.ac:81: -1- AC_SUBST([CC])
m4trace:configure.ac:81: -1- AC_SUBST_TRACE([CC])
m4trace:configure.ac:81: -1- m4_pattern_allow([^CC$])
m4trace:configure.ac:81: -1- AC_SUBST([CC])
m4trace:configure.ac:81: -1- AC_SUBST_TRACE([CC])
m4trace:configure.ac:81: -1- m4_pattern_allow([^CC$])
m4trace:configure.ac:81: -1- AC_SUBST([CC])
m4trace:configure.ac:81: -1- AC_SUBST_TRACE([CC])
m4trace:configure.ac:81: -1- m4_pattern_allow([^CC$])
m4trace:configure.ac:81: -1- AC_SUBST([CC])
m4trace:configure.ac:81: -1- AC_SUBST_TRACE([CC])
m4trace:configure.ac:81: -1- m4_pattern_allow([^CC$])
m4trace:configure.ac:81: -1- AC_SUBST([ac_ct_CC])
m4trace:configure.ac:81: -1- AC_SUBST_TRACE([ac_ct_CC])
m4trace:configure.ac:81: -1- m4_pattern_allow([^ac_ct_CC$])
m4trace:configure.ac:82: -1- AM_PROG_CC_C_O
m4trace:configure.ac:82: -1- AC_DEFINE_TRACE_LITERAL([NO_MINUS_C_MINUS_O])
m4trace:configure.ac:82: -1- m4_pattern_allow([^NO_MINUS_C_MINUS_O$])
m4trace:configure.ac:82: -1- AH_OUTPUT([NO_MINUS_C_MINUS_O], [/* Define to 1 if your C compiler doesn\'t accept -c and -o together. */
@%:@undef NO_MINUS_C_MINUS_O])
m4trace:configure.ac:85: -1- AC_REQUIRE_AUX_FILE([compile])
m4trace:configure.ac:87: -1- AC_SUBST([SET_MAKE])
m4trace:configure.ac:87: -1- AC_SUBST_TRACE([SET_MAKE])
m4trace:configure.ac:87: -1- m4_pattern_allow([^SET_MAKE$])
m4trace:configure.ac:90: -1- AC_SUBST([AR])
m4trace:configure.ac:90: -1- AC_SUBST_TRACE([AR])
m4trace:configure.ac:90: -1- m4_pattern_allow([^AR$])
m4trace:configure.ac:96: -1- _m4_warn([obsolete], [The macro `AC_TYPE_SIGNAL' is obsolete.
m4trace:configure.ac:82: -1- AC_REQUIRE_AUX_FILE([compile])
m4trace:configure.ac:84: -1- AC_SUBST([SET_MAKE])
m4trace:configure.ac:84: -1- AC_SUBST_TRACE([SET_MAKE])
m4trace:configure.ac:84: -1- m4_pattern_allow([^SET_MAKE$])
m4trace:configure.ac:87: -1- AC_SUBST([AR])
m4trace:configure.ac:87: -1- AC_SUBST_TRACE([AR])
m4trace:configure.ac:87: -1- m4_pattern_allow([^AR$])
m4trace:configure.ac:93: -1- _m4_warn([obsolete], [The macro `AC_TYPE_SIGNAL' is obsolete.
You should run autoupdate.], [../../lib/autoconf/types.m4:754: AC_TYPE_SIGNAL is expanded from...
configure.ac:96: the top level])
m4trace:configure.ac:96: -1- AC_DEFINE_TRACE_LITERAL([RETSIGTYPE])
m4trace:configure.ac:96: -1- m4_pattern_allow([^RETSIGTYPE$])
m4trace:configure.ac:96: -1- AH_OUTPUT([RETSIGTYPE], [/* Define as the return type of signal handlers (`int\' or `void\'). */
configure.ac:93: the top level])
m4trace:configure.ac:93: -1- AC_DEFINE_TRACE_LITERAL([RETSIGTYPE])
m4trace:configure.ac:93: -1- m4_pattern_allow([^RETSIGTYPE$])
m4trace:configure.ac:93: -1- AH_OUTPUT([RETSIGTYPE], [/* Define as the return type of signal handlers (`int\' or `void\'). */
@%:@undef RETSIGTYPE])
m4trace:configure.ac:97: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> header file. */
m4trace:configure.ac:94: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> header file. */
@%:@undef HAVE_UNISTD_H])
m4trace:configure.ac:97: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
m4trace:configure.ac:94: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
@%:@undef HAVE_STDLIB_H])
m4trace:configure.ac:97: -1- AH_OUTPUT([HAVE_STDARG_H], [/* Define to 1 if you have the <stdarg.h> header file. */
m4trace:configure.ac:94: -1- AH_OUTPUT([HAVE_STDARG_H], [/* Define to 1 if you have the <stdarg.h> header file. */
@%:@undef HAVE_STDARG_H])
m4trace:configure.ac:97: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the <string.h> header file. */
m4trace:configure.ac:94: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the <string.h> header file. */
@%:@undef HAVE_STRING_H])
m4trace:configure.ac:97: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the <strings.h> header file. */
m4trace:configure.ac:94: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the <strings.h> header file. */
@%:@undef HAVE_STRINGS_H])
m4trace:configure.ac:97: -1- AH_OUTPUT([HAVE_SYS_PTEM_H], [/* Define to 1 if you have the <sys/ptem.h> header file. */
m4trace:configure.ac:94: -1- AH_OUTPUT([HAVE_SYS_PTEM_H], [/* Define to 1 if you have the <sys/ptem.h> header file. */
@%:@undef HAVE_SYS_PTEM_H])
m4trace:configure.ac:97: -1- AH_OUTPUT([HAVE_SYS_PTE_H], [/* Define to 1 if you have the <sys/pte.h> header file. */
m4trace:configure.ac:94: -1- AH_OUTPUT([HAVE_SYS_PTE_H], [/* Define to 1 if you have the <sys/pte.h> header file. */
@%:@undef HAVE_SYS_PTE_H])
m4trace:configure.ac:97: -1- AH_OUTPUT([HAVE_SYS_STREAM_H], [/* Define to 1 if you have the <sys/stream.h> header file. */
m4trace:configure.ac:94: -1- AH_OUTPUT([HAVE_SYS_STREAM_H], [/* Define to 1 if you have the <sys/stream.h> header file. */
@%:@undef HAVE_SYS_STREAM_H])
m4trace:configure.ac:97: -1- AH_OUTPUT([HAVE_SYS_STROPTS_H], [/* Define to 1 if you have the <sys/stropts.h> header file. */
m4trace:configure.ac:94: -1- AH_OUTPUT([HAVE_SYS_STROPTS_H], [/* Define to 1 if you have the <sys/stropts.h> header file. */
@%:@undef HAVE_SYS_STROPTS_H])
m4trace:configure.ac:97: -1- AH_OUTPUT([HAVE_SYS_SELECT_H], [/* Define to 1 if you have the <sys/select.h> header file. */
m4trace:configure.ac:94: -1- AH_OUTPUT([HAVE_SYS_SELECT_H], [/* Define to 1 if you have the <sys/select.h> header file. */
@%:@undef HAVE_SYS_SELECT_H])
m4trace:configure.ac:97: -1- AH_OUTPUT([HAVE_TERMCAP_H], [/* Define to 1 if you have the <termcap.h> header file. */
m4trace:configure.ac:94: -1- AH_OUTPUT([HAVE_TERMCAP_H], [/* Define to 1 if you have the <termcap.h> header file. */
@%:@undef HAVE_TERMCAP_H])
m4trace:configure.ac:97: -1- AH_OUTPUT([HAVE_TERMIOS_H], [/* Define to 1 if you have the <termios.h> header file. */
m4trace:configure.ac:94: -1- AH_OUTPUT([HAVE_TERMIOS_H], [/* Define to 1 if you have the <termios.h> header file. */
@%:@undef HAVE_TERMIOS_H])
m4trace:configure.ac:97: -1- AH_OUTPUT([HAVE_TERMIO_H], [/* Define to 1 if you have the <termio.h> header file. */
m4trace:configure.ac:94: -1- AH_OUTPUT([HAVE_TERMIO_H], [/* Define to 1 if you have the <termio.h> header file. */
@%:@undef HAVE_TERMIO_H])
m4trace:configure.ac:97: -1- AH_OUTPUT([HAVE_SYS_FILE_H], [/* Define to 1 if you have the <sys/file.h> header file. */
m4trace:configure.ac:94: -1- AH_OUTPUT([HAVE_SYS_FILE_H], [/* Define to 1 if you have the <sys/file.h> header file. */
@%:@undef HAVE_SYS_FILE_H])
m4trace:configure.ac:97: -1- AH_OUTPUT([HAVE_LOCALE_H], [/* Define to 1 if you have the <locale.h> header file. */
m4trace:configure.ac:94: -1- AH_OUTPUT([HAVE_LOCALE_H], [/* Define to 1 if you have the <locale.h> header file. */
@%:@undef HAVE_LOCALE_H])
m4trace:configure.ac:97: -1- AH_OUTPUT([HAVE_GETOPT_H], [/* Define to 1 if you have the <getopt.h> header file. */
m4trace:configure.ac:94: -1- AH_OUTPUT([HAVE_GETOPT_H], [/* Define to 1 if you have the <getopt.h> header file. */
@%:@undef HAVE_GETOPT_H])
m4trace:configure.ac:97: -1- AH_OUTPUT([HAVE_NET_ETHERNET_H], [/* Define to 1 if you have the <net/ethernet.h> header file. */
m4trace:configure.ac:94: -1- AH_OUTPUT([HAVE_NET_ETHERNET_H], [/* Define to 1 if you have the <net/ethernet.h> header file. */
@%:@undef HAVE_NET_ETHERNET_H])
m4trace:configure.ac:97: -1- AH_OUTPUT([HAVE_SYS_ETHERNET_H], [/* Define to 1 if you have the <sys/ethernet.h> header file. */
m4trace:configure.ac:94: -1- AH_OUTPUT([HAVE_SYS_ETHERNET_H], [/* Define to 1 if you have the <sys/ethernet.h> header file. */
@%:@undef HAVE_SYS_ETHERNET_H])
m4trace:configure.ac:97: -1- AH_OUTPUT([HAVE_MALLOC_H], [/* Define to 1 if you have the <malloc.h> header file. */
m4trace:configure.ac:94: -1- AH_OUTPUT([HAVE_MALLOC_H], [/* Define to 1 if you have the <malloc.h> header file. */
@%:@undef HAVE_MALLOC_H])
m4trace:configure.ac:97: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the <inttypes.h> header file. */
m4trace:configure.ac:94: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the <inttypes.h> header file. */
@%:@undef HAVE_INTTYPES_H])
m4trace:configure.ac:97: -1- AH_OUTPUT([HAVE_LIBINTL_H], [/* Define to 1 if you have the <libintl.h> header file. */
m4trace:configure.ac:94: -1- AH_OUTPUT([HAVE_LIBINTL_H], [/* Define to 1 if you have the <libintl.h> header file. */
@%:@undef HAVE_LIBINTL_H])
m4trace:configure.ac:97: -1- AH_OUTPUT([HAVE_LIMITS_H], [/* Define to 1 if you have the <limits.h> header file. */
m4trace:configure.ac:94: -1- AH_OUTPUT([HAVE_LIMITS_H], [/* Define to 1 if you have the <limits.h> header file. */
@%:@undef HAVE_LIMITS_H])
m4trace:configure.ac:97: -1- AH_OUTPUT([HAVE_LINUX_IF_TUN_H], [/* Define to 1 if you have the <linux/if_tun.h> header file. */
m4trace:configure.ac:94: -1- AH_OUTPUT([HAVE_LINUX_IF_TUN_H], [/* Define to 1 if you have the <linux/if_tun.h> header file. */
@%:@undef HAVE_LINUX_IF_TUN_H])
m4trace:configure.ac:102: -1- AH_OUTPUT([HAVE_STRCASECMP], [/* Define to 1 if you have the `strcasecmp\' function. */
m4trace:configure.ac:99: -1- AH_OUTPUT([HAVE_STRCASECMP], [/* Define to 1 if you have the `strcasecmp\' function. */
@%:@undef HAVE_STRCASECMP])
m4trace:configure.ac:102: -1- AH_OUTPUT([HAVE_SELECT], [/* Define to 1 if you have the `select\' function. */
m4trace:configure.ac:99: -1- AH_OUTPUT([HAVE_SELECT], [/* Define to 1 if you have the `select\' function. */
@%:@undef HAVE_SELECT])
m4trace:configure.ac:102: -1- AH_OUTPUT([HAVE_SETENV], [/* Define to 1 if you have the `setenv\' function. */
m4trace:configure.ac:99: -1- AH_OUTPUT([HAVE_SETENV], [/* Define to 1 if you have the `setenv\' function. */
@%:@undef HAVE_SETENV])
m4trace:configure.ac:102: -1- AH_OUTPUT([HAVE_PUTENV], [/* Define to 1 if you have the `putenv\' function. */
m4trace:configure.ac:99: -1- AH_OUTPUT([HAVE_PUTENV], [/* Define to 1 if you have the `putenv\' function. */
@%:@undef HAVE_PUTENV])
m4trace:configure.ac:102: -1- AH_OUTPUT([HAVE_TCGETATTR], [/* Define to 1 if you have the `tcgetattr\' function. */
m4trace:configure.ac:99: -1- AH_OUTPUT([HAVE_TCGETATTR], [/* Define to 1 if you have the `tcgetattr\' function. */
@%:@undef HAVE_TCGETATTR])
m4trace:configure.ac:102: -1- AH_OUTPUT([HAVE_SETLOCALE], [/* Define to 1 if you have the `setlocale\' function. */
m4trace:configure.ac:99: -1- AH_OUTPUT([HAVE_SETLOCALE], [/* Define to 1 if you have the `setlocale\' function. */
@%:@undef HAVE_SETLOCALE])
m4trace:configure.ac:102: -1- AH_OUTPUT([HAVE_LSTAT], [/* Define to 1 if you have the `lstat\' function. */
m4trace:configure.ac:99: -1- AH_OUTPUT([HAVE_LSTAT], [/* Define to 1 if you have the `lstat\' function. */
@%:@undef HAVE_LSTAT])
m4trace:configure.ac:103: -1- AH_OUTPUT([HAVE_GRANTPT], [/* Define to 1 if you have the `grantpt\' function. */
m4trace:configure.ac:100: -1- AH_OUTPUT([HAVE_GRANTPT], [/* Define to 1 if you have the `grantpt\' function. */
@%:@undef HAVE_GRANTPT])
m4trace:configure.ac:103: -1- AH_OUTPUT([HAVE_UNLOCKPT], [/* Define to 1 if you have the `unlockpt\' function. */
m4trace:configure.ac:100: -1- AH_OUTPUT([HAVE_UNLOCKPT], [/* Define to 1 if you have the `unlockpt\' function. */
@%:@undef HAVE_UNLOCKPT])
m4trace:configure.ac:103: -1- AH_OUTPUT([HAVE_PTSNAME], [/* Define to 1 if you have the `ptsname\' function. */
m4trace:configure.ac:100: -1- AH_OUTPUT([HAVE_PTSNAME], [/* Define to 1 if you have the `ptsname\' function. */
@%:@undef HAVE_PTSNAME])
m4trace:configure.ac:103: -1- AH_OUTPUT([HAVE_ON_EXIT], [/* Define to 1 if you have the `on_exit\' function. */
m4trace:configure.ac:100: -1- AH_OUTPUT([HAVE_ON_EXIT], [/* Define to 1 if you have the `on_exit\' function. */
@%:@undef HAVE_ON_EXIT])
m4trace:configure.ac:104: -1- AH_OUTPUT([HAVE_BASENAME], [/* Define to 1 if you have the `basename\' function. */
m4trace:configure.ac:101: -1- AH_OUTPUT([HAVE_BASENAME], [/* Define to 1 if you have the `basename\' function. */
@%:@undef HAVE_BASENAME])
m4trace:configure.ac:104: -1- AC_DEFINE_TRACE_LITERAL([HAVE_BASENAME])
m4trace:configure.ac:104: -1- m4_pattern_allow([^HAVE_BASENAME$])
m4trace:configure.ac:105: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRCOLL])
m4trace:configure.ac:105: -1- m4_pattern_allow([^HAVE_STRCOLL$])
m4trace:configure.ac:105: -1- AH_OUTPUT([HAVE_STRCOLL], [/* Define to 1 if you have the `strcoll\' function and it is properly defined.
m4trace:configure.ac:101: -1- AC_DEFINE_TRACE_LITERAL([HAVE_BASENAME])
m4trace:configure.ac:101: -1- m4_pattern_allow([^HAVE_BASENAME$])
m4trace:configure.ac:102: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRCOLL])
m4trace:configure.ac:102: -1- m4_pattern_allow([^HAVE_STRCOLL$])
m4trace:configure.ac:102: -1- AH_OUTPUT([HAVE_STRCOLL], [/* Define to 1 if you have the `strcoll\' function and it is properly defined.
*/
@%:@undef HAVE_STRCOLL])
m4trace:configure.ac:106: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_I_PUSH])
m4trace:configure.ac:106: -1- m4_pattern_allow([^HAVE_DECL_I_PUSH$])
m4trace:configure.ac:106: -1- AH_OUTPUT([HAVE_DECL_I_PUSH], [/* Define to 1 if you have the declaration of `I_PUSH\', and to 0 if you don\'t.
m4trace:configure.ac:103: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_I_PUSH])
m4trace:configure.ac:103: -1- m4_pattern_allow([^HAVE_DECL_I_PUSH$])
m4trace:configure.ac:103: -1- AH_OUTPUT([HAVE_DECL_I_PUSH], [/* Define to 1 if you have the declaration of `I_PUSH\', and to 0 if you don\'t.
*/
@%:@undef HAVE_DECL_I_PUSH])
m4trace:configure.ac:106: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_RL_EVENT_HOOK])
m4trace:configure.ac:106: -1- m4_pattern_allow([^HAVE_DECL_RL_EVENT_HOOK$])
m4trace:configure.ac:106: -1- AH_OUTPUT([HAVE_DECL_RL_EVENT_HOOK], [/* Define to 1 if you have the declaration of `rl_event_hook\', and to 0 if you
m4trace:configure.ac:103: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_RL_EVENT_HOOK])
m4trace:configure.ac:103: -1- m4_pattern_allow([^HAVE_DECL_RL_EVENT_HOOK$])
m4trace:configure.ac:103: -1- AH_OUTPUT([HAVE_DECL_RL_EVENT_HOOK], [/* Define to 1 if you have the declaration of `rl_event_hook\', and to 0 if you
don\'t. */
@%:@undef HAVE_DECL_RL_EVENT_HOOK])
m4trace:configure.ac:108: -1- AH_OUTPUT([WORDS_BIGENDIAN], [/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
m4trace:configure.ac:105: -1- AH_OUTPUT([WORDS_BIGENDIAN], [/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
significant byte first (like Motorola and SPARC, unlike Intel). */
#if defined AC_APPLE_UNIVERSAL_BUILD
# if defined __BIG_ENDIAN__
702,257 → 702,244
# undef WORDS_BIGENDIAN
# endif
#endif])
m4trace:configure.ac:108: -1- AC_DEFINE_TRACE_LITERAL([WORDS_BIGENDIAN])
m4trace:configure.ac:108: -1- m4_pattern_allow([^WORDS_BIGENDIAN$])
m4trace:configure.ac:108: -1- AC_DEFINE_TRACE_LITERAL([AC_APPLE_UNIVERSAL_BUILD])
m4trace:configure.ac:108: -1- m4_pattern_allow([^AC_APPLE_UNIVERSAL_BUILD$])
m4trace:configure.ac:108: -1- AH_OUTPUT([AC_APPLE_UNIVERSAL_BUILD], [/* Define if building universal (internal helper macro) */
m4trace:configure.ac:105: -1- AC_DEFINE_TRACE_LITERAL([WORDS_BIGENDIAN])
m4trace:configure.ac:105: -1- m4_pattern_allow([^WORDS_BIGENDIAN$])
m4trace:configure.ac:105: -1- AC_DEFINE_TRACE_LITERAL([AC_APPLE_UNIVERSAL_BUILD])
m4trace:configure.ac:105: -1- m4_pattern_allow([^AC_APPLE_UNIVERSAL_BUILD$])
m4trace:configure.ac:105: -1- AH_OUTPUT([AC_APPLE_UNIVERSAL_BUILD], [/* Define if building universal (internal helper macro) */
@%:@undef AC_APPLE_UNIVERSAL_BUILD])
m4trace:configure.ac:114: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRNDUP])
m4trace:configure.ac:114: -1- m4_pattern_allow([^HAVE_STRNDUP$])
m4trace:configure.ac:114: -1- AH_OUTPUT([HAVE_STRNDUP], [/* "Whether the strndup function is available" */
m4trace:configure.ac:111: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRNDUP])
m4trace:configure.ac:111: -1- m4_pattern_allow([^HAVE_STRNDUP$])
m4trace:configure.ac:111: -1- AH_OUTPUT([HAVE_STRNDUP], [/* "Whether the strndup function is available" */
@%:@undef HAVE_STRNDUP])
m4trace:configure.ac:128: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRCASECMP])
m4trace:configure.ac:128: -1- m4_pattern_allow([^HAVE_STRCASECMP$])
m4trace:configure.ac:128: -1- AH_OUTPUT([HAVE_STRCASECMP], [/* "Whether the strcasecmp function is available" */
m4trace:configure.ac:125: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRCASECMP])
m4trace:configure.ac:125: -1- m4_pattern_allow([^HAVE_STRCASECMP$])
m4trace:configure.ac:125: -1- AH_OUTPUT([HAVE_STRCASECMP], [/* "Whether the strcasecmp function is available" */
@%:@undef HAVE_STRCASECMP])
m4trace:configure.ac:143: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ISBLANK])
m4trace:configure.ac:143: -1- m4_pattern_allow([^HAVE_ISBLANK$])
m4trace:configure.ac:143: -1- AH_OUTPUT([HAVE_ISBLANK], [/* "Whether the isblank function is available" */
m4trace:configure.ac:140: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ISBLANK])
m4trace:configure.ac:140: -1- m4_pattern_allow([^HAVE_ISBLANK$])
m4trace:configure.ac:140: -1- AH_OUTPUT([HAVE_ISBLANK], [/* "Whether the isblank function is available" */
@%:@undef HAVE_ISBLANK])
m4trace:configure.ac:154: -1- AC_DEFINE_TRACE_LITERAL([size_t])
m4trace:configure.ac:154: -1- m4_pattern_allow([^size_t$])
m4trace:configure.ac:154: -1- AH_OUTPUT([size_t], [/* Define to `unsigned int\' if <sys/types.h> does not define. */
m4trace:configure.ac:151: -1- AC_DEFINE_TRACE_LITERAL([size_t])
m4trace:configure.ac:151: -1- m4_pattern_allow([^size_t$])
m4trace:configure.ac:151: -1- AH_OUTPUT([size_t], [/* Define to `unsigned int\' if <sys/types.h> does not define. */
@%:@undef size_t])
m4trace:configure.ac:155: -1- AC_DEFINE_TRACE_LITERAL([TM_IN_SYS_TIME])
m4trace:configure.ac:155: -1- m4_pattern_allow([^TM_IN_SYS_TIME$])
m4trace:configure.ac:155: -1- AH_OUTPUT([TM_IN_SYS_TIME], [/* Define to 1 if your <sys/time.h> declares `struct tm\'. */
m4trace:configure.ac:152: -1- AC_DEFINE_TRACE_LITERAL([TM_IN_SYS_TIME])
m4trace:configure.ac:152: -1- m4_pattern_allow([^TM_IN_SYS_TIME$])
m4trace:configure.ac:152: -1- AH_OUTPUT([TM_IN_SYS_TIME], [/* Define to 1 if your <sys/time.h> declares `struct tm\'. */
@%:@undef TM_IN_SYS_TIME])
m4trace:configure.ac:158: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
m4trace:configure.ac:155: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
@%:@undef HAVE_STDLIB_H])
m4trace:configure.ac:158: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STDLIB_H])
m4trace:configure.ac:158: -1- m4_pattern_allow([^HAVE_STDLIB_H$])
m4trace:configure.ac:158: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MALLOC])
m4trace:configure.ac:158: -1- m4_pattern_allow([^HAVE_MALLOC$])
m4trace:configure.ac:158: -1- AH_OUTPUT([HAVE_MALLOC], [/* Define to 1 if your system has a GNU libc compatible `malloc\' function, and
m4trace:configure.ac:155: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STDLIB_H])
m4trace:configure.ac:155: -1- m4_pattern_allow([^HAVE_STDLIB_H$])
m4trace:configure.ac:155: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MALLOC])
m4trace:configure.ac:155: -1- m4_pattern_allow([^HAVE_MALLOC$])
m4trace:configure.ac:155: -1- AH_OUTPUT([HAVE_MALLOC], [/* Define to 1 if your system has a GNU libc compatible `malloc\' function, and
to 0 otherwise. */
@%:@undef HAVE_MALLOC])
m4trace:configure.ac:158: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MALLOC])
m4trace:configure.ac:158: -1- m4_pattern_allow([^HAVE_MALLOC$])
m4trace:configure.ac:158: -1- AC_LIBSOURCE([malloc.c])
m4trace:configure.ac:158: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS malloc.$ac_objext"])
m4trace:configure.ac:158: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
m4trace:configure.ac:158: -1- m4_pattern_allow([^LIB@&t@OBJS$])
m4trace:configure.ac:158: -1- AC_DEFINE_TRACE_LITERAL([malloc])
m4trace:configure.ac:158: -1- m4_pattern_allow([^malloc$])
m4trace:configure.ac:158: -1- AH_OUTPUT([malloc], [/* Define to rpl_malloc if the replacement function should be used. */
m4trace:configure.ac:155: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MALLOC])
m4trace:configure.ac:155: -1- m4_pattern_allow([^HAVE_MALLOC$])
m4trace:configure.ac:155: -1- AC_LIBSOURCE([malloc.c])
m4trace:configure.ac:155: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS malloc.$ac_objext"])
m4trace:configure.ac:155: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
m4trace:configure.ac:155: -1- m4_pattern_allow([^LIB@&t@OBJS$])
m4trace:configure.ac:155: -1- AC_DEFINE_TRACE_LITERAL([malloc])
m4trace:configure.ac:155: -1- m4_pattern_allow([^malloc$])
m4trace:configure.ac:155: -1- AH_OUTPUT([malloc], [/* Define to rpl_malloc if the replacement function should be used. */
@%:@undef malloc])
m4trace:configure.ac:159: -1- AH_OUTPUT([HAVE_STRFTIME], [/* Define to 1 if you have the `strftime\' function. */
m4trace:configure.ac:156: -1- AH_OUTPUT([HAVE_STRFTIME], [/* Define to 1 if you have the `strftime\' function. */
@%:@undef HAVE_STRFTIME])
m4trace:configure.ac:159: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRFTIME])
m4trace:configure.ac:159: -1- m4_pattern_allow([^HAVE_STRFTIME$])
m4trace:configure.ac:159: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRFTIME])
m4trace:configure.ac:159: -1- m4_pattern_allow([^HAVE_STRFTIME$])
m4trace:configure.ac:160: -1- AC_SUBST([POW_LIB])
m4trace:configure.ac:160: -1- AC_SUBST_TRACE([POW_LIB])
m4trace:configure.ac:160: -1- m4_pattern_allow([^POW_LIB$])
m4trace:configure.ac:160: -1- AC_LIBSOURCE([strtod.c])
m4trace:configure.ac:160: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS strtod.$ac_objext"])
m4trace:configure.ac:160: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
m4trace:configure.ac:160: -1- m4_pattern_allow([^LIB@&t@OBJS$])
m4trace:configure.ac:161: -1- AH_OUTPUT([HAVE_BZERO], [/* Define to 1 if you have the `bzero\' function. */
m4trace:configure.ac:156: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRFTIME])
m4trace:configure.ac:156: -1- m4_pattern_allow([^HAVE_STRFTIME$])
m4trace:configure.ac:156: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRFTIME])
m4trace:configure.ac:156: -1- m4_pattern_allow([^HAVE_STRFTIME$])
m4trace:configure.ac:157: -1- AC_SUBST([POW_LIB])
m4trace:configure.ac:157: -1- AC_SUBST_TRACE([POW_LIB])
m4trace:configure.ac:157: -1- m4_pattern_allow([^POW_LIB$])
m4trace:configure.ac:157: -1- AC_LIBSOURCE([strtod.c])
m4trace:configure.ac:157: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS strtod.$ac_objext"])
m4trace:configure.ac:157: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
m4trace:configure.ac:157: -1- m4_pattern_allow([^LIB@&t@OBJS$])
m4trace:configure.ac:158: -1- AH_OUTPUT([HAVE_BZERO], [/* Define to 1 if you have the `bzero\' function. */
@%:@undef HAVE_BZERO])
m4trace:configure.ac:161: -1- AH_OUTPUT([HAVE_STRCHR], [/* Define to 1 if you have the `strchr\' function. */
m4trace:configure.ac:158: -1- AH_OUTPUT([HAVE_STRCHR], [/* Define to 1 if you have the `strchr\' function. */
@%:@undef HAVE_STRCHR])
m4trace:configure.ac:161: -1- AH_OUTPUT([HAVE_STRCSPN], [/* Define to 1 if you have the `strcspn\' function. */
m4trace:configure.ac:158: -1- AH_OUTPUT([HAVE_STRCSPN], [/* Define to 1 if you have the `strcspn\' function. */
@%:@undef HAVE_STRCSPN])
m4trace:configure.ac:161: -1- AH_OUTPUT([HAVE_STRRCHR], [/* Define to 1 if you have the `strrchr\' function. */
m4trace:configure.ac:158: -1- AH_OUTPUT([HAVE_STRRCHR], [/* Define to 1 if you have the `strrchr\' function. */
@%:@undef HAVE_STRRCHR])
m4trace:configure.ac:161: -1- AH_OUTPUT([HAVE_STRTOL], [/* Define to 1 if you have the `strtol\' function. */
m4trace:configure.ac:158: -1- AH_OUTPUT([HAVE_STRTOL], [/* Define to 1 if you have the `strtol\' function. */
@%:@undef HAVE_STRTOL])
m4trace:configure.ac:167: -1- AM_CONDITIONAL([USE_SYS_GETOPTLONG], [test "$SYS_GETOPTLONG" = "1"])
m4trace:configure.ac:167: -1- AC_SUBST([USE_SYS_GETOPTLONG_TRUE])
m4trace:configure.ac:167: -1- AC_SUBST_TRACE([USE_SYS_GETOPTLONG_TRUE])
m4trace:configure.ac:167: -1- m4_pattern_allow([^USE_SYS_GETOPTLONG_TRUE$])
m4trace:configure.ac:167: -1- AC_SUBST([USE_SYS_GETOPTLONG_FALSE])
m4trace:configure.ac:167: -1- AC_SUBST_TRACE([USE_SYS_GETOPTLONG_FALSE])
m4trace:configure.ac:167: -1- m4_pattern_allow([^USE_SYS_GETOPTLONG_FALSE$])
m4trace:configure.ac:167: -1- _AM_SUBST_NOTMAKE([USE_SYS_GETOPTLONG_TRUE])
m4trace:configure.ac:167: -1- _AM_SUBST_NOTMAKE([USE_SYS_GETOPTLONG_FALSE])
m4trace:configure.ac:168: -1- AM_CONDITIONAL([USE_ARGREX], [test "$SYS_REGEX" = "1"])
m4trace:configure.ac:168: -1- AC_SUBST([USE_ARGREX_TRUE])
m4trace:configure.ac:168: -1- AC_SUBST_TRACE([USE_ARGREX_TRUE])
m4trace:configure.ac:168: -1- m4_pattern_allow([^USE_ARGREX_TRUE$])
m4trace:configure.ac:168: -1- AC_SUBST([USE_ARGREX_FALSE])
m4trace:configure.ac:168: -1- AC_SUBST_TRACE([USE_ARGREX_FALSE])
m4trace:configure.ac:168: -1- m4_pattern_allow([^USE_ARGREX_FALSE$])
m4trace:configure.ac:168: -1- _AM_SUBST_NOTMAKE([USE_ARGREX_TRUE])
m4trace:configure.ac:168: -1- _AM_SUBST_NOTMAKE([USE_ARGREX_FALSE])
m4trace:configure.ac:169: -1- AM_CONDITIONAL([USE_ARGDATE], [test "$SYS_STRPTIME" = "1"])
m4trace:configure.ac:169: -1- AC_SUBST([USE_ARGDATE_TRUE])
m4trace:configure.ac:169: -1- AC_SUBST_TRACE([USE_ARGDATE_TRUE])
m4trace:configure.ac:169: -1- m4_pattern_allow([^USE_ARGDATE_TRUE$])
m4trace:configure.ac:169: -1- AC_SUBST([USE_ARGDATE_FALSE])
m4trace:configure.ac:169: -1- AC_SUBST_TRACE([USE_ARGDATE_FALSE])
m4trace:configure.ac:169: -1- m4_pattern_allow([^USE_ARGDATE_FALSE$])
m4trace:configure.ac:169: -1- _AM_SUBST_NOTMAKE([USE_ARGDATE_TRUE])
m4trace:configure.ac:169: -1- _AM_SUBST_NOTMAKE([USE_ARGDATE_FALSE])
m4trace:configure.ac:172: -1- AC_DEFINE_TRACE_LITERAL([CC_HAS_LONG_LONG])
m4trace:configure.ac:172: -1- m4_pattern_allow([^CC_HAS_LONG_LONG$])
m4trace:configure.ac:172: -1- AH_OUTPUT([CC_HAS_LONG_LONG], [/* "Whether the compiler supports \'long long\'." */
m4trace:configure.ac:164: -1- AM_CONDITIONAL([USE_SYS_GETOPTLONG], [test "$SYS_GETOPTLONG" = "1"])
m4trace:configure.ac:164: -1- AC_SUBST([USE_SYS_GETOPTLONG_TRUE])
m4trace:configure.ac:164: -1- AC_SUBST_TRACE([USE_SYS_GETOPTLONG_TRUE])
m4trace:configure.ac:164: -1- m4_pattern_allow([^USE_SYS_GETOPTLONG_TRUE$])
m4trace:configure.ac:164: -1- AC_SUBST([USE_SYS_GETOPTLONG_FALSE])
m4trace:configure.ac:164: -1- AC_SUBST_TRACE([USE_SYS_GETOPTLONG_FALSE])
m4trace:configure.ac:164: -1- m4_pattern_allow([^USE_SYS_GETOPTLONG_FALSE$])
m4trace:configure.ac:164: -1- _AM_SUBST_NOTMAKE([USE_SYS_GETOPTLONG_TRUE])
m4trace:configure.ac:164: -1- _AM_SUBST_NOTMAKE([USE_SYS_GETOPTLONG_FALSE])
m4trace:configure.ac:165: -1- AM_CONDITIONAL([USE_ARGREX], [test "$SYS_REGEX" = "1"])
m4trace:configure.ac:165: -1- AC_SUBST([USE_ARGREX_TRUE])
m4trace:configure.ac:165: -1- AC_SUBST_TRACE([USE_ARGREX_TRUE])
m4trace:configure.ac:165: -1- m4_pattern_allow([^USE_ARGREX_TRUE$])
m4trace:configure.ac:165: -1- AC_SUBST([USE_ARGREX_FALSE])
m4trace:configure.ac:165: -1- AC_SUBST_TRACE([USE_ARGREX_FALSE])
m4trace:configure.ac:165: -1- m4_pattern_allow([^USE_ARGREX_FALSE$])
m4trace:configure.ac:165: -1- _AM_SUBST_NOTMAKE([USE_ARGREX_TRUE])
m4trace:configure.ac:165: -1- _AM_SUBST_NOTMAKE([USE_ARGREX_FALSE])
m4trace:configure.ac:166: -1- AM_CONDITIONAL([USE_ARGDATE], [test "$SYS_STRPTIME" = "1"])
m4trace:configure.ac:166: -1- AC_SUBST([USE_ARGDATE_TRUE])
m4trace:configure.ac:166: -1- AC_SUBST_TRACE([USE_ARGDATE_TRUE])
m4trace:configure.ac:166: -1- m4_pattern_allow([^USE_ARGDATE_TRUE$])
m4trace:configure.ac:166: -1- AC_SUBST([USE_ARGDATE_FALSE])
m4trace:configure.ac:166: -1- AC_SUBST_TRACE([USE_ARGDATE_FALSE])
m4trace:configure.ac:166: -1- m4_pattern_allow([^USE_ARGDATE_FALSE$])
m4trace:configure.ac:166: -1- _AM_SUBST_NOTMAKE([USE_ARGDATE_TRUE])
m4trace:configure.ac:166: -1- _AM_SUBST_NOTMAKE([USE_ARGDATE_FALSE])
m4trace:configure.ac:169: -1- AC_DEFINE_TRACE_LITERAL([CC_HAS_LONG_LONG])
m4trace:configure.ac:169: -1- m4_pattern_allow([^CC_HAS_LONG_LONG$])
m4trace:configure.ac:169: -1- AH_OUTPUT([CC_HAS_LONG_LONG], [/* "Whether the compiler supports \'long long\'." */
@%:@undef CC_HAS_LONG_LONG])
m4trace:configure.ac:175: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UINT8_T])
m4trace:configure.ac:175: -1- m4_pattern_allow([^HAVE_UINT8_T$])
m4trace:configure.ac:175: -1- AH_OUTPUT([HAVE_UINT8_T], [/* Define to 1 if the system has the type `uint8_t\'. */
m4trace:configure.ac:172: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UINT8_T])
m4trace:configure.ac:172: -1- m4_pattern_allow([^HAVE_UINT8_T$])
m4trace:configure.ac:172: -1- AH_OUTPUT([HAVE_UINT8_T], [/* Define to 1 if the system has the type `uint8_t\'. */
@%:@undef HAVE_UINT8_T])
m4trace:configure.ac:175: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UINT16_T])
m4trace:configure.ac:175: -1- m4_pattern_allow([^HAVE_UINT16_T$])
m4trace:configure.ac:175: -1- AH_OUTPUT([HAVE_UINT16_T], [/* Define to 1 if the system has the type `uint16_t\'. */
m4trace:configure.ac:172: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UINT16_T])
m4trace:configure.ac:172: -1- m4_pattern_allow([^HAVE_UINT16_T$])
m4trace:configure.ac:172: -1- AH_OUTPUT([HAVE_UINT16_T], [/* Define to 1 if the system has the type `uint16_t\'. */
@%:@undef HAVE_UINT16_T])
m4trace:configure.ac:175: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UINT32_T])
m4trace:configure.ac:175: -1- m4_pattern_allow([^HAVE_UINT32_T$])
m4trace:configure.ac:175: -1- AH_OUTPUT([HAVE_UINT32_T], [/* Define to 1 if the system has the type `uint32_t\'. */
m4trace:configure.ac:172: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UINT32_T])
m4trace:configure.ac:172: -1- m4_pattern_allow([^HAVE_UINT32_T$])
m4trace:configure.ac:172: -1- AH_OUTPUT([HAVE_UINT32_T], [/* Define to 1 if the system has the type `uint32_t\'. */
@%:@undef HAVE_UINT32_T])
m4trace:configure.ac:176: -1- AC_DEFINE_TRACE_LITERAL([HAVE_INT8_T])
m4trace:configure.ac:176: -1- m4_pattern_allow([^HAVE_INT8_T$])
m4trace:configure.ac:176: -1- AH_OUTPUT([HAVE_INT8_T], [/* Define to 1 if the system has the type `int8_t\'. */
m4trace:configure.ac:173: -1- AC_DEFINE_TRACE_LITERAL([HAVE_INT8_T])
m4trace:configure.ac:173: -1- m4_pattern_allow([^HAVE_INT8_T$])
m4trace:configure.ac:173: -1- AH_OUTPUT([HAVE_INT8_T], [/* Define to 1 if the system has the type `int8_t\'. */
@%:@undef HAVE_INT8_T])
m4trace:configure.ac:176: -1- AC_DEFINE_TRACE_LITERAL([HAVE_INT16_T])
m4trace:configure.ac:176: -1- m4_pattern_allow([^HAVE_INT16_T$])
m4trace:configure.ac:176: -1- AH_OUTPUT([HAVE_INT16_T], [/* Define to 1 if the system has the type `int16_t\'. */
m4trace:configure.ac:173: -1- AC_DEFINE_TRACE_LITERAL([HAVE_INT16_T])
m4trace:configure.ac:173: -1- m4_pattern_allow([^HAVE_INT16_T$])
m4trace:configure.ac:173: -1- AH_OUTPUT([HAVE_INT16_T], [/* Define to 1 if the system has the type `int16_t\'. */
@%:@undef HAVE_INT16_T])
m4trace:configure.ac:176: -1- AC_DEFINE_TRACE_LITERAL([HAVE_INT32_T])
m4trace:configure.ac:176: -1- m4_pattern_allow([^HAVE_INT32_T$])
m4trace:configure.ac:176: -1- AH_OUTPUT([HAVE_INT32_T], [/* Define to 1 if the system has the type `int32_t\'. */
m4trace:configure.ac:173: -1- AC_DEFINE_TRACE_LITERAL([HAVE_INT32_T])
m4trace:configure.ac:173: -1- m4_pattern_allow([^HAVE_INT32_T$])
m4trace:configure.ac:173: -1- AH_OUTPUT([HAVE_INT32_T], [/* Define to 1 if the system has the type `int32_t\'. */
@%:@undef HAVE_INT32_T])
m4trace:configure.ac:178: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_CHAR])
m4trace:configure.ac:178: -1- m4_pattern_allow([^SIZEOF_CHAR$])
m4trace:configure.ac:178: -1- AH_OUTPUT([SIZEOF_CHAR], [/* The size of `char\', as computed by sizeof. */
m4trace:configure.ac:175: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_CHAR])
m4trace:configure.ac:175: -1- m4_pattern_allow([^SIZEOF_CHAR$])
m4trace:configure.ac:175: -1- AH_OUTPUT([SIZEOF_CHAR], [/* The size of `char\', as computed by sizeof. */
@%:@undef SIZEOF_CHAR])
m4trace:configure.ac:179: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_SHORT])
m4trace:configure.ac:179: -1- m4_pattern_allow([^SIZEOF_SHORT$])
m4trace:configure.ac:179: -1- AH_OUTPUT([SIZEOF_SHORT], [/* The size of `short\', as computed by sizeof. */
m4trace:configure.ac:176: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_SHORT])
m4trace:configure.ac:176: -1- m4_pattern_allow([^SIZEOF_SHORT$])
m4trace:configure.ac:176: -1- AH_OUTPUT([SIZEOF_SHORT], [/* The size of `short\', as computed by sizeof. */
@%:@undef SIZEOF_SHORT])
m4trace:configure.ac:180: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_INT])
m4trace:configure.ac:180: -1- m4_pattern_allow([^SIZEOF_INT$])
m4trace:configure.ac:180: -1- AH_OUTPUT([SIZEOF_INT], [/* The size of `int\', as computed by sizeof. */
m4trace:configure.ac:177: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_INT])
m4trace:configure.ac:177: -1- m4_pattern_allow([^SIZEOF_INT$])
m4trace:configure.ac:177: -1- AH_OUTPUT([SIZEOF_INT], [/* The size of `int\', as computed by sizeof. */
@%:@undef SIZEOF_INT])
m4trace:configure.ac:181: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_LONG])
m4trace:configure.ac:181: -1- m4_pattern_allow([^SIZEOF_LONG$])
m4trace:configure.ac:181: -1- AH_OUTPUT([SIZEOF_LONG], [/* The size of `long\', as computed by sizeof. */
m4trace:configure.ac:178: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_LONG])
m4trace:configure.ac:178: -1- m4_pattern_allow([^SIZEOF_LONG$])
m4trace:configure.ac:178: -1- AH_OUTPUT([SIZEOF_LONG], [/* The size of `long\', as computed by sizeof. */
@%:@undef SIZEOF_LONG])
m4trace:configure.ac:182: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_LONG_LONG])
m4trace:configure.ac:182: -1- m4_pattern_allow([^SIZEOF_LONG_LONG$])
m4trace:configure.ac:182: -1- AH_OUTPUT([SIZEOF_LONG_LONG], [/* The size of `long long\', as computed by sizeof. */
m4trace:configure.ac:179: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_LONG_LONG])
m4trace:configure.ac:179: -1- m4_pattern_allow([^SIZEOF_LONG_LONG$])
m4trace:configure.ac:179: -1- AH_OUTPUT([SIZEOF_LONG_LONG], [/* The size of `long long\', as computed by sizeof. */
@%:@undef SIZEOF_LONG_LONG])
m4trace:configure.ac:185: -1- AC_DEFINE_TRACE_LITERAL([HAVE___COMPAR_FN_T])
m4trace:configure.ac:185: -1- m4_pattern_allow([^HAVE___COMPAR_FN_T$])
m4trace:configure.ac:185: -1- AH_OUTPUT([HAVE___COMPAR_FN_T], [/* Define to 1 if the system has the type `__compar_fn_t\'. */
m4trace:configure.ac:182: -1- AC_DEFINE_TRACE_LITERAL([HAVE___COMPAR_FN_T])
m4trace:configure.ac:182: -1- m4_pattern_allow([^HAVE___COMPAR_FN_T$])
m4trace:configure.ac:182: -1- AH_OUTPUT([HAVE___COMPAR_FN_T], [/* Define to 1 if the system has the type `__compar_fn_t\'. */
@%:@undef HAVE___COMPAR_FN_T])
m4trace:configure.ac:188: -1- AH_OUTPUT([HAVE_LIBREADLINE], [/* Define to 1 if you have the `readline\' library (-lreadline). */
m4trace:configure.ac:185: -1- AH_OUTPUT([HAVE_LIBREADLINE], [/* Define to 1 if you have the `readline\' library (-lreadline). */
@%:@undef HAVE_LIBREADLINE])
m4trace:configure.ac:188: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBREADLINE])
m4trace:configure.ac:188: -1- m4_pattern_allow([^HAVE_LIBREADLINE$])
m4trace:configure.ac:285: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
m4trace:configure.ac:185: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBREADLINE])
m4trace:configure.ac:185: -1- m4_pattern_allow([^HAVE_LIBREADLINE$])
m4trace:configure.ac:277: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
You should run autoupdate.], [../../lib/autoconf/general.m4:230: AC_HELP_STRING is expanded from...
configure.ac:285: the top level])
m4trace:configure.ac:295: -1- AC_SUBST([DEBUGFLAGS])
m4trace:configure.ac:295: -1- AC_SUBST_TRACE([DEBUGFLAGS])
m4trace:configure.ac:295: -1- m4_pattern_allow([^DEBUGFLAGS$])
m4trace:configure.ac:297: -1- AC_DEFINE_TRACE_LITERAL([RAW_RANGE_STATS])
m4trace:configure.ac:297: -1- m4_pattern_allow([^RAW_RANGE_STATS$])
m4trace:configure.ac:297: -1- AH_OUTPUT([RAW_RANGE_STATS], [/* Specifies, whether we should do register accesses over time analysis.
configure.ac:277: the top level])
m4trace:configure.ac:287: -1- AC_SUBST([DEBUGFLAGS])
m4trace:configure.ac:287: -1- AC_SUBST_TRACE([DEBUGFLAGS])
m4trace:configure.ac:287: -1- m4_pattern_allow([^DEBUGFLAGS$])
m4trace:configure.ac:289: -1- AC_DEFINE_TRACE_LITERAL([RAW_RANGE_STATS])
m4trace:configure.ac:289: -1- m4_pattern_allow([^RAW_RANGE_STATS$])
m4trace:configure.ac:289: -1- AH_OUTPUT([RAW_RANGE_STATS], [/* Specifies, whether we should do register accesses over time analysis.
Simple execution must be enabled! */
@%:@undef RAW_RANGE_STATS])
m4trace:configure.ac:298: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ETH_PHY])
m4trace:configure.ac:298: -1- m4_pattern_allow([^HAVE_ETH_PHY$])
m4trace:configure.ac:298: -1- AH_OUTPUT([HAVE_ETH_PHY], [/* Whether we have ethernet PHY support */
m4trace:configure.ac:290: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ETH_PHY])
m4trace:configure.ac:290: -1- m4_pattern_allow([^HAVE_ETH_PHY$])
m4trace:configure.ac:290: -1- AH_OUTPUT([HAVE_ETH_PHY], [/* Whether we have ethernet PHY support */
@%:@undef HAVE_ETH_PHY])
m4trace:configure.ac:299: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UNSIGNED_XORI])
m4trace:configure.ac:299: -1- m4_pattern_allow([^HAVE_UNSIGNED_XORI$])
m4trace:configure.ac:299: -1- AH_OUTPUT([HAVE_UNSIGNED_XORI], [/* Whether l.xori takes an unsigned immediate operand */
m4trace:configure.ac:291: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UNSIGNED_XORI])
m4trace:configure.ac:291: -1- m4_pattern_allow([^HAVE_UNSIGNED_XORI$])
m4trace:configure.ac:291: -1- AH_OUTPUT([HAVE_UNSIGNED_XORI], [/* Whether l.xori takes an unsigned immediate operand */
@%:@undef HAVE_UNSIGNED_XORI])
m4trace:configure.ac:300: -1- AC_DEFINE_TRACE_LITERAL([SIMPLE_EXECUTION])
m4trace:configure.ac:300: -1- m4_pattern_allow([^SIMPLE_EXECUTION$])
m4trace:configure.ac:300: -1- AH_OUTPUT([SIMPLE_EXECUTION], [/* Whether we are building with simple execution module */
m4trace:configure.ac:292: -1- AC_DEFINE_TRACE_LITERAL([SIMPLE_EXECUTION])
m4trace:configure.ac:292: -1- m4_pattern_allow([^SIMPLE_EXECUTION$])
m4trace:configure.ac:292: -1- AH_OUTPUT([SIMPLE_EXECUTION], [/* Whether we are building with simple execution module */
@%:@undef SIMPLE_EXECUTION])
m4trace:configure.ac:301: -1- AC_DEFINE_TRACE_LITERAL([COMPLEX_EXECUTION])
m4trace:configure.ac:301: -1- m4_pattern_allow([^COMPLEX_EXECUTION$])
m4trace:configure.ac:301: -1- AH_OUTPUT([COMPLEX_EXECUTION], [/* Whether we are building with complex execution module */
m4trace:configure.ac:293: -1- AC_DEFINE_TRACE_LITERAL([COMPLEX_EXECUTION])
m4trace:configure.ac:293: -1- m4_pattern_allow([^COMPLEX_EXECUTION$])
m4trace:configure.ac:293: -1- AH_OUTPUT([COMPLEX_EXECUTION], [/* Whether we are building with complex execution module */
@%:@undef COMPLEX_EXECUTION])
m4trace:configure.ac:302: -1- AC_DEFINE_TRACE_LITERAL([DYNAMIC_EXECUTION])
m4trace:configure.ac:302: -1- m4_pattern_allow([^DYNAMIC_EXECUTION$])
m4trace:configure.ac:302: -1- AH_OUTPUT([DYNAMIC_EXECUTION], [/* Whether we are building with dynamic execution module */
@%:@undef DYNAMIC_EXECUTION])
m4trace:configure.ac:303: -1- AM_CONDITIONAL([GENERATE_NEEDED], [test x$execution = x1])
m4trace:configure.ac:303: -1- AC_SUBST([GENERATE_NEEDED_TRUE])
m4trace:configure.ac:303: -1- AC_SUBST_TRACE([GENERATE_NEEDED_TRUE])
m4trace:configure.ac:303: -1- m4_pattern_allow([^GENERATE_NEEDED_TRUE$])
m4trace:configure.ac:303: -1- AC_SUBST([GENERATE_NEEDED_FALSE])
m4trace:configure.ac:303: -1- AC_SUBST_TRACE([GENERATE_NEEDED_FALSE])
m4trace:configure.ac:303: -1- m4_pattern_allow([^GENERATE_NEEDED_FALSE$])
m4trace:configure.ac:303: -1- _AM_SUBST_NOTMAKE([GENERATE_NEEDED_TRUE])
m4trace:configure.ac:303: -1- _AM_SUBST_NOTMAKE([GENERATE_NEEDED_FALSE])
m4trace:configure.ac:304: -1- AM_CONDITIONAL([DYNAMIC_EXECUTION], [test x$execution = x2])
m4trace:configure.ac:304: -1- AC_SUBST([DYNAMIC_EXECUTION_TRUE])
m4trace:configure.ac:304: -1- AC_SUBST_TRACE([DYNAMIC_EXECUTION_TRUE])
m4trace:configure.ac:304: -1- m4_pattern_allow([^DYNAMIC_EXECUTION_TRUE$])
m4trace:configure.ac:304: -1- AC_SUBST([DYNAMIC_EXECUTION_FALSE])
m4trace:configure.ac:304: -1- AC_SUBST_TRACE([DYNAMIC_EXECUTION_FALSE])
m4trace:configure.ac:304: -1- m4_pattern_allow([^DYNAMIC_EXECUTION_FALSE$])
m4trace:configure.ac:304: -1- _AM_SUBST_NOTMAKE([DYNAMIC_EXECUTION_TRUE])
m4trace:configure.ac:304: -1- _AM_SUBST_NOTMAKE([DYNAMIC_EXECUTION_FALSE])
m4trace:configure.ac:313: -1- AC_SUBST([DEJAGNU])
m4trace:configure.ac:313: -1- AC_SUBST_TRACE([DEJAGNU])
m4trace:configure.ac:313: -1- m4_pattern_allow([^DEJAGNU$])
m4trace:configure.ac:318: -1- AC_SUBST([RUNTESTDEFAULTFLAGS])
m4trace:configure.ac:318: -1- AC_SUBST_TRACE([RUNTESTDEFAULTFLAGS])
m4trace:configure.ac:318: -1- m4_pattern_allow([^RUNTESTDEFAULTFLAGS$])
m4trace:configure.ac:321: -1- AC_SUBST([BUILD_DIR])
m4trace:configure.ac:321: -1- AC_SUBST_TRACE([BUILD_DIR])
m4trace:configure.ac:321: -1- m4_pattern_allow([^BUILD_DIR$])
m4trace:configure.ac:323: -1- AC_SUBST([CFLAGS])
m4trace:configure.ac:323: -1- AC_SUBST_TRACE([CFLAGS])
m4trace:configure.ac:323: -1- m4_pattern_allow([^CFLAGS$])
m4trace:configure.ac:324: -1- AC_SUBST([LOCAL_CFLAGS])
m4trace:configure.ac:324: -1- AC_SUBST_TRACE([LOCAL_CFLAGS])
m4trace:configure.ac:324: -1- m4_pattern_allow([^LOCAL_CFLAGS$])
m4trace:configure.ac:325: -1- AC_SUBST([LOCAL_LDFLAGS])
m4trace:configure.ac:325: -1- AC_SUBST_TRACE([LOCAL_LDFLAGS])
m4trace:configure.ac:325: -1- m4_pattern_allow([^LOCAL_LDFLAGS$])
m4trace:configure.ac:326: -1- AC_SUBST([LOCAL_DEFS])
m4trace:configure.ac:326: -1- AC_SUBST_TRACE([LOCAL_DEFS])
m4trace:configure.ac:326: -1- m4_pattern_allow([^LOCAL_DEFS$])
m4trace:configure.ac:328: -1- AC_SUBST([AR])
m4trace:configure.ac:328: -1- AC_SUBST_TRACE([AR])
m4trace:configure.ac:328: -1- m4_pattern_allow([^AR$])
m4trace:configure.ac:329: -1- AC_SUBST([ARFLAGS])
m4trace:configure.ac:329: -1- AC_SUBST_TRACE([ARFLAGS])
m4trace:configure.ac:329: -1- m4_pattern_allow([^ARFLAGS$])
m4trace:configure.ac:331: -1- AC_SUBST([host_cpu])
m4trace:configure.ac:331: -1- AC_SUBST_TRACE([host_cpu])
m4trace:configure.ac:331: -1- m4_pattern_allow([^host_cpu$])
m4trace:configure.ac:332: -1- AC_SUBST([host_os])
m4trace:configure.ac:332: -1- AC_SUBST_TRACE([host_os])
m4trace:configure.ac:332: -1- m4_pattern_allow([^host_os$])
m4trace:configure.ac:333: -1- AC_SUBST([host])
m4trace:configure.ac:333: -1- AC_SUBST_TRACE([host])
m4trace:configure.ac:333: -1- m4_pattern_allow([^host$])
m4trace:configure.ac:335: -1- AC_SUBST([SUMVERSION])
m4trace:configure.ac:335: -1- AC_SUBST_TRACE([SUMVERSION])
m4trace:configure.ac:335: -1- m4_pattern_allow([^SUMVERSION$])
m4trace:configure.ac:336: -1- AC_SUBST([TERMCAP_LIB])
m4trace:configure.ac:336: -1- AC_SUBST_TRACE([TERMCAP_LIB])
m4trace:configure.ac:336: -1- m4_pattern_allow([^TERMCAP_LIB$])
m4trace:configure.ac:338: -1- AC_DEFINE_TRACE_LITERAL([HAVE_EXECUTION])
m4trace:configure.ac:338: -1- m4_pattern_allow([^HAVE_EXECUTION$])
m4trace:configure.ac:338: -1- AH_OUTPUT([HAVE_EXECUTION], [/* Some shared files require to know, whether we have execution functions
m4trace:configure.ac:294: -1- AM_CONDITIONAL([GENERATE_NEEDED], [test x$execution = x1])
m4trace:configure.ac:294: -1- AC_SUBST([GENERATE_NEEDED_TRUE])
m4trace:configure.ac:294: -1- AC_SUBST_TRACE([GENERATE_NEEDED_TRUE])
m4trace:configure.ac:294: -1- m4_pattern_allow([^GENERATE_NEEDED_TRUE$])
m4trace:configure.ac:294: -1- AC_SUBST([GENERATE_NEEDED_FALSE])
m4trace:configure.ac:294: -1- AC_SUBST_TRACE([GENERATE_NEEDED_FALSE])
m4trace:configure.ac:294: -1- m4_pattern_allow([^GENERATE_NEEDED_FALSE$])
m4trace:configure.ac:294: -1- _AM_SUBST_NOTMAKE([GENERATE_NEEDED_TRUE])
m4trace:configure.ac:294: -1- _AM_SUBST_NOTMAKE([GENERATE_NEEDED_FALSE])
m4trace:configure.ac:304: -1- AC_SUBST([DEJAGNU])
m4trace:configure.ac:304: -1- AC_SUBST_TRACE([DEJAGNU])
m4trace:configure.ac:304: -1- m4_pattern_allow([^DEJAGNU$])
m4trace:configure.ac:309: -1- AC_SUBST([RUNTESTDEFAULTFLAGS])
m4trace:configure.ac:309: -1- AC_SUBST_TRACE([RUNTESTDEFAULTFLAGS])
m4trace:configure.ac:309: -1- m4_pattern_allow([^RUNTESTDEFAULTFLAGS$])
m4trace:configure.ac:312: -1- AC_SUBST([BUILD_DIR])
m4trace:configure.ac:312: -1- AC_SUBST_TRACE([BUILD_DIR])
m4trace:configure.ac:312: -1- m4_pattern_allow([^BUILD_DIR$])
m4trace:configure.ac:314: -1- AC_SUBST([CFLAGS])
m4trace:configure.ac:314: -1- AC_SUBST_TRACE([CFLAGS])
m4trace:configure.ac:314: -1- m4_pattern_allow([^CFLAGS$])
m4trace:configure.ac:315: -1- AC_SUBST([LOCAL_CFLAGS])
m4trace:configure.ac:315: -1- AC_SUBST_TRACE([LOCAL_CFLAGS])
m4trace:configure.ac:315: -1- m4_pattern_allow([^LOCAL_CFLAGS$])
m4trace:configure.ac:316: -1- AC_SUBST([LOCAL_LDFLAGS])
m4trace:configure.ac:316: -1- AC_SUBST_TRACE([LOCAL_LDFLAGS])
m4trace:configure.ac:316: -1- m4_pattern_allow([^LOCAL_LDFLAGS$])
m4trace:configure.ac:317: -1- AC_SUBST([LOCAL_DEFS])
m4trace:configure.ac:317: -1- AC_SUBST_TRACE([LOCAL_DEFS])
m4trace:configure.ac:317: -1- m4_pattern_allow([^LOCAL_DEFS$])
m4trace:configure.ac:319: -1- AC_SUBST([AR])
m4trace:configure.ac:319: -1- AC_SUBST_TRACE([AR])
m4trace:configure.ac:319: -1- m4_pattern_allow([^AR$])
m4trace:configure.ac:320: -1- AC_SUBST([ARFLAGS])
m4trace:configure.ac:320: -1- AC_SUBST_TRACE([ARFLAGS])
m4trace:configure.ac:320: -1- m4_pattern_allow([^ARFLAGS$])
m4trace:configure.ac:322: -1- AC_SUBST([host_cpu])
m4trace:configure.ac:322: -1- AC_SUBST_TRACE([host_cpu])
m4trace:configure.ac:322: -1- m4_pattern_allow([^host_cpu$])
m4trace:configure.ac:323: -1- AC_SUBST([host_os])
m4trace:configure.ac:323: -1- AC_SUBST_TRACE([host_os])
m4trace:configure.ac:323: -1- m4_pattern_allow([^host_os$])
m4trace:configure.ac:324: -1- AC_SUBST([host])
m4trace:configure.ac:324: -1- AC_SUBST_TRACE([host])
m4trace:configure.ac:324: -1- m4_pattern_allow([^host$])
m4trace:configure.ac:326: -1- AC_SUBST([SUMVERSION])
m4trace:configure.ac:326: -1- AC_SUBST_TRACE([SUMVERSION])
m4trace:configure.ac:326: -1- m4_pattern_allow([^SUMVERSION$])
m4trace:configure.ac:327: -1- AC_SUBST([TERMCAP_LIB])
m4trace:configure.ac:327: -1- AC_SUBST_TRACE([TERMCAP_LIB])
m4trace:configure.ac:327: -1- m4_pattern_allow([^TERMCAP_LIB$])
m4trace:configure.ac:329: -1- AC_DEFINE_TRACE_LITERAL([HAVE_EXECUTION])
m4trace:configure.ac:329: -1- m4_pattern_allow([^HAVE_EXECUTION$])
m4trace:configure.ac:329: -1- AH_OUTPUT([HAVE_EXECUTION], [/* Some shared files require to know, whether we have execution functions
defined. */
@%:@undef HAVE_EXECUTION])
m4trace:configure.ac:348: -1- AC_SUBST([INCLUDES])
m4trace:configure.ac:348: -1- AC_SUBST_TRACE([INCLUDES])
m4trace:configure.ac:348: -1- m4_pattern_allow([^INCLUDES$])
m4trace:configure.ac:350: -1- AC_CONFIG_FILES([Makefile \
m4trace:configure.ac:339: -1- AC_SUBST([INCLUDES])
m4trace:configure.ac:339: -1- AC_SUBST_TRACE([INCLUDES])
m4trace:configure.ac:339: -1- m4_pattern_allow([^INCLUDES$])
m4trace:configure.ac:341: -1- AC_CONFIG_FILES([Makefile \
argtable2/Makefile \
bpb/Makefile \
cache/Makefile \
982,32 → 969,31
testsuite/test-code/lib-upcalls/Makefile \
tick/Makefile \
vapi/Makefile])
m4trace:configure.ac:383: -1- AC_CONFIG_FILES([cpu/dlx/Makefile])
m4trace:configure.ac:384: -1- AC_CONFIG_FILES([cpu/or32/Makefile])
m4trace:configure.ac:408: -1- AC_SUBST([LIB@&t@OBJS], [$ac_libobjs])
m4trace:configure.ac:408: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
m4trace:configure.ac:408: -1- m4_pattern_allow([^LIB@&t@OBJS$])
m4trace:configure.ac:408: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs])
m4trace:configure.ac:408: -1- AC_SUBST_TRACE([LTLIBOBJS])
m4trace:configure.ac:408: -1- m4_pattern_allow([^LTLIBOBJS$])
m4trace:configure.ac:408: -1- AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])
m4trace:configure.ac:408: -1- AC_SUBST([am__EXEEXT_TRUE])
m4trace:configure.ac:408: -1- AC_SUBST_TRACE([am__EXEEXT_TRUE])
m4trace:configure.ac:408: -1- m4_pattern_allow([^am__EXEEXT_TRUE$])
m4trace:configure.ac:408: -1- AC_SUBST([am__EXEEXT_FALSE])
m4trace:configure.ac:408: -1- AC_SUBST_TRACE([am__EXEEXT_FALSE])
m4trace:configure.ac:408: -1- m4_pattern_allow([^am__EXEEXT_FALSE$])
m4trace:configure.ac:408: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_TRUE])
m4trace:configure.ac:408: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_FALSE])
m4trace:configure.ac:408: -1- AC_SUBST_TRACE([top_builddir])
m4trace:configure.ac:408: -1- AC_SUBST_TRACE([top_build_prefix])
m4trace:configure.ac:408: -1- AC_SUBST_TRACE([srcdir])
m4trace:configure.ac:408: -1- AC_SUBST_TRACE([abs_srcdir])
m4trace:configure.ac:408: -1- AC_SUBST_TRACE([top_srcdir])
m4trace:configure.ac:408: -1- AC_SUBST_TRACE([abs_top_srcdir])
m4trace:configure.ac:408: -1- AC_SUBST_TRACE([builddir])
m4trace:configure.ac:408: -1- AC_SUBST_TRACE([abs_builddir])
m4trace:configure.ac:408: -1- AC_SUBST_TRACE([abs_top_builddir])
m4trace:configure.ac:408: -1- AC_SUBST_TRACE([INSTALL])
m4trace:configure.ac:408: -1- AC_SUBST_TRACE([MKDIR_P])
m4trace:configure.ac:408: -1- AC_REQUIRE_AUX_FILE([ltmain.sh])
m4trace:configure.ac:374: -1- AC_CONFIG_FILES([cpu/or32/Makefile])
m4trace:configure.ac:398: -1- AC_SUBST([LIB@&t@OBJS], [$ac_libobjs])
m4trace:configure.ac:398: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
m4trace:configure.ac:398: -1- m4_pattern_allow([^LIB@&t@OBJS$])
m4trace:configure.ac:398: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs])
m4trace:configure.ac:398: -1- AC_SUBST_TRACE([LTLIBOBJS])
m4trace:configure.ac:398: -1- m4_pattern_allow([^LTLIBOBJS$])
m4trace:configure.ac:398: -1- AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])
m4trace:configure.ac:398: -1- AC_SUBST([am__EXEEXT_TRUE])
m4trace:configure.ac:398: -1- AC_SUBST_TRACE([am__EXEEXT_TRUE])
m4trace:configure.ac:398: -1- m4_pattern_allow([^am__EXEEXT_TRUE$])
m4trace:configure.ac:398: -1- AC_SUBST([am__EXEEXT_FALSE])
m4trace:configure.ac:398: -1- AC_SUBST_TRACE([am__EXEEXT_FALSE])
m4trace:configure.ac:398: -1- m4_pattern_allow([^am__EXEEXT_FALSE$])
m4trace:configure.ac:398: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_TRUE])
m4trace:configure.ac:398: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_FALSE])
m4trace:configure.ac:398: -1- AC_SUBST_TRACE([top_builddir])
m4trace:configure.ac:398: -1- AC_SUBST_TRACE([top_build_prefix])
m4trace:configure.ac:398: -1- AC_SUBST_TRACE([srcdir])
m4trace:configure.ac:398: -1- AC_SUBST_TRACE([abs_srcdir])
m4trace:configure.ac:398: -1- AC_SUBST_TRACE([top_srcdir])
m4trace:configure.ac:398: -1- AC_SUBST_TRACE([abs_top_srcdir])
m4trace:configure.ac:398: -1- AC_SUBST_TRACE([builddir])
m4trace:configure.ac:398: -1- AC_SUBST_TRACE([abs_builddir])
m4trace:configure.ac:398: -1- AC_SUBST_TRACE([abs_top_builddir])
m4trace:configure.ac:398: -1- AC_SUBST_TRACE([INSTALL])
m4trace:configure.ac:398: -1- AC_SUBST_TRACE([MKDIR_P])
m4trace:configure.ac:398: -1- AC_REQUIRE_AUX_FILE([ltmain.sh])
/autom4te.cache/traces.1
2347,134 → 2347,128
m4trace:configure.ac:45: -1- _AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])
m4trace:configure.ac:45: -2- _AM_MANGLE_OPTION([silent-rules])
m4trace:configure.ac:58: -1- m4_pattern_allow([^OR32_TYPES$])
m4trace:configure.ac:66: -1- m4_pattern_allow([^OR32_TYPES$])
m4trace:configure.ac:72: -1- m4_pattern_allow([^OR32_LITTLE_ENDIAN$])
m4trace:configure.ac:73: -1- m4_pattern_allow([^OR32_BIG_ENDIAN$])
m4trace:configure.ac:76: -1- m4_pattern_allow([^CPU_ARCH$])
m4trace:configure.ac:82: -1- AM_PROG_AS
m4trace:configure.ac:82: -1- m4_pattern_allow([^CCAS$])
m4trace:configure.ac:82: -1- m4_pattern_allow([^CCASFLAGS$])
m4trace:configure.ac:82: -1- _AM_IF_OPTION([no-dependencies], [], [_AM_DEPENDENCIES([CCAS])])
m4trace:configure.ac:82: -2- _AM_MANGLE_OPTION([no-dependencies])
m4trace:configure.ac:82: -1- _AM_DEPENDENCIES([CCAS])
m4trace:configure.ac:82: -1- m4_pattern_allow([^CCASDEPMODE$])
m4trace:configure.ac:82: -1- AM_CONDITIONAL([am__fastdepCCAS], [
m4trace:configure.ac:63: -1- m4_pattern_allow([^OR32_TYPES$])
m4trace:configure.ac:69: -1- m4_pattern_allow([^OR32_LITTLE_ENDIAN$])
m4trace:configure.ac:70: -1- m4_pattern_allow([^OR32_BIG_ENDIAN$])
m4trace:configure.ac:73: -1- m4_pattern_allow([^CPU_ARCH$])
m4trace:configure.ac:79: -1- AM_PROG_AS
m4trace:configure.ac:79: -1- m4_pattern_allow([^CCAS$])
m4trace:configure.ac:79: -1- m4_pattern_allow([^CCASFLAGS$])
m4trace:configure.ac:79: -1- _AM_IF_OPTION([no-dependencies], [], [_AM_DEPENDENCIES([CCAS])])
m4trace:configure.ac:79: -2- _AM_MANGLE_OPTION([no-dependencies])
m4trace:configure.ac:79: -1- _AM_DEPENDENCIES([CCAS])
m4trace:configure.ac:79: -1- m4_pattern_allow([^CCASDEPMODE$])
m4trace:configure.ac:79: -1- AM_CONDITIONAL([am__fastdepCCAS], [
test "x$enable_dependency_tracking" != xno \
&& test "$am_cv_CCAS_dependencies_compiler_type" = gcc3])
m4trace:configure.ac:82: -1- m4_pattern_allow([^am__fastdepCCAS_TRUE$])
m4trace:configure.ac:82: -1- m4_pattern_allow([^am__fastdepCCAS_FALSE$])
m4trace:configure.ac:82: -1- _AM_SUBST_NOTMAKE([am__fastdepCCAS_TRUE])
m4trace:configure.ac:82: -1- _AM_SUBST_NOTMAKE([am__fastdepCCAS_FALSE])
m4trace:configure.ac:84: -1- m4_pattern_allow([^CC$])
m4trace:configure.ac:84: -1- m4_pattern_allow([^CFLAGS$])
m4trace:configure.ac:84: -1- m4_pattern_allow([^LDFLAGS$])
m4trace:configure.ac:84: -1- m4_pattern_allow([^LIBS$])
m4trace:configure.ac:84: -1- m4_pattern_allow([^CPPFLAGS$])
m4trace:configure.ac:84: -1- m4_pattern_allow([^CC$])
m4trace:configure.ac:84: -1- m4_pattern_allow([^CC$])
m4trace:configure.ac:84: -1- m4_pattern_allow([^CC$])
m4trace:configure.ac:84: -1- m4_pattern_allow([^CC$])
m4trace:configure.ac:84: -1- m4_pattern_allow([^ac_ct_CC$])
m4trace:configure.ac:85: -1- AM_PROG_CC_C_O
m4trace:configure.ac:85: -1- m4_pattern_allow([^NO_MINUS_C_MINUS_O$])
m4trace:configure.ac:87: -1- m4_pattern_allow([^SET_MAKE$])
m4trace:configure.ac:90: -1- m4_pattern_allow([^AR$])
m4trace:configure.ac:96: -1- _m4_warn([obsolete], [The macro `AC_TYPE_SIGNAL' is obsolete.
m4trace:configure.ac:79: -1- m4_pattern_allow([^am__fastdepCCAS_TRUE$])
m4trace:configure.ac:79: -1- m4_pattern_allow([^am__fastdepCCAS_FALSE$])
m4trace:configure.ac:79: -1- _AM_SUBST_NOTMAKE([am__fastdepCCAS_TRUE])
m4trace:configure.ac:79: -1- _AM_SUBST_NOTMAKE([am__fastdepCCAS_FALSE])
m4trace:configure.ac:81: -1- m4_pattern_allow([^CC$])
m4trace:configure.ac:81: -1- m4_pattern_allow([^CFLAGS$])
m4trace:configure.ac:81: -1- m4_pattern_allow([^LDFLAGS$])
m4trace:configure.ac:81: -1- m4_pattern_allow([^LIBS$])
m4trace:configure.ac:81: -1- m4_pattern_allow([^CPPFLAGS$])
m4trace:configure.ac:81: -1- m4_pattern_allow([^CC$])
m4trace:configure.ac:81: -1- m4_pattern_allow([^CC$])
m4trace:configure.ac:81: -1- m4_pattern_allow([^CC$])
m4trace:configure.ac:81: -1- m4_pattern_allow([^CC$])
m4trace:configure.ac:81: -1- m4_pattern_allow([^ac_ct_CC$])
m4trace:configure.ac:82: -1- AM_PROG_CC_C_O
m4trace:configure.ac:82: -1- m4_pattern_allow([^NO_MINUS_C_MINUS_O$])
m4trace:configure.ac:84: -1- m4_pattern_allow([^SET_MAKE$])
m4trace:configure.ac:87: -1- m4_pattern_allow([^AR$])
m4trace:configure.ac:93: -1- _m4_warn([obsolete], [The macro `AC_TYPE_SIGNAL' is obsolete.
You should run autoupdate.], [../../lib/autoconf/types.m4:754: AC_TYPE_SIGNAL is expanded from...
configure.ac:96: the top level])
m4trace:configure.ac:96: -1- m4_pattern_allow([^RETSIGTYPE$])
m4trace:configure.ac:104: -1- m4_pattern_allow([^HAVE_BASENAME$])
m4trace:configure.ac:105: -1- m4_pattern_allow([^HAVE_STRCOLL$])
m4trace:configure.ac:106: -1- m4_pattern_allow([^HAVE_DECL_I_PUSH$])
m4trace:configure.ac:106: -1- m4_pattern_allow([^HAVE_DECL_RL_EVENT_HOOK$])
m4trace:configure.ac:108: -1- m4_pattern_allow([^WORDS_BIGENDIAN$])
m4trace:configure.ac:108: -1- m4_pattern_allow([^AC_APPLE_UNIVERSAL_BUILD$])
m4trace:configure.ac:114: -1- m4_pattern_allow([^HAVE_STRNDUP$])
m4trace:configure.ac:128: -1- m4_pattern_allow([^HAVE_STRCASECMP$])
m4trace:configure.ac:143: -1- m4_pattern_allow([^HAVE_ISBLANK$])
m4trace:configure.ac:154: -1- m4_pattern_allow([^size_t$])
m4trace:configure.ac:155: -1- m4_pattern_allow([^TM_IN_SYS_TIME$])
m4trace:configure.ac:158: -1- m4_pattern_allow([^HAVE_STDLIB_H$])
m4trace:configure.ac:158: -1- m4_pattern_allow([^HAVE_MALLOC$])
m4trace:configure.ac:158: -1- m4_pattern_allow([^HAVE_MALLOC$])
m4trace:configure.ac:158: -1- m4_pattern_allow([^LIB@&t@OBJS$])
m4trace:configure.ac:158: -1- m4_pattern_allow([^malloc$])
m4trace:configure.ac:159: -1- m4_pattern_allow([^HAVE_STRFTIME$])
m4trace:configure.ac:159: -1- m4_pattern_allow([^HAVE_STRFTIME$])
m4trace:configure.ac:160: -1- m4_pattern_allow([^POW_LIB$])
m4trace:configure.ac:160: -1- m4_pattern_allow([^LIB@&t@OBJS$])
m4trace:configure.ac:167: -1- AM_CONDITIONAL([USE_SYS_GETOPTLONG], [test "$SYS_GETOPTLONG" = "1"])
m4trace:configure.ac:167: -1- m4_pattern_allow([^USE_SYS_GETOPTLONG_TRUE$])
m4trace:configure.ac:167: -1- m4_pattern_allow([^USE_SYS_GETOPTLONG_FALSE$])
m4trace:configure.ac:167: -1- _AM_SUBST_NOTMAKE([USE_SYS_GETOPTLONG_TRUE])
m4trace:configure.ac:167: -1- _AM_SUBST_NOTMAKE([USE_SYS_GETOPTLONG_FALSE])
m4trace:configure.ac:168: -1- AM_CONDITIONAL([USE_ARGREX], [test "$SYS_REGEX" = "1"])
m4trace:configure.ac:168: -1- m4_pattern_allow([^USE_ARGREX_TRUE$])
m4trace:configure.ac:168: -1- m4_pattern_allow([^USE_ARGREX_FALSE$])
m4trace:configure.ac:168: -1- _AM_SUBST_NOTMAKE([USE_ARGREX_TRUE])
m4trace:configure.ac:168: -1- _AM_SUBST_NOTMAKE([USE_ARGREX_FALSE])
m4trace:configure.ac:169: -1- AM_CONDITIONAL([USE_ARGDATE], [test "$SYS_STRPTIME" = "1"])
m4trace:configure.ac:169: -1- m4_pattern_allow([^USE_ARGDATE_TRUE$])
m4trace:configure.ac:169: -1- m4_pattern_allow([^USE_ARGDATE_FALSE$])
m4trace:configure.ac:169: -1- _AM_SUBST_NOTMAKE([USE_ARGDATE_TRUE])
m4trace:configure.ac:169: -1- _AM_SUBST_NOTMAKE([USE_ARGDATE_FALSE])
m4trace:configure.ac:172: -1- m4_pattern_allow([^CC_HAS_LONG_LONG$])
m4trace:configure.ac:175: -1- m4_pattern_allow([^HAVE_UINT8_T$])
m4trace:configure.ac:175: -1- m4_pattern_allow([^HAVE_UINT16_T$])
m4trace:configure.ac:175: -1- m4_pattern_allow([^HAVE_UINT32_T$])
m4trace:configure.ac:176: -1- m4_pattern_allow([^HAVE_INT8_T$])
m4trace:configure.ac:176: -1- m4_pattern_allow([^HAVE_INT16_T$])
m4trace:configure.ac:176: -1- m4_pattern_allow([^HAVE_INT32_T$])
m4trace:configure.ac:178: -1- m4_pattern_allow([^SIZEOF_CHAR$])
m4trace:configure.ac:179: -1- m4_pattern_allow([^SIZEOF_SHORT$])
m4trace:configure.ac:180: -1- m4_pattern_allow([^SIZEOF_INT$])
m4trace:configure.ac:181: -1- m4_pattern_allow([^SIZEOF_LONG$])
m4trace:configure.ac:182: -1- m4_pattern_allow([^SIZEOF_LONG_LONG$])
m4trace:configure.ac:185: -1- m4_pattern_allow([^HAVE___COMPAR_FN_T$])
m4trace:configure.ac:188: -1- m4_pattern_allow([^HAVE_LIBREADLINE$])
m4trace:configure.ac:285: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
configure.ac:93: the top level])
m4trace:configure.ac:93: -1- m4_pattern_allow([^RETSIGTYPE$])
m4trace:configure.ac:101: -1- m4_pattern_allow([^HAVE_BASENAME$])
m4trace:configure.ac:102: -1- m4_pattern_allow([^HAVE_STRCOLL$])
m4trace:configure.ac:103: -1- m4_pattern_allow([^HAVE_DECL_I_PUSH$])
m4trace:configure.ac:103: -1- m4_pattern_allow([^HAVE_DECL_RL_EVENT_HOOK$])
m4trace:configure.ac:105: -1- m4_pattern_allow([^WORDS_BIGENDIAN$])
m4trace:configure.ac:105: -1- m4_pattern_allow([^AC_APPLE_UNIVERSAL_BUILD$])
m4trace:configure.ac:111: -1- m4_pattern_allow([^HAVE_STRNDUP$])
m4trace:configure.ac:125: -1- m4_pattern_allow([^HAVE_STRCASECMP$])
m4trace:configure.ac:140: -1- m4_pattern_allow([^HAVE_ISBLANK$])
m4trace:configure.ac:151: -1- m4_pattern_allow([^size_t$])
m4trace:configure.ac:152: -1- m4_pattern_allow([^TM_IN_SYS_TIME$])
m4trace:configure.ac:155: -1- m4_pattern_allow([^HAVE_STDLIB_H$])
m4trace:configure.ac:155: -1- m4_pattern_allow([^HAVE_MALLOC$])
m4trace:configure.ac:155: -1- m4_pattern_allow([^HAVE_MALLOC$])
m4trace:configure.ac:155: -1- m4_pattern_allow([^LIB@&t@OBJS$])
m4trace:configure.ac:155: -1- m4_pattern_allow([^malloc$])
m4trace:configure.ac:156: -1- m4_pattern_allow([^HAVE_STRFTIME$])
m4trace:configure.ac:156: -1- m4_pattern_allow([^HAVE_STRFTIME$])
m4trace:configure.ac:157: -1- m4_pattern_allow([^POW_LIB$])
m4trace:configure.ac:157: -1- m4_pattern_allow([^LIB@&t@OBJS$])
m4trace:configure.ac:164: -1- AM_CONDITIONAL([USE_SYS_GETOPTLONG], [test "$SYS_GETOPTLONG" = "1"])
m4trace:configure.ac:164: -1- m4_pattern_allow([^USE_SYS_GETOPTLONG_TRUE$])
m4trace:configure.ac:164: -1- m4_pattern_allow([^USE_SYS_GETOPTLONG_FALSE$])
m4trace:configure.ac:164: -1- _AM_SUBST_NOTMAKE([USE_SYS_GETOPTLONG_TRUE])
m4trace:configure.ac:164: -1- _AM_SUBST_NOTMAKE([USE_SYS_GETOPTLONG_FALSE])
m4trace:configure.ac:165: -1- AM_CONDITIONAL([USE_ARGREX], [test "$SYS_REGEX" = "1"])
m4trace:configure.ac:165: -1- m4_pattern_allow([^USE_ARGREX_TRUE$])
m4trace:configure.ac:165: -1- m4_pattern_allow([^USE_ARGREX_FALSE$])
m4trace:configure.ac:165: -1- _AM_SUBST_NOTMAKE([USE_ARGREX_TRUE])
m4trace:configure.ac:165: -1- _AM_SUBST_NOTMAKE([USE_ARGREX_FALSE])
m4trace:configure.ac:166: -1- AM_CONDITIONAL([USE_ARGDATE], [test "$SYS_STRPTIME" = "1"])
m4trace:configure.ac:166: -1- m4_pattern_allow([^USE_ARGDATE_TRUE$])
m4trace:configure.ac:166: -1- m4_pattern_allow([^USE_ARGDATE_FALSE$])
m4trace:configure.ac:166: -1- _AM_SUBST_NOTMAKE([USE_ARGDATE_TRUE])
m4trace:configure.ac:166: -1- _AM_SUBST_NOTMAKE([USE_ARGDATE_FALSE])
m4trace:configure.ac:169: -1- m4_pattern_allow([^CC_HAS_LONG_LONG$])
m4trace:configure.ac:172: -1- m4_pattern_allow([^HAVE_UINT8_T$])
m4trace:configure.ac:172: -1- m4_pattern_allow([^HAVE_UINT16_T$])
m4trace:configure.ac:172: -1- m4_pattern_allow([^HAVE_UINT32_T$])
m4trace:configure.ac:173: -1- m4_pattern_allow([^HAVE_INT8_T$])
m4trace:configure.ac:173: -1- m4_pattern_allow([^HAVE_INT16_T$])
m4trace:configure.ac:173: -1- m4_pattern_allow([^HAVE_INT32_T$])
m4trace:configure.ac:175: -1- m4_pattern_allow([^SIZEOF_CHAR$])
m4trace:configure.ac:176: -1- m4_pattern_allow([^SIZEOF_SHORT$])
m4trace:configure.ac:177: -1- m4_pattern_allow([^SIZEOF_INT$])
m4trace:configure.ac:178: -1- m4_pattern_allow([^SIZEOF_LONG$])
m4trace:configure.ac:179: -1- m4_pattern_allow([^SIZEOF_LONG_LONG$])
m4trace:configure.ac:182: -1- m4_pattern_allow([^HAVE___COMPAR_FN_T$])
m4trace:configure.ac:185: -1- m4_pattern_allow([^HAVE_LIBREADLINE$])
m4trace:configure.ac:277: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
You should run autoupdate.], [../../lib/autoconf/general.m4:230: AC_HELP_STRING is expanded from...
configure.ac:285: the top level])
m4trace:configure.ac:295: -1- m4_pattern_allow([^DEBUGFLAGS$])
m4trace:configure.ac:297: -1- m4_pattern_allow([^RAW_RANGE_STATS$])
m4trace:configure.ac:298: -1- m4_pattern_allow([^HAVE_ETH_PHY$])
m4trace:configure.ac:299: -1- m4_pattern_allow([^HAVE_UNSIGNED_XORI$])
m4trace:configure.ac:300: -1- m4_pattern_allow([^SIMPLE_EXECUTION$])
m4trace:configure.ac:301: -1- m4_pattern_allow([^COMPLEX_EXECUTION$])
m4trace:configure.ac:302: -1- m4_pattern_allow([^DYNAMIC_EXECUTION$])
m4trace:configure.ac:303: -1- AM_CONDITIONAL([GENERATE_NEEDED], [test x$execution = x1])
m4trace:configure.ac:303: -1- m4_pattern_allow([^GENERATE_NEEDED_TRUE$])
m4trace:configure.ac:303: -1- m4_pattern_allow([^GENERATE_NEEDED_FALSE$])
m4trace:configure.ac:303: -1- _AM_SUBST_NOTMAKE([GENERATE_NEEDED_TRUE])
m4trace:configure.ac:303: -1- _AM_SUBST_NOTMAKE([GENERATE_NEEDED_FALSE])
m4trace:configure.ac:304: -1- AM_CONDITIONAL([DYNAMIC_EXECUTION], [test x$execution = x2])
m4trace:configure.ac:304: -1- m4_pattern_allow([^DYNAMIC_EXECUTION_TRUE$])
m4trace:configure.ac:304: -1- m4_pattern_allow([^DYNAMIC_EXECUTION_FALSE$])
m4trace:configure.ac:304: -1- _AM_SUBST_NOTMAKE([DYNAMIC_EXECUTION_TRUE])
m4trace:configure.ac:304: -1- _AM_SUBST_NOTMAKE([DYNAMIC_EXECUTION_FALSE])
m4trace:configure.ac:313: -1- m4_pattern_allow([^DEJAGNU$])
m4trace:configure.ac:318: -1- m4_pattern_allow([^RUNTESTDEFAULTFLAGS$])
m4trace:configure.ac:321: -1- m4_pattern_allow([^BUILD_DIR$])
m4trace:configure.ac:323: -1- m4_pattern_allow([^CFLAGS$])
m4trace:configure.ac:324: -1- m4_pattern_allow([^LOCAL_CFLAGS$])
m4trace:configure.ac:325: -1- m4_pattern_allow([^LOCAL_LDFLAGS$])
m4trace:configure.ac:326: -1- m4_pattern_allow([^LOCAL_DEFS$])
m4trace:configure.ac:328: -1- m4_pattern_allow([^AR$])
m4trace:configure.ac:329: -1- m4_pattern_allow([^ARFLAGS$])
m4trace:configure.ac:331: -1- m4_pattern_allow([^host_cpu$])
m4trace:configure.ac:332: -1- m4_pattern_allow([^host_os$])
m4trace:configure.ac:333: -1- m4_pattern_allow([^host$])
m4trace:configure.ac:335: -1- m4_pattern_allow([^SUMVERSION$])
m4trace:configure.ac:336: -1- m4_pattern_allow([^TERMCAP_LIB$])
m4trace:configure.ac:338: -1- m4_pattern_allow([^HAVE_EXECUTION$])
m4trace:configure.ac:348: -1- m4_pattern_allow([^INCLUDES$])
m4trace:configure.ac:408: -1- m4_pattern_allow([^LIB@&t@OBJS$])
m4trace:configure.ac:408: -1- m4_pattern_allow([^LTLIBOBJS$])
m4trace:configure.ac:408: -1- AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])
m4trace:configure.ac:408: -1- m4_pattern_allow([^am__EXEEXT_TRUE$])
m4trace:configure.ac:408: -1- m4_pattern_allow([^am__EXEEXT_FALSE$])
m4trace:configure.ac:408: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_TRUE])
m4trace:configure.ac:408: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_FALSE])
m4trace:configure.ac:408: -1- _AC_AM_CONFIG_HEADER_HOOK(["$ac_file"])
m4trace:configure.ac:408: -1- _LT_PROG_LTMAIN
m4trace:configure.ac:408: -1- _AM_OUTPUT_DEPENDENCY_COMMANDS
configure.ac:277: the top level])
m4trace:configure.ac:287: -1- m4_pattern_allow([^DEBUGFLAGS$])
m4trace:configure.ac:289: -1- m4_pattern_allow([^RAW_RANGE_STATS$])
m4trace:configure.ac:290: -1- m4_pattern_allow([^HAVE_ETH_PHY$])
m4trace:configure.ac:291: -1- m4_pattern_allow([^HAVE_UNSIGNED_XORI$])
m4trace:configure.ac:292: -1- m4_pattern_allow([^SIMPLE_EXECUTION$])
m4trace:configure.ac:293: -1- m4_pattern_allow([^COMPLEX_EXECUTION$])
m4trace:configure.ac:294: -1- AM_CONDITIONAL([GENERATE_NEEDED], [test x$execution = x1])
m4trace:configure.ac:294: -1- m4_pattern_allow([^GENERATE_NEEDED_TRUE$])
m4trace:configure.ac:294: -1- m4_pattern_allow([^GENERATE_NEEDED_FALSE$])
m4trace:configure.ac:294: -1- _AM_SUBST_NOTMAKE([GENERATE_NEEDED_TRUE])
m4trace:configure.ac:294: -1- _AM_SUBST_NOTMAKE([GENERATE_NEEDED_FALSE])
m4trace:configure.ac:304: -1- m4_pattern_allow([^DEJAGNU$])
m4trace:configure.ac:309: -1- m4_pattern_allow([^RUNTESTDEFAULTFLAGS$])
m4trace:configure.ac:312: -1- m4_pattern_allow([^BUILD_DIR$])
m4trace:configure.ac:314: -1- m4_pattern_allow([^CFLAGS$])
m4trace:configure.ac:315: -1- m4_pattern_allow([^LOCAL_CFLAGS$])
m4trace:configure.ac:316: -1- m4_pattern_allow([^LOCAL_LDFLAGS$])
m4trace:configure.ac:317: -1- m4_pattern_allow([^LOCAL_DEFS$])
m4trace:configure.ac:319: -1- m4_pattern_allow([^AR$])
m4trace:configure.ac:320: -1- m4_pattern_allow([^ARFLAGS$])
m4trace:configure.ac:322: -1- m4_pattern_allow([^host_cpu$])
m4trace:configure.ac:323: -1- m4_pattern_allow([^host_os$])
m4trace:configure.ac:324: -1- m4_pattern_allow([^host$])
m4trace:configure.ac:326: -1- m4_pattern_allow([^SUMVERSION$])
m4trace:configure.ac:327: -1- m4_pattern_allow([^TERMCAP_LIB$])
m4trace:configure.ac:329: -1- m4_pattern_allow([^HAVE_EXECUTION$])
m4trace:configure.ac:339: -1- m4_pattern_allow([^INCLUDES$])
m4trace:configure.ac:398: -1- m4_pattern_allow([^LIB@&t@OBJS$])
m4trace:configure.ac:398: -1- m4_pattern_allow([^LTLIBOBJS$])
m4trace:configure.ac:398: -1- AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])
m4trace:configure.ac:398: -1- m4_pattern_allow([^am__EXEEXT_TRUE$])
m4trace:configure.ac:398: -1- m4_pattern_allow([^am__EXEEXT_FALSE$])
m4trace:configure.ac:398: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_TRUE])
m4trace:configure.ac:398: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_FALSE])
m4trace:configure.ac:398: -1- _AC_AM_CONFIG_HEADER_HOOK(["$ac_file"])
m4trace:configure.ac:398: -1- _LT_PROG_LTMAIN
m4trace:configure.ac:398: -1- _AM_OUTPUT_DEPENDENCY_COMMANDS
/autom4te.cache/requests
15,25 → 15,25
'configure.ac'
],
{
'AM_PROG_F77_C_O' => 1,
'_LT_AC_TAGCONFIG' => 1,
'AM_PROG_F77_C_O' => 1,
'm4_pattern_forbid' => 1,
'AC_INIT' => 1,
'm4_pattern_forbid' => 1,
'_AM_COND_IF' => 1,
'AC_CANONICAL_TARGET' => 1,
'_AM_COND_IF' => 1,
'AC_SUBST' => 1,
'AC_CONFIG_LIBOBJ_DIR' => 1,
'AC_SUBST' => 1,
'AC_FC_SRCEXT' => 1,
'AC_CANONICAL_HOST' => 1,
'AC_FC_SRCEXT' => 1,
'AC_PROG_LIBTOOL' => 1,
'AM_INIT_AUTOMAKE' => 1,
'AC_CONFIG_SUBDIRS' => 1,
'AM_AUTOMAKE_VERSION' => 1,
'LT_CONFIG_LTDL_DIR' => 1,
'AC_REQUIRE_AUX_FILE' => 1,
'AC_CONFIG_LINKS' => 1,
'AC_REQUIRE_AUX_FILE' => 1,
'LT_SUPPORTED_TAG' => 1,
'm4_sinclude' => 1,
'LT_SUPPORTED_TAG' => 1,
'AM_MAINTAINER_MODE' => 1,
'AM_GNU_GETTEXT_INTL_SUBDIR' => 1,
'_m4_warn' => 1,
46,17 → 46,17
'include' => 1,
'AM_GNU_GETTEXT' => 1,
'AC_LIBSOURCE' => 1,
'AM_PROG_FC_C_O' => 1,
'AC_CANONICAL_BUILD' => 1,
'AM_PROG_FC_C_O' => 1,
'AC_FC_FREEFORM' => 1,
'AH_OUTPUT' => 1,
'_AM_SUBST_NOTMAKE' => 1,
'AC_CONFIG_AUX_DIR' => 1,
'_AM_SUBST_NOTMAKE' => 1,
'm4_pattern_allow' => 1,
'sinclude' => 1,
'AM_PROG_CC_C_O' => 1,
'sinclude' => 1,
'm4_pattern_allow' => 1,
'AC_CANONICAL_SYSTEM' => 1,
'AM_CONDITIONAL' => 1,
'AC_CANONICAL_SYSTEM' => 1,
'AC_CONFIG_HEADERS' => 1,
'AC_DEFINE_TRACE_LITERAL' => 1,
'm4_include' => 1,
118,8 → 118,8
'_m4_warn' => 1,
'AC_LIBTOOL_OBJDIR' => 1,
'gl_FUNC_ARGZ' => 1,
'LTOBSOLETE_VERSION' => 1,
'AM_SANITY_CHECK' => 1,
'LTOBSOLETE_VERSION' => 1,
'AC_LIBTOOL_LANG_GCJ_CONFIG' => 1,
'AC_LIBTOOL_PROG_COMPILER_PIC' => 1,
'LT_LIB_M' => 1,
134,16 → 134,16
'LT_SYS_DLOPEN_DEPLIBS' => 1,
'_LT_AC_LANG_F77' => 1,
'AC_LIBTOOL_CONFIG' => 1,
'_AM_SUBST_NOTMAKE' => 1,
'AC_LTDL_DLLIB' => 1,
'_AM_SUBST_NOTMAKE' => 1,
'_AM_AUTOCONF_VERSION' => 1,
'AM_DISABLE_SHARED' => 1,
'_LTDL_SETUP' => 1,
'AM_PROG_LIBTOOL' => 1,
'_LT_AC_LANG_CXX' => 1,
'AM_PROG_LIBTOOL' => 1,
'AM_PROG_LD' => 1,
'_LT_AC_FILE_LTDLL_C' => 1,
'AC_LIB_LTDL' => 1,
'_LT_AC_FILE_LTDLL_C' => 1,
'AM_PROG_LD' => 1,
'AU_DEFUN' => 1,
'AC_PROG_NM' => 1,
'AC_LIBTOOL_DLOPEN' => 1,
167,31 → 167,31
'AC_LTDL_OBJDIR' => 1,
'_LT_PATH_TOOL_PREFIX' => 1,
'AC_LIBTOOL_RC' => 1,
'AM_SILENT_RULES' => 1,
'AC_DISABLE_FAST_INSTALL' => 1,
'_LT_AC_PROG_ECHO_BACKSLASH' => 1,
'AC_DISABLE_FAST_INSTALL' => 1,
'AM_SILENT_RULES' => 1,
'include' => 1,
'_LT_AC_SYS_LIBPATH_AIX' => 1,
'_LT_AC_TRY_DLOPEN_SELF' => 1,
'_LT_AC_SYS_LIBPATH_AIX' => 1,
'include' => 1,
'LT_AC_PROG_SED' => 1,
'AM_ENABLE_SHARED' => 1,
'LTDL_INSTALLABLE' => 1,
'_LT_AC_LANG_GCJ_CONFIG' => 1,
'AC_ENABLE_SHARED' => 1,
'AC_ENABLE_STATIC' => 1,
'AC_LIBTOOL_SYS_HARD_LINK_LOCKS' => 1,
'AC_ENABLE_STATIC' => 1,
'AM_PROG_CC_C_O' => 1,
'_LT_AC_TAGVAR' => 1,
'AM_PROG_CC_C_O' => 1,
'AC_LIBTOOL_LANG_F77_CONFIG' => 1,
'AM_CONDITIONAL' => 1,
'LT_LIB_DLLOAD' => 1,
'LTVERSION_VERSION' => 1,
'LTDL_INIT' => 1,
'LTVERSION_VERSION' => 1,
'm4_include' => 1,
'AM_PROG_INSTALL_SH' => 1,
'm4_include' => 1,
'AC_PROG_EGREP' => 1,
'_AC_AM_CONFIG_HEADER_HOOK' => 1,
'AC_PATH_MAGIC' => 1,
'_AC_AM_CONFIG_HEADER_HOOK' => 1,
'AC_LTDL_SYSSEARCHPATH' => 1,
'AM_MAKE_INCLUDE' => 1,
'_LT_AC_TAGCONFIG' => 1,
235,11 → 235,11
'AM_PROG_NM' => 1,
'AC_LIBLTDL_CONVENIENCE' => 1,
'AC_DEPLIBS_CHECK_METHOD' => 1,
'AM_SET_CURRENT_AUTOMAKE_VERSION' => 1,
'AC_LIBLTDL_INSTALLABLE' => 1,
'AM_SET_CURRENT_AUTOMAKE_VERSION' => 1,
'AC_LTDL_ENABLE_INSTALL' => 1,
'AC_LIBTOOL_SYS_DYNAMIC_LINKER' => 1,
'LT_PROG_GCJ' => 1,
'AC_LIBTOOL_SYS_DYNAMIC_LINKER' => 1,
'AM_INIT_AUTOMAKE' => 1,
'AC_DISABLE_STATIC' => 1,
'LT_PATH_NM' => 1,
247,26 → 247,26
'_LT_AC_LOCK' => 1,
'_LT_AC_LANG_RC_CONFIG' => 1,
'LT_SYS_MODULE_PATH' => 1,
'LT_WITH_LTDL' => 1,
'AC_LIBTOOL_POSTDEP_PREDEP' => 1,
'LT_WITH_LTDL' => 1,
'AC_LTDL_SHLIBPATH' => 1,
'AM_PROG_AS' => 1,
'AM_AUX_DIR_EXPAND' => 1,
'AC_LIBTOOL_PROG_COMPILER_NO_RTTI' => 1,
'_LT_AC_LANG_F77_CONFIG' => 1,
'AC_LIBTOOL_PROG_COMPILER_NO_RTTI' => 1,
'_AM_SET_OPTIONS' => 1,
'_LT_COMPILER_OPTION' => 1,
'_AM_SET_OPTIONS' => 1,
'_AM_OUTPUT_DEPENDENCY_COMMANDS' => 1,
'AM_RUN_LOG' => 1,
'_AM_OUTPUT_DEPENDENCY_COMMANDS' => 1,
'AC_LIBTOOL_SYS_OLD_ARCHIVE' => 1,
'AC_LTDL_SYS_DLOPEN_DEPLIBS' => 1,
'AC_LIBTOOL_PICMODE' => 1,
'AC_LTDL_SYS_DLOPEN_DEPLIBS' => 1,
'AC_LIBTOOL_SYS_OLD_ARCHIVE' => 1,
'AC_CHECK_LIBM' => 1,
'LT_PATH_LD' => 1,
'AC_CHECK_LIBM' => 1,
'AC_LIBTOOL_SYS_LIB_STRIP' => 1,
'_AM_MANGLE_OPTION' => 1,
'AC_LTDL_SYMBOL_USCORE' => 1,
'AC_LIBTOOL_SYS_MAX_CMD_LEN' => 1,
'AC_LTDL_SYMBOL_USCORE' => 1,
'AM_SET_DEPDIR' => 1,
'_LT_CC_BASENAME' => 1,
'_LT_LIBOBJ' => 1
/autom4te.cache/output.0
1,5 → 1,5
@%:@! /bin/sh
@%:@ From configure.ac Id: configure.ac 532 2011-04-28 18:34:59Z jeremybennett using automake version AC_ACVERSION.
@%:@ From configure.ac Id: configure.ac 538 2011-05-09 14:42:56Z julius using automake version AC_ACVERSION.
@%:@ Guess values for system-dependent variables and create Makefiles.
@%:@ Generated by GNU Autoconf 2.64 for or1ksim 2011-04-28.
@%:@
775,8 → 775,6
BUILD_DIR
RUNTESTDEFAULTFLAGS
DEJAGNU
DYNAMIC_EXECUTION_FALSE
DYNAMIC_EXECUTION_TRUE
GENERATE_NEEDED_FALSE
GENERATE_NEEDED_TRUE
DEBUGFLAGS
1560,7 → 1558,7
--disable-dependency-tracking speeds up one-time build
--enable-dependency-tracking do not reject slow dependency extractors
--enable-profiling generate profiling code
--enable-execution Execution style to use (simple/complex/dynamic)
--enable-execution Execution style to use (simple/complex)
--enable-ethphy compiles sim with ethernet phy support
--enable-unsigned-xori l.xori immediate operand treated as unsigned
--enable-range-stats Specifies, whether we should do register accesses over time analysis.
10874,9 → 10872,6
$as_echo "@%:@define OR32_TYPES 1" >>confdefs.h
;;
 
dlx*) CPU_ARCH=dlx;
ARCH_ISA=DLX;;
 
*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unknown target architecture $target_cpu: OR32 ELF assumed" >&5
$as_echo "$as_me: WARNING: Unknown target architecture $target_cpu: OR32 ELF assumed" >&2;};
CPU_ARCH=or32;
12972,14 → 12967,8
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: complex" >&5
$as_echo "complex" >&6; }
;;
dynamic)
INCLUDES="-I\${top_srcdir}/cpu/$CPU_ARCH"
execution="2"
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: dynamic" >&5
$as_echo "dynamic" >&6; }
;;
*)
as_fn_error "\"execution must one of simple/complex/dynamic\"" "$LINENO" 5
as_fn_error "\"execution must one of simple/complex\"" "$LINENO" 5
;;
esac
13081,11 → 13070,6
@%:@define COMPLEX_EXECUTION $execution == 1
_ACEOF
 
cat >>confdefs.h <<_ACEOF
@%:@define DYNAMIC_EXECUTION $execution == 2
_ACEOF
if test x$execution = x1; then
GENERATE_NEEDED_TRUE=
GENERATE_NEEDED_FALSE='#'
13094,13 → 13078,6
GENERATE_NEEDED_FALSE=
fi
 
if test x$execution = x2; then
DYNAMIC_EXECUTION_TRUE=
DYNAMIC_EXECUTION_FALSE='#'
else
DYNAMIC_EXECUTION_TRUE='#'
DYNAMIC_EXECUTION_FALSE=
fi
 
 
 
13154,8 → 13131,6
 
# yuck. I don't know why I cannot just substitute $CPU_ARCH in the above
case "$CPU_ARCH" in
dlx) ac_config_files="$ac_config_files cpu/dlx/Makefile"
;;
*) ac_config_files="$ac_config_files cpu/or32/Makefile"
;;
esac
13297,10 → 13272,6
as_fn_error "conditional \"GENERATE_NEEDED\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
if test -z "${DYNAMIC_EXECUTION_TRUE}" && test -z "${DYNAMIC_EXECUTION_FALSE}"; then
as_fn_error "conditional \"DYNAMIC_EXECUTION\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
 
: ${CONFIG_STATUS=./config.status}
ac_write_fail=0
14182,7 → 14153,6
"testsuite/test-code/lib-upcalls/Makefile") CONFIG_FILES="$CONFIG_FILES testsuite/test-code/lib-upcalls/Makefile" ;;
"tick/Makefile") CONFIG_FILES="$CONFIG_FILES tick/Makefile" ;;
"vapi/Makefile") CONFIG_FILES="$CONFIG_FILES vapi/Makefile" ;;
"cpu/dlx/Makefile") CONFIG_FILES="$CONFIG_FILES cpu/dlx/Makefile" ;;
"cpu/or32/Makefile") CONFIG_FILES="$CONFIG_FILES cpu/or32/Makefile" ;;
 
*) as_fn_error "invalid argument: \`$ac_config_target'" "$LINENO" 5;;

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.