From 2b8fd28a95cf1cb2c233b89ab12534d6bdf4b633 Mon Sep 17 00:00:00 2001 From: steve Date: Sat, 26 Nov 2005 17:16:05 +0000 Subject: [PATCH] Force instruction that can be indexed. --- vvp/codes.h | 6 ++- vvp/compile.cc | 6 ++- vvp/opcodes.txt | 10 +++- vvp/vthread.cc | 46 +++++++++++++++++- vvp/vvp_net.cc | 124 +++++++++++++++++++++++++++++++++++++----------- vvp/vvp_net.h | 15 +++++- 6 files changed, 173 insertions(+), 34 deletions(-) diff --git a/vvp/codes.h b/vvp/codes.h index 0428cb634..1e19a31d7 100644 --- a/vvp/codes.h +++ b/vvp/codes.h @@ -19,7 +19,7 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ #ifdef HAVE_CVS_IDENT -#ident "$Id: codes.h,v 1.76 2005/09/17 04:01:01 steve Exp $" +#ident "$Id: codes.h,v 1.77 2005/11/26 17:16:05 steve Exp $" #endif @@ -73,6 +73,7 @@ extern bool of_DIV_WR(vthread_t thr, vvp_code_t code); extern bool of_END(vthread_t thr, vvp_code_t code); extern bool of_FORCE_LINK(vthread_t thr, vvp_code_t code); extern bool of_FORCE_V(vthread_t thr, vvp_code_t code); +extern bool of_FORCE_X0(vthread_t thr, vvp_code_t code); extern bool of_FORK(vthread_t thr, vvp_code_t code); extern bool of_INV(vthread_t thr, vvp_code_t code); extern bool of_IX_ADD(vthread_t thr, vvp_code_t code); @@ -178,6 +179,9 @@ extern vvp_code_t codespace_null(void); /* * $Log: codes.h,v $ + * Revision 1.77 2005/11/26 17:16:05 steve + * Force instruction that can be indexed. + * * Revision 1.76 2005/09/17 04:01:01 steve * Add the load/v.p instruction. * diff --git a/vvp/compile.cc b/vvp/compile.cc index 383291c12..09398e859 100644 --- a/vvp/compile.cc +++ b/vvp/compile.cc @@ -17,7 +17,7 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ #ifdef HAVE_CVS_IDENT -#ident "$Id: compile.cc,v 1.214 2005/10/12 17:23:15 steve Exp $" +#ident "$Id: compile.cc,v 1.215 2005/11/26 17:16:05 steve Exp $" #endif # include "arith.h" @@ -118,6 +118,7 @@ const static struct opcode_table_s opcode_table[] = { { "%end", of_END, 0, {OA_NONE, OA_NONE, OA_NONE} }, { "%force/link",of_FORCE_LINK,2,{OA_FUNC_PTR,OA_FUNC_PTR2,OA_NONE} }, { "%force/v",of_FORCE_V,3, {OA_FUNC_PTR, OA_BIT1, OA_BIT2} }, + { "%force/x0",of_FORCE_X0,3,{OA_FUNC_PTR, OA_BIT1, OA_BIT2} }, { "%inv", of_INV, 2, {OA_BIT1, OA_BIT2, OA_NONE} }, { "%ix/add", of_IX_ADD, 2, {OA_BIT1, OA_NUMBER, OA_NONE} }, { "%ix/get", of_IX_GET, 3, {OA_BIT1, OA_BIT2, OA_NUMBER} }, @@ -1481,6 +1482,9 @@ void compile_param_string(char*label, char*name, char*str, char*value) /* * $Log: compile.cc,v $ + * Revision 1.215 2005/11/26 17:16:05 steve + * Force instruction that can be indexed. + * * Revision 1.214 2005/10/12 17:23:15 steve * Add alias nodes. * diff --git a/vvp/opcodes.txt b/vvp/opcodes.txt index 3fc496301..0fe9b9820 100644 --- a/vvp/opcodes.txt +++ b/vvp/opcodes.txt @@ -1,7 +1,7 @@ /* * Copyright (c) 2001-2003 Stephen Williams (steve@icarus.com) * - * $Id: opcodes.txt,v 1.68 2005/09/19 21:45:37 steve Exp $ + * $Id: opcodes.txt,v 1.69 2005/11/26 17:16:05 steve Exp $ */ @@ -263,6 +263,14 @@ functor instead of the normal assign port (port-0), so the signal responds differently. See "VARIABLE STATEMENTS" and "NET STATEMENTS" in the README.txt file. +* %force/x0