General cleanup; add -t options support to print all options
This commit is contained in:
parent
33698029db
commit
c5addc193d
11 changed files with 395 additions and 189 deletions
|
@ -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
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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
|
||||
#
|
||||
|
|
4
sim/ppc/configure
vendored
4
sim/ppc/configure
vendored
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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");
|
||||
}
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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 },
|
||||
|
|
|
@ -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);
|
||||
|
|
146
sim/ppc/options.c
Normal file
146
sim/ppc/options.c
Normal file
|
@ -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_ */
|
Loading…
Reference in a new issue