URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Subversion Repositories openrisc
Compare Revisions
- This comparison shows the changes necessary to convert path
/openrisc/trunk
- from Rev 551 to Rev 552
- ↔ Reverse comparison
Rev 551 → Rev 552
/or1ksim/cpu/or16/.cvsignore
File deleted
/or1ksim/cpu/dlx/Makefile.in
File deleted
/or1ksim/cpu/dlx/execute.c
File deleted
or1ksim/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: or1ksim/cpu/dlx/arch.h
===================================================================
--- or1ksim/cpu/dlx/arch.h (revision 551)
+++ or1ksim/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
or1ksim/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: or1ksim/cpu/dlx/Makefile.am
===================================================================
--- or1ksim/cpu/dlx/Makefile.am (revision 551)
+++ or1ksim/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
or1ksim/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: or1ksim/cpu/dlx/.cvsignore
===================================================================
--- or1ksim/cpu/dlx/.cvsignore (revision 551)
+++ or1ksim/cpu/dlx/.cvsignore (nonexistent)
@@ -1 +0,0 @@
-Makefile
Index: or1ksim/cpu/or32/op-mac-op.h
===================================================================
--- or1ksim/cpu/or32/op-mac-op.h (revision 551)
+++ or1ksim/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;
-}
-
or1ksim/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: or1ksim/cpu/or32/op-3t-op.h
===================================================================
--- or1ksim/cpu/or32/op-3t-op.h (revision 551)
+++ or1ksim/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;
-}
-
or1ksim/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: or1ksim/cpu/or32/op-2t-op.h
===================================================================
--- or1ksim/cpu/or32/op-2t-op.h (revision 551)
+++ or1ksim/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;
-}
-
or1ksim/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: or1ksim/cpu/or32/op-1t-op.h
===================================================================
--- or1ksim/cpu/or32/op-1t-op.h (revision 551)
+++ or1ksim/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;
-}
-
or1ksim/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: or1ksim/cpu/or32/op.c
===================================================================
--- or1ksim/cpu/or32/op.c (revision 551)
+++ or1ksim/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;
-}
-
or1ksim/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: or1ksim/cpu/or32/dyngen-i386.c
===================================================================
--- or1ksim/cpu/or32/dyngen-i386.c (revision 551)
+++ or1ksim/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
-};
or1ksim/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: or1ksim/cpu/or32/sched-i386.h
===================================================================
--- or1ksim/cpu/or32/sched-i386.h (revision 551)
+++ or1ksim/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));
-}
-
or1ksim/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: or1ksim/cpu/or32/common-i386.h
===================================================================
--- or1ksim/cpu/or32/common-i386.h (revision 551)
+++ or1ksim/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;
-}
-
or1ksim/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: or1ksim/cpu/or32/dyngen.c
===================================================================
--- or1ksim/cpu/or32/dyngen.c (revision 551)
+++ or1ksim/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
or1ksim/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: or1ksim/cpu/or32/dyngen.h
===================================================================
--- or1ksim/cpu/or32/dyngen.h (revision 551)
+++ or1ksim/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;
or1ksim/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: or1ksim/cpu/or32/dyngen-elf.c
===================================================================
--- or1ksim/cpu/or32/dyngen-elf.c (revision 551)
+++ or1ksim/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 };
or1ksim/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: or1ksim/cpu/or32/op-i386.h
===================================================================
--- or1ksim/cpu/or32/op-i386.h (revision 551)
+++ or1ksim/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 */
or1ksim/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: or1ksim/cpu/or32/op-extend-op.h
===================================================================
--- or1ksim/cpu/or32/op-extend-op.h (revision 551)
+++ or1ksim/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;
-}
-
or1ksim/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: or1ksim/cpu/or32/dyn-rec.c
===================================================================
--- or1ksim/cpu/or32/dyn-rec.c (revision 551)
+++ or1ksim/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);
-}
-
or1ksim/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: or1ksim/cpu/or32/op-mftspr-op.h
===================================================================
--- or1ksim/cpu/or32/op-mftspr-op.h (revision 551)
+++ or1ksim/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
or1ksim/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: or1ksim/cpu/or32/dyn-rec.h
===================================================================
--- or1ksim/cpu/or32/dyn-rec.h (revision 551)
+++ or1ksim/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 */
-
or1ksim/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: or1ksim/cpu/or32/op-ff1-op.h
===================================================================
--- or1ksim/cpu/or32/op-ff1-op.h (revision 551)
+++ or1ksim/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;
-}
-
-
or1ksim/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: or1ksim/cpu/or32/i386-regs.h
===================================================================
--- or1ksim/cpu/or32/i386-regs.h (revision 551)
+++ or1ksim/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
or1ksim/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: or1ksim/cpu/or32/op-3t.h
===================================================================
--- or1ksim/cpu/or32/op-3t.h (revision 551)
+++ or1ksim/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
or1ksim/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: or1ksim/cpu/or32/op-2t.h
===================================================================
--- or1ksim/cpu/or32/op-2t.h (revision 551)
+++ or1ksim/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
or1ksim/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: or1ksim/cpu/or32/op-1t.h
===================================================================
--- or1ksim/cpu/or32/op-1t.h (revision 551)
+++ or1ksim/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
or1ksim/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: or1ksim/cpu/or32/op-comp-op.h
===================================================================
--- or1ksim/cpu/or32/op-comp-op.h (revision 551)
+++ or1ksim/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
-
or1ksim/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: or1ksim/cpu/or32/def-op-t.h
===================================================================
--- or1ksim/cpu/or32/def-op-t.h (revision 551)
+++ or1ksim/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)
-
or1ksim/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: or1ksim/cpu/or32/op-lwhb-op.h
===================================================================
--- or1ksim/cpu/or32/op-lwhb-op.h (revision 551)
+++ or1ksim/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
-
or1ksim/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: or1ksim/cpu/or32/op-swhb-op.h
===================================================================
--- or1ksim/cpu/or32/op-swhb-op.h (revision 551)
+++ or1ksim/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
or1ksim/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: or1ksim/cpu/or32/op-t-reg-mov-op.h
===================================================================
--- or1ksim/cpu/or32/op-t-reg-mov-op.h (revision 551)
+++ or1ksim/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;
-}
-
or1ksim/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: or1ksim/cpu/or32/op-support.h
===================================================================
--- or1ksim/cpu/or32/op-support.h (revision 551)
+++ or1ksim/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);
or1ksim/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: or1ksim/cpu/or32/op-support.c
===================================================================
--- or1ksim/cpu/or32/op-support.c (revision 551)
+++ or1ksim/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);
-}
-
or1ksim/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: or1ksim/cpu/or32/dyn32-defs.h
===================================================================
--- or1ksim/cpu/or32/dyn32-defs.h (revision 551)
+++ or1ksim/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 */
-
or1ksim/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: or1ksim/cpu/or32/op-arith-op.h
===================================================================
--- or1ksim/cpu/or32/op-arith-op.h (revision 551)
+++ or1ksim/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
-
or1ksim/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: or1ksim/cpu/or32/rec-i386.h
===================================================================
--- or1ksim/cpu/or32/rec-i386.h (revision 551)
+++ or1ksim/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;
-}
-
or1ksim/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: or1ksim/cpu/or32/Makefile.in
===================================================================
--- or1ksim/cpu/or32/Makefile.in (revision 551)
+++ or1ksim/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:
/or1ksim/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 |
/or1ksim/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 |
/or1ksim/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 |
/or1ksim/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 |
{ |
/or1ksim/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 */ |
/or1ksim/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 */ |
/or1ksim/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 |
} |
/or1ksim/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); |
/or1ksim/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 |
|
/or1ksim/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 |
/or1ksim/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}. |
/or1ksim/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 |
/or1ksim/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 |
/or1ksim/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. |
/or1ksim/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 |
|
/or1ksim/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;; |
/or1ksim/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;; |
/or1ksim/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]) |
/or1ksim/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 |
/or1ksim/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 |
/or1ksim/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;; |