aboutsummaryrefslogtreecommitdiff
path: root/sim/ppc
diff options
context:
space:
mode:
authorMichael Meissner <gnu@the-meissners.org>1995-11-09 02:35:15 +0000
committerMichael Meissner <gnu@the-meissners.org>1995-11-09 02:35:15 +0000
commitc5addc193d90f24d60acb7e3c025f2bb6ba01be7 (patch)
treebbcec41eb08105ff1d1dd079a75e653b1fa49c1b /sim/ppc
parent33698029dbb6a003bf4a79c177f4f43d9269212d (diff)
downloadgdb-c5addc193d90f24d60acb7e3c025f2bb6ba01be7.zip
gdb-c5addc193d90f24d60acb7e3c025f2bb6ba01be7.tar.gz
gdb-c5addc193d90f24d60acb7e3c025f2bb6ba01be7.tar.bz2
General cleanup; add -t options support to print all options
Diffstat (limited to 'sim/ppc')
-rw-r--r--sim/ppc/.Sanitize2
-rw-r--r--sim/ppc/ChangeLog54
-rw-r--r--sim/ppc/Makefile.in11
-rwxr-xr-xsim/ppc/configure4
-rw-r--r--sim/ppc/configure.in4
-rw-r--r--sim/ppc/device_tree.c72
-rw-r--r--sim/ppc/devices.c25
-rw-r--r--sim/ppc/devices.h32
-rw-r--r--sim/ppc/function_unit.c232
-rw-r--r--sim/ppc/igen.c2
-rw-r--r--sim/ppc/options.c146
11 files changed, 395 insertions, 189 deletions
diff --git a/sim/ppc/.Sanitize b/sim/ppc/.Sanitize
index f72289b..1c8e3c9 100644
--- a/sim/ppc/.Sanitize
+++ b/sim/ppc/.Sanitize
@@ -78,6 +78,8 @@ mon.c
mon.h
os_emul.c
os_emul.h
+options.c
+options.h
ppc-cache-rules
ppc-instructions
ppc-opcode-complex
diff --git a/sim/ppc/ChangeLog b/sim/ppc/ChangeLog
index 60decfd..cbfa812 100644
--- a/sim/ppc/ChangeLog
+++ b/sim/ppc/ChangeLog
@@ -1,5 +1,53 @@
Wed Nov 8 13:19:47 1995 Michael Meissner <meissner@tiktok.cygnus.com>
+ * options.c: New file to print out all of the WITH_ options.
+ * options.h: New include file to declare print_options.
+ * debug.h (trace_options): Add trace_opts to call print_options.
+ * debug.c (trace_description): Add trace_opts support.
+ * main.c (main): If user requested options, print them.
+ * sim_calls.c (sim_open): Ditto.
+
+ * igen.c (opcode_field_new): Add void to make it a proper prototype.
+
+ * emul_generic.c (emul_enter_call): Make printf_filtered arguments
+ type correct.
+ * emul_netbsd.c (do_kill): Ditto.
+ * registers.c (registers_dump): Ditto.
+ * vm.c (om_translate_effective_to_real): Ditto.
+ * vm_n.h (vm_data_map_read_N): Ditto.
+ (vm_data_map_write_N): Ditto.
+ * devices.h (DTRACE_INIT): Ditto.
+ (DTRACE_{ATTACH,DETACH}_ADDRESS): Ditto.
+ (DTRACE_IO_{READ,WRITE}_BUFFER): Ditto.
+ (DTRACE_DMA_{READ,WRITE}_BUFFER): Ditto.
+ * devices.c (update_for_binary_section): Ditto.
+ (write_stack_arguments): Ditto.
+ (stack_ioctl_callback): Ditto.
+ * device_tree.c (device_tree_add_passthrough): Ditto.
+ (device_tree_{add,find}_device): Ditto.
+ (device_tree_{add,find}_integer): Ditto.
+ (device_tree_find_{string,boolean}): Ditto.
+ (device_tree_init{,_device}): Ditto.
+ (device_tree_dump): Ditto.
+ * sim_calls.c (sim_{read,write}): Ditto.
+ (sim_{fetch,store}_register): Ditto.
+ (sim_stop_reason): Ditto.
+
+ * sim_callbacks.h (printf_filtered): Declare with attribute
+ printf, so we can enable format checks.
+
+ * devices.c (console_io_{read,write}_buffer_callback): Cast swtich
+ argument to int, since ANSI doesn't allow long switch values.
+ * emul_netbsd.c (do___sysctl): Ditto.
+
+ * emul_netbsd.c (do___sysctl): Fix up printf call.
+
+ * corefile.c (core_translate): Don't do arithmetic with void *
+ pointers. Cast to char * first.
+
+ * function_unit.c (FUNC_{LOAD,STORE}): Rename from {LOAD,STORE}
+ and change all uses.
+
* Makefile.in ({FUNC,MODEL,WARNING}_CFLAGS): New flags set by
configure --enable switches.
(CONFIG_CFLAGS): Include FUNC_CFLAGS and MODE_CFLAGS.
@@ -11,9 +59,9 @@ Wed Nov 8 13:19:47 1995 Michael Meissner <meissner@tiktok.cygnus.com>
(BUILT_SRC): Include BUILT_SRC_WO_CONFIG, config.h and
ppc-config.h.
(filter_filename.o): Include config.h/ppc-config.h dependencies.
- (idecode.o, semantics.o): Specify CC line without WARNING_CFLAGS
- so that we don't get all of the unused variable warnings that are
- generated.
+ (idecode.o, semantics.o, psim.o): Specify CC line without
+ WARNING_CFLAGS so that we don't get all of the unused variable
+ warnings that are generated.
(function_unit.o): Add rule to build.
(main.o, sim_calls.o): Add function_unit.h, itable.h dependencies.
(mon.o): Include mon.c dependency.
diff --git a/sim/ppc/Makefile.in b/sim/ppc/Makefile.in
index 0a12ee7..4bf46ce 100644
--- a/sim/ppc/Makefile.in
+++ b/sim/ppc/Makefile.in
@@ -214,7 +214,8 @@ LIB_SRC = \
interrupts.c \
devices.c \
device_tree.c \
- mon.c
+ mon.c \
+ options.c
MAIN_SRC = \
main.c \
@@ -225,6 +226,7 @@ MAIN_SRC = \
# first
LIB_OBJ = \
debug.o \
+ options.o \
filter_filename.o \
bits.o \
sim-endian.o \
@@ -266,6 +268,7 @@ $(TARGETLIB): tmp-igen tmp-dgen $(LIB_OBJ) $(GDB_OBJ)
# Given that inlines are turned on now, rebuild psim whenever
# anything changes.
psim.o: psim.c psim.h $(CPU_H) $(IDECODE_H) $(INLINE) $(LIB_SRC) $(BUILT_SRC)
+ $(CC) -c $(CFLAGS) $(INLINE_CFLAGS) $(CONFIG_CFLAGS) $(SIM_CFLAGS) $(HDEFINES) $(TDEFINES) $(INCLUDES) $<
bits.o: bits.c $(BASICS_H)
@@ -298,11 +301,11 @@ function_unit.o: function_unit.c $(CPU_H)
events.o: events.c events.h $(BASICS_H)
-sim_calls.o: sim_calls.c $(PSIM_H) function_unit.h itable.h ../../gdb/tm.h devices.h
+sim_calls.o: sim_calls.c $(PSIM_H) function_unit.h itable.h ../../gdb/tm.h devices.h options.h
spreg.o: spreg.h spreg.c words.h
-main.o: main.c $(PSIM_H) function_unit.h itable.h
+main.o: main.c $(PSIM_H) function_unit.h itable.h options.h
devices.o: devices.c devices.h $(BASICS_H) \
device_tree.h events.h
@@ -316,6 +319,8 @@ itable.o: itable.c itable.h
mon.o: mon.c $(CPU_H)
+options.o: options.c $(BASICS_H)
+
#
# Rules to create the built c source code files
#
diff --git a/sim/ppc/configure b/sim/ppc/configure
index 9c3b40d..28c40ec 100755
--- a/sim/ppc/configure
+++ b/sim/ppc/configure
@@ -14,7 +14,7 @@ ac_default_prefix=/usr/local
ac_help="$ac_help
--enable-sim-cflags=opts Extra CFLAGS for use in building simulator"
ac_help="$ac_help
- --enable-sim-warnings=opts Extra CFLAGS for turning on compiler warnings"
+ --enable-sim-warnings=opts Extra CFLAGS for turning on compiler warnings except for idecode.o, semantics.o and psim.o"
ac_help="$ac_help
--enable-sim-config=file Override default config file"
ac_help="$ac_help
@@ -465,7 +465,7 @@ fi
enableval="$enable_sim_warnings"
if test -n "$enableval"; then
case "${enableval}" in
- yes) sim_warnings="-Wall";;
+ yes) sim_warnings="-Wall -Wpointer-arith -Wbad-function-cast -Wmissing-prototypes -Wmissing-declarations";;
no) sim_warnings="-w";;
*) sim_warnings=`echo "${enableval}" | sed -e "s/,/ /g"`;;
esac
diff --git a/sim/ppc/configure.in b/sim/ppc/configure.in
index 4ebcefb..9c195a7 100644
--- a/sim/ppc/configure.in
+++ b/sim/ppc/configure.in
@@ -11,9 +11,9 @@ AC_ARG_ENABLE(sim-cflags,
esac],[sim_cflags=""])dnl
AC_ARG_ENABLE(sim-warnings,
-[ --enable-sim-warnings=opts Extra CFLAGS for turning on compiler warnings except for idecode.o and semantics.o],
+[ --enable-sim-warnings=opts Extra CFLAGS for turning on compiler warnings except for idecode.o, semantics.o and psim.o],
[case "${enableval}" in
- yes) sim_warnings="-Wall";;
+ yes) sim_warnings="-Wall -Wpointer-arith -Wbad-function-cast -Wmissing-prototypes -Wmissing-declarations";;
no) sim_warnings="-w";;
*) sim_warnings=`echo "${enableval}" | sed -e "s/,/ /g"`;;
esac],[sim_warnings=""])dnl
diff --git a/sim/ppc/device_tree.c b/sim/ppc/device_tree.c
index 2997388..0fb019b 100644
--- a/sim/ppc/device_tree.c
+++ b/sim/ppc/device_tree.c
@@ -207,7 +207,7 @@ device_tree_add_passthrough(device_tree *root,
{
device_tree *new_node;
TRACE(trace_device_tree,
- ("device_tree_add_passthrough(root=0x%x, path=%s)\n", root, path));
+ ("device_tree_add_passthrough(root=0x%lx, path=%s)\n", (long)root, path));
new_node = device_tree_find_node(root,
path,
path, /*full_path*/
@@ -220,7 +220,7 @@ device_tree_add_passthrough(device_tree *root,
new_node->parent->device);
TRACE(trace_device_tree,
- ("device_tree_add_passthrough() = 0x%x\n", new_node));
+ ("device_tree_add_passthrough() = 0x%lx\n", (long)new_node));
return new_node;
}
@@ -232,8 +232,8 @@ device_tree_add_device(device_tree *root,
{
device_tree *new_node;
TRACE(trace_device_tree,
- ("device_tree_add_device(root=0x%x, path=%s, dev=0x%x)\n",
- root, path, dev));
+ ("device_tree_add_device(root=0x%lx, path=%s, dev=0x%lx)\n",
+ (long)root, path, (long)dev));
new_node = device_tree_find_node(root,
path,
path, /* full-path */
@@ -241,7 +241,7 @@ device_tree_add_device(device_tree *root,
device_tree_grow);
new_node->device = dev;
TRACE(trace_device_tree,
- ("device_tree_add_device() = 0x%x\n", new_node));
+ ("device_tree_add_device() = 0x%lx\n", (long)new_node));
return new_node;
}
@@ -252,8 +252,8 @@ device_tree_add_integer(device_tree *root,
{
device_tree *new_node;
TRACE(trace_device_tree,
- ("device_tree_add_integer(root=0x%x, path=%s, integer=%d)\n",
- root, path, integer));
+ ("device_tree_add_integer(root=0x%lx, path=%s, integer=%ld)\n",
+ (long)root, path, (long)integer));
new_node = device_tree_find_node(root,
path,
path, /* full-name */
@@ -261,7 +261,7 @@ device_tree_add_integer(device_tree *root,
device_tree_grow);
new_node->integer = integer;
TRACE(trace_device_tree,
- ("device_tree_add_integer() = 0x%x\n", new_node));
+ ("device_tree_add_integer() = 0x%lx\n", (long)new_node));
return new_node;
}
@@ -272,8 +272,8 @@ device_tree_add_string(device_tree *root,
{
device_tree *new_node;
TRACE(trace_device_tree,
- ("device_tree_add_device(root=0x%x, path=%s, string=%s)\n",
- root, path, string));
+ ("device_tree_add_device(root=0x%lx, path=%s, string=%s)\n",
+ (long)root, path, string));
new_node = device_tree_find_node(root,
path,
path, /* full-name */
@@ -281,7 +281,7 @@ device_tree_add_string(device_tree *root,
device_tree_grow);
new_node->string = strdup(string);
TRACE(trace_device_tree,
- ("device_tree_add_string() = 0x%x\n", new_node));
+ ("device_tree_add_string() = 0x%lx\n", (long)new_node));
return new_node;
}
@@ -292,8 +292,8 @@ device_tree_add_boolean(device_tree *root,
{
device_tree *new_node;
TRACE(trace_device_tree,
- ("device_tree_add_boolean(root=0x%x, path=%s, boolean=%d)\n",
- root, path, boolean));
+ ("device_tree_add_boolean(root=0x%lx, path=%s, boolean=%d)\n",
+ (long)root, path, boolean));
new_node = device_tree_find_node(root,
path,
path, /* full-name */
@@ -301,7 +301,7 @@ device_tree_add_boolean(device_tree *root,
device_tree_grow);
new_node->boolean = boolean;
TRACE(trace_device_tree,
- ("device_tree_add_boolean() = 0x%x\n", new_node));
+ ("device_tree_add_boolean() = 0x%lx\n", (long)new_node));
return new_node;
}
@@ -311,14 +311,14 @@ device_tree_add_found_device(device_tree *root,
{
device_tree *new_node;
TRACE(trace_device_tree,
- ("device_tree_add_found_device(root=0x%x, path=%s)\n",
- root, path));
+ ("device_tree_add_found_device(root=0x%lx, path=%s)\n",
+ (long)root, path));
new_node = device_tree_add_device(root, path, NULL);
new_node->device = device_create(new_node->name,
path,
new_node->parent->device);
TRACE(trace_device_tree,
- ("device_tree_add_found_device() = 0x%x\n", new_node));
+ ("device_tree_add_found_device() = 0x%lx\n", (long)new_node));
return new_node;
}
@@ -331,14 +331,14 @@ device_tree_find_device(device_tree *root,
{
device_tree *node;
TRACE(trace_device_tree,
- ("device_tree_find_device(root=0x%x, path=%s)\n", root, path));
+ ("device_tree_find_device(root=0x%lx, path=%s)\n", (long)root, path));
node = device_tree_find_node(root,
path,
path, /* full-name */
node_device,
device_tree_abort);
TRACE(trace_device_tree,
- ("device_tree_find_device() = 0x%x\n", node->device));
+ ("device_tree_find_device() = 0x%lx\n", (long)node->device));
return node->device;
}
@@ -348,14 +348,14 @@ device_tree_find_integer(device_tree *root,
{
device_tree *node;
TRACE(trace_device_tree,
- ("device_tree_find_integer(root=0x%x, path=%s)\n", root, path));
+ ("device_tree_find_integer(root=0x%lx, path=%s)\n", (long)root, path));
node = device_tree_find_node(root,
path,
path, /* full-name */
node_integer,
device_tree_abort);
TRACE(trace_device_tree,
- ("device_tree_find_integer() = %d\n", node->integer));
+ ("device_tree_find_integer() = %ld\n", (long)node->integer));
return node->integer;
}
@@ -365,14 +365,14 @@ device_tree_find_string(device_tree *root,
{
device_tree *node;
TRACE(trace_device_tree,
- ("device_tree_find_string(root=0x%x, path=%s)\n", root, path));
+ ("device_tree_find_string(root=0x%lx, path=%s)\n", (long)root, path));
node = device_tree_find_node(root,
path,
path, /* full-name */
node_string,
device_tree_abort);
TRACE(trace_device_tree,
- ("device_tree_find_string() = 0x%x\n", node->string));
+ ("device_tree_find_string() = 0x%lx\n", (long)node->string));
return node->string;
}
@@ -382,14 +382,14 @@ device_tree_find_boolean(device_tree *root,
{
device_tree *node;
TRACE(trace_device_tree,
- ("device_tree_find_boolean(root=0x%x, path=%s)\n", root, path));
+ ("device_tree_find_boolean(root=0x%lx, path=%s)\n", (long)root, path));
node = device_tree_find_node(root,
path,
path, /* full-name */
node_boolean,
device_tree_abort);
TRACE(trace_device_tree,
- ("device_tree_find_boolean() = %d\n", node->boolean));
+ ("device_tree_find_boolean() = %ld\n", (long)node->boolean));
return node->boolean;
}
@@ -404,8 +404,8 @@ device_tree_init_device(device_tree *root,
system = (psim*)data;
if (root->type == node_device) {
TRACE(trace_device_tree,
- ("device_tree_init() initializing device=0x%x:%s\n",
- root->device, root->device->full_name));
+ ("device_tree_init() initializing device=0x%lx:%s\n",
+ (long)root->device, root->device->full_name));
root->device->callback->init(root->device, system);
}
}
@@ -416,7 +416,7 @@ device_tree_init(device_tree *root,
psim *system)
{
TRACE(trace_device_tree,
- ("device_tree_init(root=0x%x, system=0x%x)\n", root, system));
+ ("device_tree_init(root=0x%lx, system=0x%lx)\n", (long)root, (long)system));
device_tree_traverse(root, device_tree_init_device, NULL, system);
TRACE(trace_device_tree,
("device_tree_init() = void\n"));
@@ -448,16 +448,16 @@ INLINE_DEVICE_TREE void
device_tree_dump(device_tree *device,
void *ignore_data_argument)
{
- printf_filtered("(device_tree@0x%x\n", device);
- printf_filtered(" (parent 0x%x)\n", device->parent);
- printf_filtered(" (children 0x%x)\n", device->children);
- printf_filtered(" (sibling 0x%x)\n", device->sibling);
- printf_filtered(" (type %d)\n", device->type);
+ printf_filtered("(device_tree@0x%lx\n", (long)device);
+ printf_filtered(" (parent 0x%lx)\n", (long)device->parent);
+ printf_filtered(" (children 0x%lx)\n", (long)device->children);
+ printf_filtered(" (sibling 0x%lx)\n", (long)device->sibling);
+ printf_filtered(" (type %ld)\n", (long)device->type);
printf_filtered(" (name %s)\n", device->name);
- printf_filtered(" (device 0x%x)\n", device->device);
- printf_filtered(" (boolean %d)\n", device->boolean);
+ printf_filtered(" (device 0x%lx)\n", (long)device->device);
+ printf_filtered(" (boolean %ld)\n", (long)device->boolean);
printf_filtered(" (string %s)\n", device->string);
- printf_filtered(" (integer %d)\n", device->integer);
+ printf_filtered(" (integer %ld)\n", (long)device->integer);
printf_filtered(")\n");
}
diff --git a/sim/ppc/devices.c b/sim/ppc/devices.c
index b0368d5..257b8eb 100644
--- a/sim/ppc/devices.c
+++ b/sim/ppc/devices.c
@@ -370,7 +370,7 @@ console_io_read_buffer_callback(const device *me,
/* determine what was read */
- switch (addr) {
+ switch ((int)addr) {
case console_read_buffer:
val = console->input.buffer;
@@ -441,7 +441,7 @@ console_io_write_buffer_callback(const device *me,
unsigned_1 val = *(unsigned8*)source;
DTRACE_IO_WRITE_BUFFER(console);
- switch (addr) {
+ switch ((int)addr) {
case console_read_buffer:
console->input.buffer = val;
break;
@@ -1223,10 +1223,11 @@ update_for_binary_section(bfd *abfd,
section_vma = bfd_get_section_vma(abfd, the_section);
DTRACE(binary,
- ("name=%-7s, vma=0x%.8x, size=%6d, flags=%3x(%s%s%s%s )\n",
+ ("name=%-7s, vma=0x%.8lx, size=%6ld, flags=%3lx(%s%s%s%s%s )\n",
bfd_get_section_name(abfd, the_section),
- section_vma, section_size,
- bfd_get_section_flags(abfd, the_section),
+ (long)section_vma,
+ (long)section_size,
+ (long)bfd_get_section_flags(abfd, the_section),
bfd_get_section_flags(abfd, the_section) & SEC_LOAD ? " LOAD" : "",
bfd_get_section_flags(abfd, the_section) & SEC_CODE ? " CODE" : "",
bfd_get_section_flags(abfd, the_section) & SEC_DATA ? " DATA" : "",
@@ -1387,8 +1388,8 @@ write_stack_arguments(psim *system,
unsigned_word end_arg)
{
DTRACE(stack,
- ("write_stack_arguments(system=0x%x, arg=0x%x, start_block=0x%x, end_block=0x%x, start_arg=0x%x, end_arg=0x%x)\n",
- system, arg, start_block, end_block, start_arg, end_arg));
+ ("write_stack_arguments(system=0x%lx, arg=0x%lx, start_block=0x%lx, end_block=0x%lx, start_arg=0x%lx, end_arg=0x%lx)\n",
+ (long)system, (long)arg, (long)start_block, (long)end_block, (long)start_arg, (long)end_arg));
if (arg == NULL)
error("write_arguments: character array NULL\n");
/* only copy in arguments, memory is already zero */
@@ -1396,9 +1397,9 @@ write_stack_arguments(psim *system,
int len = strlen(*arg)+1;
unsigned_word target_start_block;
DTRACE(stack,
- ("write_stack_arguments() write %s=%s at %s=0x%x %s=0x%x %s=0x%x\n",
- "**arg", *arg, "start_block", start_block,
- "len", len, "start_arg", start_arg));
+ ("write_stack_arguments() write %s=%s at %s=0x%lx %s=0x%lx %s=0x%lx\n",
+ "**arg", *arg, "start_block", (long)start_block,
+ "len", (long)len, "start_arg", (long)start_arg));
if (psim_write_memory(system, 0, *arg,
start_block, len,
0/*violate_readonly*/) != len)
@@ -1518,8 +1519,8 @@ stack_ioctl_callback(const device *me,
envp = va_arg(ap, char **);
va_end(ap);
DTRACE(stack,
- ("stack_ioctl_callback(me=0x%x:%s, system=0x%x, processor=0x%x, cia=0x%x, argv=0x%x, envp=0x%x)\n",
- me, me->full_name, system, processor, cia, argv, envp));
+ ("stack_ioctl_callback(me=0x%lx:%s, system=0x%lx, processor=0x%lx, cia=0x%lx, argv=0x%lx, envp=0x%lx)\n",
+ (long)me, me->full_name, (long)system, (long)processor, (long)cia, (long)argv, (long)envp));
if (strcmp(me->name, "stack@elf") == 0)
create_elf_stack_frame(system, stack_pointer, argv, envp);
else if (strcmp(me->name, "stack@xcoff") == 0)
diff --git a/sim/ppc/devices.h b/sim/ppc/devices.h
index fd22a54..5fad839 100644
--- a/sim/ppc/devices.h
+++ b/sim/ppc/devices.h
@@ -81,8 +81,8 @@ typedef void (device_init_callback)
#define DTRACE_INIT(OBJECT) \
DTRACE(OBJECT, \
- (#OBJECT "_init(me=0x%x:%s system=0x%x)\n", \
- me, me->full_name, system))
+ (#OBJECT "_init(me=0x%lx:%s system=0x%lx)\n", \
+ (long)me, me->full_name, (long)system))
/* Data transfers:
@@ -173,12 +173,14 @@ typedef void (device_config_address_callback)
#define DTRACE_ATTACH_ADDRESS(OBJECT) \
DTRACE(OBJECT, \
- (#OBJECT "_attach_address(me=0x%x:%s, name=%s, attach=%d, space=%d, addr=0x%x, nr_bytes=%d, access=%d, who=0x%x)\n", \
- me, me->full_name, name, attach, space, addr, nr_bytes, access, who))
+ (#OBJECT "_attach_address(me=0x%lx:%s, name=%s, attach=%ld, space=%ld, addr=0x%lx, nr_bytes=%ld, access=%ld, who=0x%lx)\n", \
+ (long)me, me->full_name, name, (long)attach, (long)space, \
+ (long)addr, (long)nr_bytes, (long)access, (long)who))
#define DTRACE_DETACH_ADDRESS(OBJECT) \
DTRACE(OBJECT, \
- (#OBJECT "_detach_address(me=0x%x:%s, name=%s, attach=%d, space=%d, addr=0x%x, nr_bytes=%d, access=%d, who=0x%x)\n", \
- me, me->full_name, name, attach, space, addr, nr_bytes, access, who))
+ (#OBJECT "_detach_address(me=0x%lx:%s, name=%s, attach=%ld, space=%ld, addr=0x%lx, nr_bytes=%ld, access=%ld, who=0x%lx)\n", \
+ (long)me, me->full_name, name, (long)attach, (long)space, \
+ (long)addr, (long)nr_bytes, (long)access, (long)who))
typedef unsigned (device_io_read_buffer_callback)
@@ -201,12 +203,14 @@ typedef unsigned (device_io_write_buffer_callback)
#define DTRACE_IO_READ_BUFFER(OBJECT) \
DTRACE(OBJECT, \
- (#OBJECT "_io_read_buffer(me=0x%x:%s dest=0x%x space=%d addr=0x%x nr_bytes=%d processor=0x%x cia=0x%x)\n", \
- me, me->full_name, dest, space, addr, nr_bytes, processor, cia))
+ (#OBJECT "_io_read_buffer(me=0x%lx:%s dest=0x%lx space=%ld addr=0x%lx nr_bytes=%ld processor=0x%lx cia=0x%lx)\n", \
+ (long)me, me->full_name, (long)dest, (long)space, (long)addr, \
+ (long)nr_bytes, (long)processor, (long)cia))
#define DTRACE_IO_WRITE_BUFFER(OBJECT) \
DTRACE(OBJECT, \
- (#OBJECT "_io_write_buffer(me=0x%x:%s source=0x%x space=%d addr=0x%x nr_bytes=%d processor=0x%x cia=0x%x)\n", \
- me, me->full_name, source, space, addr, nr_bytes, processor, cia))
+ (#OBJECT "_io_write_buffer(me=0x%lx:%s source=0x%lx space=%ld addr=0x%lx nr_bytes=%ld processor=0x%lx cia=0x%lx)\n", \
+ (long)me, me->full_name, (long)source, (long)space, (long)addr, \
+ (long)nr_bytes, (long)processor, (long)cia))
typedef unsigned (device_dma_read_buffer_callback)
@@ -226,12 +230,12 @@ typedef unsigned (device_dma_write_buffer_callback)
#define DTRACE_DMA_READ_BUFFER(OBJECT) \
DTRACE(OBJECT, \
- (#OBJECT "_dma_read_buffer(me=0x%x:%s dest=0x%x space=%d addr=0x%x nr_bytes=%d)\n", \
- me, me->full_name, dest, space, addr, nr_bytes))
+ (#OBJECT "_dma_read_buffer(me=0x%lx:%s dest=0x%lx space=%ld addr=0x%lx nr_bytes=%ld)\n", \
+ (long)me, me->full_name, (long)dest, (long)space, (long)addr, (long)nr_bytes))
#define DTRACE_DMA_WRITE_BUFFER(OBJECT) \
DTRACE(OBJECT, \
- (#OBJECT "_dma_write_buffer(me=0x%x:%s source=0x%x space=%d addr=0x%x nr_bytes=%d)\n", \
- me, me->full_name, source, space, addr, nr_bytes))
+ (#OBJECT "_dma_write_buffer(me=0x%lx:%s source=0x%lx space=%ld addr=0x%lx nr_bytes=%ld)\n", \
+ (long)me, me->full_name, (long)source, (long)space, (long)addr, (long)nr_bytes))
/* Interrupts:
diff --git a/sim/ppc/function_unit.c b/sim/ppc/function_unit.c
index 7793c7b..a4f2768 100644
--- a/sim/ppc/function_unit.c
+++ b/sim/ppc/function_unit.c
@@ -79,8 +79,8 @@ struct _function_unit {
/* Flags used in timing info */
-#define LOAD 0x00000001 /* this is a load */
-#define STORE 0x00000002 /* this is a store */
+#define FUNC_LOAD 0x00000001 /* this is a load */
+#define FUNC_STORE 0x00000002 /* this is a store */
/* 603 timings */
@@ -162,36 +162,36 @@ static timing time_603[] = {
{ itable_Floating_Subtract_Single, UNIT_FPU, 1, 0 },
{ itable_Instruction_Cache_Block_Invalidate, UNIT_MEM, 3, 0 },
{ itable_Instruction_Synchronize, UNIT_SREG, 1, 0 },
- { itable_Load_Byte_and_Zero, UNIT_MEM, 2, LOAD },
- { itable_Load_Byte_and_Zero_Indexed, UNIT_MEM, 2, LOAD },
- { itable_Load_Byte_and_Zero_with_Update, UNIT_MEM, 2, LOAD },
- { itable_Load_Byte_and_Zero_with_Update_Indexed, UNIT_MEM, 2, LOAD },
- { itable_Load_FloatingPoint_Double, UNIT_MEM, 2, LOAD },
- { itable_Load_FloatingPoint_Double_Indexed, UNIT_MEM, 2, LOAD },
- { itable_Load_FloatingPoint_Double_with_Update, UNIT_MEM, 2, LOAD },
- { itable_Load_FloatingPoint_Double_with_Update_Indexed, UNIT_MEM, 2, LOAD },
- { itable_Load_FloatingPoint_Single, UNIT_MEM, 2, LOAD },
- { itable_Load_FloatingPoint_Single_Indexed, UNIT_MEM, 2, LOAD },
- { itable_Load_FloatingPoint_Single_with_Update, UNIT_MEM, 2, LOAD },
- { itable_Load_FloatingPoint_Single_with_Update_Indexed, UNIT_MEM, 2, LOAD },
- { itable_Load_Halfword_Algebraic, UNIT_MEM, 2, LOAD },
- { itable_Load_Halfword_Algebraic_Indexed, UNIT_MEM, 2, LOAD },
- { itable_Load_Halfword_Algebraic_with_Update, UNIT_MEM, 2, LOAD },
- { itable_Load_Halfword_Algebraic_with_Update_Indexed, UNIT_MEM, 2, LOAD },
- { itable_Load_Halfword_ByteReverse_Indexed, UNIT_MEM, 2, LOAD },
- { itable_Load_Halfword_and_Zero, UNIT_MEM, 2, LOAD },
- { itable_Load_Halfword_and_Zero_Indexed, UNIT_MEM, 2, LOAD },
- { itable_Load_Halfword_and_Zero_with_Update, UNIT_MEM, 2, LOAD },
- { itable_Load_Halfword_and_Zero_with_Update_Indexed, UNIT_MEM, 2, LOAD },
- { itable_Load_Multiple_Word, UNIT_MEM, 2, LOAD },
- { itable_Load_String_Word_Immediate, UNIT_MEM, 2, LOAD },
- { itable_Load_String_Word_Indexed, UNIT_MEM, 2, LOAD },
- { itable_Load_Word_And_Reserve_Indexed, UNIT_MEM, 2, LOAD },
- { itable_Load_Word_ByteReverse_Indexed, UNIT_MEM, 2, LOAD },
- { itable_Load_Word_and_Zero, UNIT_MEM, 2, LOAD },
- { itable_Load_Word_and_Zero_Indexed, UNIT_MEM, 2, LOAD },
- { itable_Load_Word_and_Zero_with_Update, UNIT_MEM, 2, LOAD },
- { itable_Load_Word_and_Zero_with_Update_Indexed, UNIT_MEM, 2, LOAD },
+ { itable_Load_Byte_and_Zero, UNIT_MEM, 2, FUNC_LOAD },
+ { itable_Load_Byte_and_Zero_Indexed, UNIT_MEM, 2, FUNC_LOAD },
+ { itable_Load_Byte_and_Zero_with_Update, UNIT_MEM, 2, FUNC_LOAD },
+ { itable_Load_Byte_and_Zero_with_Update_Indexed, UNIT_MEM, 2, FUNC_LOAD },
+ { itable_Load_FloatingPoint_Double, UNIT_MEM, 2, FUNC_LOAD },
+ { itable_Load_FloatingPoint_Double_Indexed, UNIT_MEM, 2, FUNC_LOAD },
+ { itable_Load_FloatingPoint_Double_with_Update, UNIT_MEM, 2, FUNC_LOAD },
+ { itable_Load_FloatingPoint_Double_with_Update_Indexed, UNIT_MEM, 2, FUNC_LOAD },
+ { itable_Load_FloatingPoint_Single, UNIT_MEM, 2, FUNC_LOAD },
+ { itable_Load_FloatingPoint_Single_Indexed, UNIT_MEM, 2, FUNC_LOAD },
+ { itable_Load_FloatingPoint_Single_with_Update, UNIT_MEM, 2, FUNC_LOAD },
+ { itable_Load_FloatingPoint_Single_with_Update_Indexed, UNIT_MEM, 2, FUNC_LOAD },
+ { itable_Load_Halfword_Algebraic, UNIT_MEM, 2, FUNC_LOAD },
+ { itable_Load_Halfword_Algebraic_Indexed, UNIT_MEM, 2, FUNC_LOAD },
+ { itable_Load_Halfword_Algebraic_with_Update, UNIT_MEM, 2, FUNC_LOAD },
+ { itable_Load_Halfword_Algebraic_with_Update_Indexed, UNIT_MEM, 2, FUNC_LOAD },
+ { itable_Load_Halfword_ByteReverse_Indexed, UNIT_MEM, 2, FUNC_LOAD },
+ { itable_Load_Halfword_and_Zero, UNIT_MEM, 2, FUNC_LOAD },
+ { itable_Load_Halfword_and_Zero_Indexed, UNIT_MEM, 2, FUNC_LOAD },
+ { itable_Load_Halfword_and_Zero_with_Update, UNIT_MEM, 2, FUNC_LOAD },
+ { itable_Load_Halfword_and_Zero_with_Update_Indexed, UNIT_MEM, 2, FUNC_LOAD },
+ { itable_Load_Multiple_Word, UNIT_MEM, 2, FUNC_LOAD },
+ { itable_Load_String_Word_Immediate, UNIT_MEM, 2, FUNC_LOAD },
+ { itable_Load_String_Word_Indexed, UNIT_MEM, 2, FUNC_LOAD },
+ { itable_Load_Word_And_Reserve_Indexed, UNIT_MEM, 2, FUNC_LOAD },
+ { itable_Load_Word_ByteReverse_Indexed, UNIT_MEM, 2, FUNC_LOAD },
+ { itable_Load_Word_and_Zero, UNIT_MEM, 2, FUNC_LOAD },
+ { itable_Load_Word_and_Zero_Indexed, UNIT_MEM, 2, FUNC_LOAD },
+ { itable_Load_Word_and_Zero_with_Update, UNIT_MEM, 2, FUNC_LOAD },
+ { itable_Load_Word_and_Zero_with_Update_Indexed, UNIT_MEM, 2, FUNC_LOAD },
{ itable_Move_Condition_Register_Field, UNIT_SREG, 1, 0 },
{ itable_Move_From_Condition_Register, UNIT_SREG, 1, 0 },
{ itable_Move_From_FPSCR, UNIT_FPU, 1, 0 },
@@ -230,33 +230,33 @@ static timing time_603[] = {
{ itable_Shift_Right_Algebraic_Word, UNIT_INT, 1, 0 },
{ itable_Shift_Right_Algebraic_Word_Immediate, UNIT_INT, 1, 0 },
{ itable_Shift_Right_Word, UNIT_INT, 1, 0 },
- { itable_Store_Byte, UNIT_MEM, 1, STORE },
- { itable_Store_Byte_Indexed, UNIT_MEM, 1, STORE },
- { itable_Store_Byte_with_Update, UNIT_MEM, 1, STORE },
- { itable_Store_Byte_with_Update_Indexed, UNIT_MEM, 1, STORE },
- { itable_Store_FloatingPoint_Double, UNIT_MEM, 1, STORE },
- { itable_Store_FloatingPoint_Double_Indexed, UNIT_MEM, 1, STORE },
- { itable_Store_FloatingPoint_Double_with_Update, UNIT_MEM, 1, STORE },
- { itable_Store_FloatingPoint_Double_with_Update_Indexed, UNIT_MEM, 1, STORE },
- { itable_Store_FloatingPoint_Single, UNIT_MEM, 1, STORE },
- { itable_Store_FloatingPoint_Single_Indexed, UNIT_MEM, 1, STORE },
- { itable_Store_FloatingPoint_Single_with_Update, UNIT_MEM, 1, STORE },
- { itable_Store_FloatingPoint_Single_with_Update_Indexed, UNIT_MEM, 1, STORE },
- { itable_Store_FloatingPoint_as_Integer_Word_Indexed, UNIT_MEM, 1, STORE },
- { itable_Store_Half_Word, UNIT_MEM, 1, STORE },
- { itable_Store_Half_Word_ByteReversed_Indexed, UNIT_MEM, 1, STORE },
- { itable_Store_Half_Word_Indexed, UNIT_MEM, 1, STORE },
- { itable_Store_Half_Word_with_Update, UNIT_MEM, 1, STORE },
- { itable_Store_Half_Word_with_Update_Indexed, UNIT_MEM, 1, STORE },
- { itable_Store_Multiple_Word, UNIT_MEM, 1, STORE },
- { itable_Store_String_Word_Immedate, UNIT_MEM, 1, STORE },
- { itable_Store_String_Word_Indexed, UNIT_MEM, 1, STORE },
- { itable_Store_Word, UNIT_MEM, 1, STORE },
- { itable_Store_Word_ByteReversed_Indexed, UNIT_MEM, 1, STORE },
- { itable_Store_Word_Conditional_Indexed, UNIT_MEM, 1, STORE },
- { itable_Store_Word_Indexed, UNIT_MEM, 1, STORE },
- { itable_Store_Word_with_Update, UNIT_MEM, 1, STORE },
- { itable_Store_Word_with_Update_Indexed, UNIT_MEM, 1, STORE },
+ { itable_Store_Byte, UNIT_MEM, 1, FUNC_STORE },
+ { itable_Store_Byte_Indexed, UNIT_MEM, 1, FUNC_STORE },
+ { itable_Store_Byte_with_Update, UNIT_MEM, 1, FUNC_STORE },
+ { itable_Store_Byte_with_Update_Indexed, UNIT_MEM, 1, FUNC_STORE },
+ { itable_Store_FloatingPoint_Double, UNIT_MEM, 1, FUNC_STORE },
+ { itable_Store_FloatingPoint_Double_Indexed, UNIT_MEM, 1, FUNC_STORE },
+ { itable_Store_FloatingPoint_Double_with_Update, UNIT_MEM, 1, FUNC_STORE },
+ { itable_Store_FloatingPoint_Double_with_Update_Indexed, UNIT_MEM, 1, FUNC_STORE },
+ { itable_Store_FloatingPoint_Single, UNIT_MEM, 1, FUNC_STORE },
+ { itable_Store_FloatingPoint_Single_Indexed, UNIT_MEM, 1, FUNC_STORE },
+ { itable_Store_FloatingPoint_Single_with_Update, UNIT_MEM, 1, FUNC_STORE },
+ { itable_Store_FloatingPoint_Single_with_Update_Indexed, UNIT_MEM, 1, FUNC_STORE },
+ { itable_Store_FloatingPoint_as_Integer_Word_Indexed, UNIT_MEM, 1, FUNC_STORE },
+ { itable_Store_Half_Word, UNIT_MEM, 1, FUNC_STORE },
+ { itable_Store_Half_Word_ByteReversed_Indexed, UNIT_MEM, 1, FUNC_STORE },
+ { itable_Store_Half_Word_Indexed, UNIT_MEM, 1, FUNC_STORE },
+ { itable_Store_Half_Word_with_Update, UNIT_MEM, 1, FUNC_STORE },
+ { itable_Store_Half_Word_with_Update_Indexed, UNIT_MEM, 1, FUNC_STORE },
+ { itable_Store_Multiple_Word, UNIT_MEM, 1, FUNC_STORE },
+ { itable_Store_String_Word_Immedate, UNIT_MEM, 1, FUNC_STORE },
+ { itable_Store_String_Word_Indexed, UNIT_MEM, 1, FUNC_STORE },
+ { itable_Store_Word, UNIT_MEM, 1, FUNC_STORE },
+ { itable_Store_Word_ByteReversed_Indexed, UNIT_MEM, 1, FUNC_STORE },
+ { itable_Store_Word_Conditional_Indexed, UNIT_MEM, 1, FUNC_STORE },
+ { itable_Store_Word_Indexed, UNIT_MEM, 1, FUNC_STORE },
+ { itable_Store_Word_with_Update, UNIT_MEM, 1, FUNC_STORE },
+ { itable_Store_Word_with_Update_Indexed, UNIT_MEM, 1, FUNC_STORE },
{ itable_Subtract_From, UNIT_INT, 1, 0 },
{ itable_Subtract_From_Carrying, UNIT_INT, 1, 0 },
{ itable_Subtract_From_Extended, UNIT_INT, 1, 0 },
@@ -356,36 +356,36 @@ static timing time_604[] = {
{ itable_Floating_Subtract_Single, UNIT_FPU, 3, 0 },
{ itable_Instruction_Cache_Block_Invalidate, UNIT_MEM, 1, 0 },
{ itable_Instruction_Synchronize, UNIT_INT, 1, 0 },
- { itable_Load_Byte_and_Zero, UNIT_MEM, 2, LOAD },
- { itable_Load_Byte_and_Zero_Indexed, UNIT_MEM, 2, LOAD },
- { itable_Load_Byte_and_Zero_with_Update, UNIT_MEM, 2, LOAD },
- { itable_Load_Byte_and_Zero_with_Update_Indexed, UNIT_MEM, 2, LOAD },
- { itable_Load_FloatingPoint_Double, UNIT_MEM, 3, LOAD },
- { itable_Load_FloatingPoint_Double_Indexed, UNIT_MEM, 3, LOAD },
- { itable_Load_FloatingPoint_Double_with_Update, UNIT_MEM, 3, LOAD },
- { itable_Load_FloatingPoint_Double_with_Update_Indexed, UNIT_MEM, 3, LOAD },
- { itable_Load_FloatingPoint_Single, UNIT_MEM, 3, LOAD },
- { itable_Load_FloatingPoint_Single_Indexed, UNIT_MEM, 3, LOAD },
- { itable_Load_FloatingPoint_Single_with_Update, UNIT_MEM, 3, LOAD },
- { itable_Load_FloatingPoint_Single_with_Update_Indexed, UNIT_MEM, 3, LOAD },
- { itable_Load_Halfword_Algebraic, UNIT_MEM, 2, LOAD },
- { itable_Load_Halfword_Algebraic_Indexed, UNIT_MEM, 2, LOAD },
- { itable_Load_Halfword_Algebraic_with_Update, UNIT_MEM, 2, LOAD },
- { itable_Load_Halfword_Algebraic_with_Update_Indexed, UNIT_MEM, 2, LOAD },
- { itable_Load_Halfword_ByteReverse_Indexed, UNIT_MEM, 2, LOAD },
- { itable_Load_Halfword_and_Zero, UNIT_MEM, 2, LOAD },
- { itable_Load_Halfword_and_Zero_Indexed, UNIT_MEM, 2, LOAD },
- { itable_Load_Halfword_and_Zero_with_Update, UNIT_MEM, 2, LOAD },
- { itable_Load_Halfword_and_Zero_with_Update_Indexed, UNIT_MEM, 2, LOAD },
- { itable_Load_Multiple_Word, UNIT_MEM, 2, LOAD },
- { itable_Load_String_Word_Immediate, UNIT_MEM, 2, LOAD },
- { itable_Load_String_Word_Indexed, UNIT_MEM, 2, LOAD },
- { itable_Load_Word_And_Reserve_Indexed, UNIT_MEM, 2, LOAD },
- { itable_Load_Word_ByteReverse_Indexed, UNIT_MEM, 2, LOAD },
- { itable_Load_Word_and_Zero, UNIT_MEM, 2, LOAD },
- { itable_Load_Word_and_Zero_Indexed, UNIT_MEM, 2, LOAD },
- { itable_Load_Word_and_Zero_with_Update, UNIT_MEM, 2, LOAD },
- { itable_Load_Word_and_Zero_with_Update_Indexed, UNIT_MEM, 2, LOAD },
+ { itable_Load_Byte_and_Zero, UNIT_MEM, 2, FUNC_LOAD },
+ { itable_Load_Byte_and_Zero_Indexed, UNIT_MEM, 2, FUNC_LOAD },
+ { itable_Load_Byte_and_Zero_with_Update, UNIT_MEM, 2, FUNC_LOAD },
+ { itable_Load_Byte_and_Zero_with_Update_Indexed, UNIT_MEM, 2, FUNC_LOAD },
+ { itable_Load_FloatingPoint_Double, UNIT_MEM, 3, FUNC_LOAD },
+ { itable_Load_FloatingPoint_Double_Indexed, UNIT_MEM, 3, FUNC_LOAD },
+ { itable_Load_FloatingPoint_Double_with_Update, UNIT_MEM, 3, FUNC_LOAD },
+ { itable_Load_FloatingPoint_Double_with_Update_Indexed, UNIT_MEM, 3, FUNC_LOAD },
+ { itable_Load_FloatingPoint_Single, UNIT_MEM, 3, FUNC_LOAD },
+ { itable_Load_FloatingPoint_Single_Indexed, UNIT_MEM, 3, FUNC_LOAD },
+ { itable_Load_FloatingPoint_Single_with_Update, UNIT_MEM, 3, FUNC_LOAD },
+ { itable_Load_FloatingPoint_Single_with_Update_Indexed, UNIT_MEM, 3, FUNC_LOAD },
+ { itable_Load_Halfword_Algebraic, UNIT_MEM, 2, FUNC_LOAD },
+ { itable_Load_Halfword_Algebraic_Indexed, UNIT_MEM, 2, FUNC_LOAD },
+ { itable_Load_Halfword_Algebraic_with_Update, UNIT_MEM, 2, FUNC_LOAD },
+ { itable_Load_Halfword_Algebraic_with_Update_Indexed, UNIT_MEM, 2, FUNC_LOAD },
+ { itable_Load_Halfword_ByteReverse_Indexed, UNIT_MEM, 2, FUNC_LOAD },
+ { itable_Load_Halfword_and_Zero, UNIT_MEM, 2, FUNC_LOAD },
+ { itable_Load_Halfword_and_Zero_Indexed, UNIT_MEM, 2, FUNC_LOAD },
+ { itable_Load_Halfword_and_Zero_with_Update, UNIT_MEM, 2, FUNC_LOAD },
+ { itable_Load_Halfword_and_Zero_with_Update_Indexed, UNIT_MEM, 2, FUNC_LOAD },
+ { itable_Load_Multiple_Word, UNIT_MEM, 2, FUNC_LOAD },
+ { itable_Load_String_Word_Immediate, UNIT_MEM, 2, FUNC_LOAD },
+ { itable_Load_String_Word_Indexed, UNIT_MEM, 2, FUNC_LOAD },
+ { itable_Load_Word_And_Reserve_Indexed, UNIT_MEM, 2, FUNC_LOAD },
+ { itable_Load_Word_ByteReverse_Indexed, UNIT_MEM, 2, FUNC_LOAD },
+ { itable_Load_Word_and_Zero, UNIT_MEM, 2, FUNC_LOAD },
+ { itable_Load_Word_and_Zero_Indexed, UNIT_MEM, 2, FUNC_LOAD },
+ { itable_Load_Word_and_Zero_with_Update, UNIT_MEM, 2, FUNC_LOAD },
+ { itable_Load_Word_and_Zero_with_Update_Indexed, UNIT_MEM, 2, FUNC_LOAD },
{ itable_Move_Condition_Register_Field, UNIT_BRANCH, 1, 0 },
{ itable_Move_From_Condition_Register, UNIT_CINT, 3, 0 },
{ itable_Move_From_FPSCR, UNIT_FPU, 3, 0 },
@@ -424,33 +424,33 @@ static timing time_604[] = {
{ itable_Shift_Right_Algebraic_Word, UNIT_INT, 1, 0 },
{ itable_Shift_Right_Algebraic_Word_Immediate, UNIT_INT, 1, 0 },
{ itable_Shift_Right_Word, UNIT_INT, 1, 0 },
- { itable_Store_Byte, UNIT_MEM, 3, STORE },
- { itable_Store_Byte_Indexed, UNIT_MEM, 3, STORE },
- { itable_Store_Byte_with_Update, UNIT_MEM, 3, STORE },
- { itable_Store_Byte_with_Update_Indexed, UNIT_MEM, 3, STORE },
- { itable_Store_FloatingPoint_Double, UNIT_MEM, 3, STORE },
- { itable_Store_FloatingPoint_Double_Indexed, UNIT_MEM, 3, STORE },
- { itable_Store_FloatingPoint_Double_with_Update, UNIT_MEM, 3, STORE },
- { itable_Store_FloatingPoint_Double_with_Update_Indexed, UNIT_MEM, 3, STORE },
- { itable_Store_FloatingPoint_Single, UNIT_MEM, 3, STORE },
- { itable_Store_FloatingPoint_Single_Indexed, UNIT_MEM, 3, STORE },
- { itable_Store_FloatingPoint_Single_with_Update, UNIT_MEM, 3, STORE },
- { itable_Store_FloatingPoint_Single_with_Update_Indexed, UNIT_MEM, 3, STORE },
- { itable_Store_FloatingPoint_as_Integer_Word_Indexed, UNIT_MEM, 3, STORE },
- { itable_Store_Half_Word, UNIT_MEM, 3, STORE },
- { itable_Store_Half_Word_ByteReversed_Indexed, UNIT_MEM, 3, STORE },
- { itable_Store_Half_Word_Indexed, UNIT_MEM, 3, STORE },
- { itable_Store_Half_Word_with_Update, UNIT_MEM, 3, STORE },
- { itable_Store_Half_Word_with_Update_Indexed, UNIT_MEM, 3, STORE },
- { itable_Store_Multiple_Word, UNIT_MEM, 3, STORE },
- { itable_Store_String_Word_Immedate, UNIT_MEM, 3, STORE },
- { itable_Store_String_Word_Indexed, UNIT_MEM, 3, STORE },
- { itable_Store_Word, UNIT_MEM, 3, STORE },
- { itable_Store_Word_ByteReversed_Indexed, UNIT_MEM, 3, STORE },
- { itable_Store_Word_Conditional_Indexed, UNIT_MEM, 3, STORE },
- { itable_Store_Word_Indexed, UNIT_MEM, 3, STORE },
- { itable_Store_Word_with_Update, UNIT_MEM, 3, STORE },
- { itable_Store_Word_with_Update_Indexed, UNIT_MEM, 3, STORE },
+ { itable_Store_Byte, UNIT_MEM, 3, FUNC_STORE },
+ { itable_Store_Byte_Indexed, UNIT_MEM, 3, FUNC_STORE },
+ { itable_Store_Byte_with_Update, UNIT_MEM, 3, FUNC_STORE },
+ { itable_Store_Byte_with_Update_Indexed, UNIT_MEM, 3, FUNC_STORE },
+ { itable_Store_FloatingPoint_Double, UNIT_MEM, 3, FUNC_STORE },
+ { itable_Store_FloatingPoint_Double_Indexed, UNIT_MEM, 3, FUNC_STORE },
+ { itable_Store_FloatingPoint_Double_with_Update, UNIT_MEM, 3, FUNC_STORE },
+ { itable_Store_FloatingPoint_Double_with_Update_Indexed, UNIT_MEM, 3, FUNC_STORE },
+ { itable_Store_FloatingPoint_Single, UNIT_MEM, 3, FUNC_STORE },
+ { itable_Store_FloatingPoint_Single_Indexed, UNIT_MEM, 3, FUNC_STORE },
+ { itable_Store_FloatingPoint_Single_with_Update, UNIT_MEM, 3, FUNC_STORE },
+ { itable_Store_FloatingPoint_Single_with_Update_Indexed, UNIT_MEM, 3, FUNC_STORE },
+ { itable_Store_FloatingPoint_as_Integer_Word_Indexed, UNIT_MEM, 3, FUNC_STORE },
+ { itable_Store_Half_Word, UNIT_MEM, 3, FUNC_STORE },
+ { itable_Store_Half_Word_ByteReversed_Indexed, UNIT_MEM, 3, FUNC_STORE },
+ { itable_Store_Half_Word_Indexed, UNIT_MEM, 3, FUNC_STORE },
+ { itable_Store_Half_Word_with_Update, UNIT_MEM, 3, FUNC_STORE },
+ { itable_Store_Half_Word_with_Update_Indexed, UNIT_MEM, 3, FUNC_STORE },
+ { itable_Store_Multiple_Word, UNIT_MEM, 3, FUNC_STORE },
+ { itable_Store_String_Word_Immedate, UNIT_MEM, 3, FUNC_STORE },
+ { itable_Store_String_Word_Indexed, UNIT_MEM, 3, FUNC_STORE },
+ { itable_Store_Word, UNIT_MEM, 3, FUNC_STORE },
+ { itable_Store_Word_ByteReversed_Indexed, UNIT_MEM, 3, FUNC_STORE },
+ { itable_Store_Word_Conditional_Indexed, UNIT_MEM, 3, FUNC_STORE },
+ { itable_Store_Word_Indexed, UNIT_MEM, 3, FUNC_STORE },
+ { itable_Store_Word_with_Update, UNIT_MEM, 3, FUNC_STORE },
+ { itable_Store_Word_with_Update_Indexed, UNIT_MEM, 3, FUNC_STORE },
{ itable_Subtract_From, UNIT_INT, 1, 0 },
{ itable_Subtract_From_Carrying, UNIT_INT, 1, 0 },
{ itable_Subtract_From_Extended, UNIT_INT, 1, 0 },
diff --git a/sim/ppc/igen.c b/sim/ppc/igen.c
index 3db56c0..b017d9a 100644
--- a/sim/ppc/igen.c
+++ b/sim/ppc/igen.c
@@ -503,7 +503,7 @@ struct _opcode_field {
};
static opcode_field *
-opcode_field_new()
+opcode_field_new(void)
{
opcode_field *new_field = (opcode_field*)zalloc(sizeof(opcode_field));
ASSERT(new_field != NULL);
diff --git a/sim/ppc/options.c b/sim/ppc/options.c
new file mode 100644
index 0000000..ba7f91a
--- /dev/null
+++ b/sim/ppc/options.c
@@ -0,0 +1,146 @@
+/* This file is part of the program psim.
+
+ Copyright (C) 1994-1995, Andrew Cagney <cagney@highland.com.au>
+
+ 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+ */
+
+#ifndef _OPTIONS_C_
+#define _OPTIONS_C_
+
+#include "basics.h"
+#include "options.h"
+
+STATIC_INLINE const char *
+options_byte_order (int order)
+{
+ switch (order) {
+ case 0: return "0";
+ case BIG_ENDIAN: return "BIG_ENDIAN";
+ case LITTLE_ENDIAN: return "LITTLE_ENDIAN";
+ }
+
+ return "UNKNOWN";
+}
+
+STATIC_INLINE const char *
+options_env (int env)
+{
+ switch (env) {
+ case OPERATING_ENVIRONMENT: return "OPERATING";
+ case VIRTUAL_ENVIRONMENT: return "VIRTUAL";
+ case USER_ENVIRONMENT: return "USER";
+ case 0: return 0;
+ }
+
+ return "UNKNOWN";
+}
+
+STATIC_INLINE const char *
+options_align (int align)
+{
+ switch (align) {
+ case NONSTRICT_ALIGNMENT: return "NONSTRICT";
+ case STRICT_ALIGNMENT: return "STRICT";
+ case 0: return "0";
+ }
+
+ return "UNKNOWN";
+}
+
+STATIC_INLINE const char *
+options_float (int float_type)
+{
+ switch (float_type) {
+ case SOFT_FLOATING_POINT: return "SOFTWARE";
+ case HARD_FLOATING_POINT: return "HARDWARE";
+ }
+
+ return "UNKNOWN";
+}
+
+STATIC_INLINE const char *
+options_mon (int mon)
+{
+ switch (mon) {
+ case MONITOR_INSTRUCTION_ISSUE|MONITOR_LOAD_STORE_UNIT: return "ALL";
+ case MONITOR_INSTRUCTION_ISSUE: return "INSTRUCTION";
+ case MONITOR_LOAD_STORE_UNIT: return "MEMORY";
+ case 0: return "0";
+ }
+
+ return "UNKNOWN";
+}
+
+STATIC_INLINE const char *
+options_ppc (ppc_model ppc)
+{
+ switch (ppc) {
+ case PPC_MODEL_UNKNOWN: return "NONE";
+ case PPC_MODEL_601: return "601";
+ case PPC_MODEL_602: return "602";
+ case PPC_MODEL_603: return "603";
+ case PPC_MODEL_603e: return "603e";
+ case PPC_MODEL_604: return "604";
+ case PPC_MODEL_403: return "403";
+ case PPC_MODEL_505: return "505";
+ case PPC_MODEL_821: return "821";
+ case PPC_MODEL_860: return "860";
+ }
+
+ return "UNKNOWN";
+}
+
+void
+print_options (void)
+{
+ printf_filtered ("WITH_HOST_BYTE_ORDER = %s\n", options_byte_order (WITH_HOST_BYTE_ORDER));
+ printf_filtered ("WITH_TARGET_BYTE_ORDER = %s\n", options_byte_order (WITH_TARGET_BYTE_ORDER));
+ printf_filtered ("WITH_BSWAP = %d\n", WITH_BSWAP);
+ printf_filtered ("WITH_SMP = %d\n", WITH_SMP);
+ printf_filtered ("WITH_HOST_WORD_BITSIZE = %d\n", WITH_HOST_WORD_BITSIZE);
+ printf_filtered ("WITH_TARGET_WORD_BITSIZE = %d\n", WITH_TARGET_WORD_BITSIZE);
+ printf_filtered ("WITH_ENVIRONMENT = %s\n", options_env(WITH_ENVIRONMENT));
+ printf_filtered ("WITH_EVENTS = %d\n", WITH_EVENTS);
+ printf_filtered ("WITH_TIME_BASE = %d\n", WITH_TIME_BASE);
+ printf_filtered ("WITH_CALLBACK_MEMORY = %d\n", WITH_CALLBACK_MEMORY);
+ printf_filtered ("WITH_ALIGNMENT = %s\n", options_align (WITH_ALIGNMENT));
+ printf_filtered ("WITH_FLOATING_POINT = %s\n", options_float (WITH_FLOATING_POINT));
+ printf_filtered ("WITH_TRACE = %d\n", WITH_TRACE);
+ printf_filtered ("WITH_ASSERT = %d\n", WITH_ASSERT);
+ printf_filtered ("WITH_MON = %s\n", options_mon (WITH_MON));
+ printf_filtered ("WITH_FUNCTION_UNIT = %d\n", WITH_FUNCTION_UNIT);
+ printf_filtered ("WITH_DEFAULT_PPC_MODEL = %s\n", options_ppc (WITH_DEFAULT_PPC_MODEL));
+ printf_filtered ("WITH_PPC_MODEL = %s\n", options_ppc (WITH_PPC_MODEL));
+ printf_filtered ("DEFAULT_INLINE = %d\n", DEFAULT_INLINE);
+ printf_filtered ("SIM_ENDIAN_INLINE = %d\n", SIM_ENDIAN_INLINE);
+ printf_filtered ("BITS_INLINE = %d\n", BITS_INLINE);
+ printf_filtered ("CPU_INLINE = %d\n", CPU_INLINE);
+ printf_filtered ("VM_INLINE = %d\n", VM_INLINE);
+ printf_filtered ("CORE_INLINE = %d\n", CORE_INLINE);
+ printf_filtered ("EVENTS_INLINE = %d\n", EVENTS_INLINE);
+ printf_filtered ("MON_INLINE = %d\n", MON_INLINE);
+ printf_filtered ("INTERRUPTS_INLINE = %d\n", INTERRUPTS_INLINE);
+ printf_filtered ("REGISTERS_INLINE = %d\n", REGISTERS_INLINE);
+ printf_filtered ("DEVICE_TREE_INLINE = %d\n", DEVICE_TREE_INLINE);
+ printf_filtered ("DEVICES_INLINE = %d\n", DEVICES_INLINE);
+ printf_filtered ("SPREG_INLINE = %d\n", SPREG_INLINE);
+ printf_filtered ("SEMANTICS_INLINE = %d\n", SEMANTICS_INLINE);
+ printf_filtered ("IDECODE_INLINE = %d\n", IDECODE_INLINE);
+ printf_filtered ("FUNCTION_UNIT_INLINE = %d\n", FUNCTION_UNIT_INLINE);
+}
+
+#endif /* _OPTIONS_C_ */