SCP: Clean up WEAK definition and rework deprecated references to sim_vm_init
As discussed in #794
This commit is contained in:
parent
ca4b733883
commit
8a858c181d
32 changed files with 59 additions and 51 deletions
|
@ -6159,7 +6159,10 @@ static t_stat sim_instr_mmu (void) {
|
|||
|
||||
static t_stat cpu_reset(DEVICE *dptr) {
|
||||
int32 i;
|
||||
sim_vm_is_subroutine_call = cpu_is_pc_a_subroutine_call;
|
||||
if (sim_vm_is_subroutine_call == NULL) { /* First time reset? */
|
||||
sim_vm_is_subroutine_call = cpu_is_pc_a_subroutine_call;
|
||||
altairz80_init();
|
||||
}
|
||||
AF_S = AF1_S = 0;
|
||||
BC_S = DE_S = HL_S = 0;
|
||||
BC1_S = DE1_S = HL1_S = 0;
|
||||
|
@ -6802,8 +6805,6 @@ void altairz80_init(void) {
|
|||
/* altairz80_print_tables(); */
|
||||
}
|
||||
|
||||
WEAK void (*sim_vm_init) (void) = &altairz80_init;
|
||||
|
||||
/* This is the binary loader. The input file is considered to be a string of
|
||||
literal bytes with no special format. The load starts at the current value
|
||||
of the PC if no start address is given. If the input string ends with ROM
|
||||
|
|
|
@ -1874,7 +1874,7 @@ char sim_name [] = "HP 2100"; /* the simulator name */
|
|||
|
||||
int32 sim_emax = MAX_INSTR_LENGTH; /* the maximum number of words in any instruction */
|
||||
|
||||
void (*sim_vm_init) (void) = &one_time_init; /* a pointer to the one-time initializer */
|
||||
WEAK void (*sim_vm_init) (void) = &one_time_init; /* a pointer to the one-time initializer */
|
||||
|
||||
DEVICE *sim_devices [] = { /* an array of pointers to the simulated devices */
|
||||
&cpu_dev, /* CPU (must be first) */
|
||||
|
|
|
@ -1072,7 +1072,7 @@ char sim_name [] = "HP 3000"; /* the simulator name */
|
|||
|
||||
int32 sim_emax = 2; /* the maximum number of words in any instruction */
|
||||
|
||||
void (*sim_vm_init) (void) = &one_time_init; /* a pointer to the one-time initializer */
|
||||
WEAK void (*sim_vm_init) (void) = &one_time_init; /* a pointer to the one-time initializer */
|
||||
|
||||
DEVICE *sim_devices [] = { /* an array of pointers to the simulated devices */
|
||||
&cpu_dev, /* CPU (must be first) */
|
||||
|
|
|
@ -57,6 +57,7 @@ extern int IAS_TimingRing;
|
|||
extern int WriteAddr(int AR, t_int64 d, int NegZero);
|
||||
extern int ReadAddr(int AR, t_int64 * d, int * NegZero);
|
||||
extern CONST char * DecodeOpcode(t_int64 d, int * opcode, int * DA, int * IA);
|
||||
extern void vm_init(void);
|
||||
|
||||
|
||||
/* digits contants */
|
||||
|
|
|
@ -177,6 +177,11 @@ uint16 ascii_to_hol[128] = {
|
|||
void
|
||||
vm_init(void) {
|
||||
int i;
|
||||
static int initialized = 0;
|
||||
|
||||
if (initialized)
|
||||
return;
|
||||
initialized = 1;
|
||||
// Initialize vm memory to all plus zero
|
||||
for(i = 0; i < MAXDRUMSIZE; i++) DRUM[i] = DRUM_NegativeZeroFlag[i] = 0;
|
||||
for(i = 0; i < 60; i++) IAS[i] = IAS_NegativeZeroFlag[i] = 0;
|
||||
|
@ -186,8 +191,6 @@ vm_init(void) {
|
|||
}
|
||||
|
||||
|
||||
void (*sim_vm_init) (void) = &vm_init;
|
||||
|
||||
/* Load a card image file into memory. */
|
||||
|
||||
t_stat
|
||||
|
|
|
@ -764,6 +764,9 @@ store:
|
|||
t_stat
|
||||
cpu_reset(DEVICE * dptr)
|
||||
{
|
||||
extern void sys_init(void);
|
||||
|
||||
sys_init();
|
||||
AC = 0;
|
||||
MQ = 0;
|
||||
dualcore = 0;
|
||||
|
|
|
@ -301,8 +301,6 @@ void sys_init(void) {
|
|||
sim_vm_parse_addr = &parse_addr;
|
||||
}
|
||||
|
||||
void (*sim_vm_init) (void) = &sys_init;
|
||||
|
||||
/* Symbolic decode
|
||||
|
||||
Inputs:
|
||||
|
|
|
@ -132,7 +132,6 @@ int cycle_time = 20; /* Cycle time of 12us */
|
|||
int32 hst_p = 0; /* History pointer */
|
||||
int32 hst_lnt = 0; /* History length */
|
||||
struct InstHistory *hst = NULL; /* History stack */
|
||||
void (*sim_vm_init) (void) = &mem_init;
|
||||
|
||||
|
||||
/* CPU data structures
|
||||
|
@ -2775,6 +2774,12 @@ mem_init() {
|
|||
t_stat
|
||||
cpu_reset(DEVICE * dptr)
|
||||
{
|
||||
static int initialized = 0;
|
||||
|
||||
if (initialized == 0) {
|
||||
initialized = 1;
|
||||
mem_init();
|
||||
}
|
||||
|
||||
AC[1] = PSIGN;
|
||||
AC[2] = PSIGN;
|
||||
|
|
|
@ -231,7 +231,6 @@ int32 hst_lnt = 0; /* History length */
|
|||
struct InstHistory *hst = NULL; /* History stack */
|
||||
extern uint32 drum_addr;
|
||||
extern UNIT chan_unit[];
|
||||
void (*sim_vm_init) (void) = &mem_init;
|
||||
|
||||
|
||||
/* CPU data structures
|
||||
|
@ -3174,6 +3173,12 @@ cpu_reset(DEVICE * dptr)
|
|||
{
|
||||
int i;
|
||||
int n,p,h;
|
||||
static int initialized;
|
||||
|
||||
if (initialized == 0) {
|
||||
initialized = 1;
|
||||
mem_init();
|
||||
}
|
||||
|
||||
/* Set next and previous address arrays based on CPU type */
|
||||
if (CPU_MODEL == CPU_702) {
|
||||
|
|
|
@ -162,9 +162,6 @@ static void cgi_start(void);
|
|||
static void cgi_stop(t_stat reason);
|
||||
static int simh_status_to_stopcode (int status);
|
||||
|
||||
/* hook pointers from scp.c */
|
||||
void (*sim_vm_init) (void) = &sim_init;
|
||||
|
||||
/* space to store extra simulator-specific commands */
|
||||
#define MAX_EXTRA_COMMANDS 10
|
||||
CTAB x_cmds[MAX_EXTRA_COMMANDS];
|
||||
|
@ -1317,6 +1314,7 @@ void break_simulation (t_stat stopreason)
|
|||
|
||||
t_stat cpu_reset (DEVICE *dptr)
|
||||
{
|
||||
sim_init();
|
||||
wait_state = 0; /* cancel wait */
|
||||
wait_lamp = TRUE; /* but keep the wait lamp lit on the GUI */
|
||||
|
||||
|
|
|
@ -343,7 +343,9 @@ void cpu_finishAutoload() {
|
|||
|
||||
/* CPU reset */
|
||||
t_stat cpu_reset (DEVICE *dptr) {
|
||||
// sim_printf("CPU RESET\n");
|
||||
extern void pdq3_vm_init (void);
|
||||
pdq3_vm_init();
|
||||
// sim_printf("CPU RESET\n");
|
||||
sim_brk_types = SWMASK('E')|SWMASK('R')|SWMASK('W');
|
||||
sim_brk_dflt = SWMASK('E');
|
||||
|
||||
|
|
|
@ -34,7 +34,6 @@
|
|||
#include <ctype.h>
|
||||
|
||||
t_stat parse_sym_m (char *cptr, t_value *val, int32 sw);
|
||||
void pdq3_vm_init (void);
|
||||
static t_stat pdq3_cmd_exstack(int32 arg, CONST char *buf);
|
||||
static t_stat pdq3_cmd_exmscw(int32 arg, CONST char *buf);
|
||||
static t_stat pdq3_cmd_extib(int32 arg, CONST char *buf);
|
||||
|
@ -94,8 +93,6 @@ CTAB pdq3_cmds[] = {
|
|||
{ NULL, NULL, 0, NULL }
|
||||
};
|
||||
|
||||
WEAK void (*sim_vm_init)(void) = &pdq3_vm_init;
|
||||
|
||||
/* Loader proper */
|
||||
t_stat sim_load (FILE *fi, CONST char *cptr, CONST char *fnam, int flag)
|
||||
{
|
||||
|
|
|
@ -31,7 +31,6 @@
|
|||
#include <ctype.h>
|
||||
|
||||
static t_bool symtrace = TRUE;
|
||||
static void m68k_sim_init(void);
|
||||
static t_stat hdump_cmd(int32 arg, CONST char* buf);
|
||||
static t_stat symset_cmd(int32 arg, CONST char* buf);
|
||||
static t_stat symclr_cmd(int32 arg, CONST char* buf);
|
||||
|
@ -56,8 +55,6 @@ static CTAB m68k_sim_cmds[] = {
|
|||
{0,0,0,0}
|
||||
};
|
||||
|
||||
WEAK void (*sim_vm_init)(void) = &m68k_sim_init;
|
||||
|
||||
typedef struct _symhash {
|
||||
struct _symhash* nnext;
|
||||
struct _symhash* vnext;
|
||||
|
@ -87,7 +84,7 @@ static void sym_clearall(void)
|
|||
return;
|
||||
}
|
||||
|
||||
static void m68k_sim_init(void)
|
||||
void m68k_sim_init(void)
|
||||
{
|
||||
int i;
|
||||
sim_vm_cmd = m68k_sim_cmds;
|
||||
|
|
|
@ -130,6 +130,10 @@ static void sage_trapcallback(DEVICE* dptr,int trapnum)
|
|||
static t_stat sagecpu_reset(DEVICE* dptr)
|
||||
{
|
||||
t_stat rc;
|
||||
extern void m68k_sim_init(void);
|
||||
|
||||
|
||||
m68k_sim_init();
|
||||
|
||||
/* set CPU pointers */
|
||||
m68kcpu_dev = &sagecpu_dev;
|
||||
|
|
|
@ -34,8 +34,6 @@ void vax_init(void)
|
|||
sim_savename = "InfoServer 1000";
|
||||
}
|
||||
|
||||
WEAK void (*sim_vm_init) (void) = &vax_init;
|
||||
|
||||
extern DEVICE cpu_dev;
|
||||
extern DEVICE tlb_dev;
|
||||
extern DEVICE rom_dev;
|
||||
|
|
|
@ -34,8 +34,6 @@ void vax_init(void)
|
|||
sim_savename = "MicroVAX 2000 (KA410)";
|
||||
}
|
||||
|
||||
WEAK void (*sim_vm_init) (void) = &vax_init;
|
||||
|
||||
extern DEVICE cpu_dev;
|
||||
extern DEVICE tlb_dev;
|
||||
extern DEVICE rom_dev;
|
||||
|
|
|
@ -58,8 +58,6 @@ sim_savename = "VAXstation 3100 M38 (KA42-B)";
|
|||
#endif
|
||||
}
|
||||
|
||||
WEAK void (*sim_vm_init) (void) = &vax_init;
|
||||
|
||||
extern DEVICE cpu_dev;
|
||||
extern DEVICE tlb_dev;
|
||||
extern DEVICE rom_dev;
|
||||
|
|
|
@ -34,8 +34,6 @@ void vax_init(void)
|
|||
sim_savename = "VAXstation 3100 M76 (KA43-A)";
|
||||
}
|
||||
|
||||
WEAK void (*sim_vm_init) (void) = &vax_init;
|
||||
|
||||
extern DEVICE cpu_dev;
|
||||
extern DEVICE tlb_dev;
|
||||
extern DEVICE rom_dev;
|
||||
|
|
|
@ -46,8 +46,6 @@ sim_savename = "VAXstation 4000-VLC (KA48)";
|
|||
#endif
|
||||
}
|
||||
|
||||
WEAK void (*sim_vm_init) (void) = &vax_init;
|
||||
|
||||
extern DEVICE cpu_dev;
|
||||
extern DEVICE tlb_dev;
|
||||
extern DEVICE rom_dev;
|
||||
|
|
|
@ -36,8 +36,6 @@ void vax_init(void)
|
|||
sim_savename = "MicroVAX I (KA610)";
|
||||
}
|
||||
|
||||
WEAK void (*sim_vm_init) (void) = &vax_init;
|
||||
|
||||
extern DEVICE cpu_dev;
|
||||
extern DEVICE mctl_dev;
|
||||
extern DEVICE tlb_dev;
|
||||
|
|
|
@ -45,8 +45,6 @@ sim_savename = "MicroVAX II (KA630)";
|
|||
}
|
||||
#endif
|
||||
|
||||
WEAK void (*sim_vm_init) (void) = &vax_init;
|
||||
|
||||
extern DEVICE cpu_dev;
|
||||
extern DEVICE tlb_dev;
|
||||
extern DEVICE rom_dev;
|
||||
|
|
|
@ -31,6 +31,11 @@
|
|||
|
||||
char sim_name[] = "VAX 11/730";
|
||||
|
||||
void vax_init(void)
|
||||
{
|
||||
sim_savename = "VAX730";
|
||||
}
|
||||
|
||||
extern DEVICE cpu_dev;
|
||||
extern DEVICE tlb_dev;
|
||||
extern DEVICE sysb_dev;
|
||||
|
|
|
@ -31,6 +31,11 @@
|
|||
|
||||
char sim_name[] = "VAX 11/750";
|
||||
|
||||
void vax_init(void)
|
||||
{
|
||||
sim_savename = "VAX750";
|
||||
}
|
||||
|
||||
extern DEVICE cpu_dev;
|
||||
extern DEVICE tlb_dev;
|
||||
extern DEVICE cmi_dev;
|
||||
|
|
|
@ -36,8 +36,6 @@ void vax_init(void)
|
|||
sim_savename = "VAX780";
|
||||
}
|
||||
|
||||
WEAK void (*sim_vm_init) (void) = &vax_init;
|
||||
|
||||
extern DEVICE cpu_dev;
|
||||
extern DEVICE tlb_dev;
|
||||
extern DEVICE sbi_dev;
|
||||
|
|
|
@ -34,8 +34,6 @@ void vax_init(void)
|
|||
sim_savename = "VAX820";
|
||||
}
|
||||
|
||||
WEAK void (*sim_vm_init) (void) = &vax_init;
|
||||
|
||||
extern DEVICE cpu_dev;
|
||||
extern DEVICE tlb_dev;
|
||||
extern DEVICE bi_dev;
|
||||
|
|
|
@ -36,8 +36,6 @@ void vax_init(void)
|
|||
sim_savename = "VAX 8600";
|
||||
}
|
||||
|
||||
WEAK void (*sim_vm_init) (void) = &vax_init;
|
||||
|
||||
extern DEVICE cpu_dev;
|
||||
extern DEVICE tlb_dev;
|
||||
extern DEVICE abus_dev;
|
||||
|
|
|
@ -3315,6 +3315,7 @@ ASTLVL = 4;
|
|||
mapen = 0;
|
||||
FLUSH_ISTR; /* init I-stream */
|
||||
if (M == NULL) { /* first time init? */
|
||||
vax_init();
|
||||
sim_brk_types = sim_brk_dflt = SWMASK ('E');
|
||||
sim_vm_is_subroutine_call = cpu_is_pc_a_subroutine_call;
|
||||
sim_clock_precalibrate_commands = vax_clock_precalibrate_commands;
|
||||
|
|
|
@ -1035,6 +1035,7 @@ extern t_stat cpu_show_instruction_set (FILE *st, UNIT *uptr, int32 val, CONST v
|
|||
extern t_stat cpu_set_instruction_set (UNIT *uptr, int32 val, CONST char *cptr, void *desc);
|
||||
extern t_stat cpu_help (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, const char *cptr);
|
||||
extern t_stat cpu_model_help (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, const char *cptr);
|
||||
extern void vax_init();
|
||||
extern const uint32 byte_mask[33];
|
||||
extern int32 autcon_enb; /* autoconfig enable */
|
||||
extern int32 int_req[IPL_HLVL]; /* intr, IPL 14-17 */
|
||||
|
|
|
@ -37,8 +37,6 @@ void vax_init(void)
|
|||
sim_savename = "VAX";
|
||||
}
|
||||
|
||||
WEAK void (*sim_vm_init) (void) = &vax_init;
|
||||
|
||||
extern DEVICE cpu_dev;
|
||||
extern DEVICE tlb_dev;
|
||||
extern DEVICE rom_dev;
|
||||
|
|
BIN
doc/simh.doc
BIN
doc/simh.doc
Binary file not shown.
2
scp.h
2
scp.h
|
@ -417,7 +417,7 @@ extern t_stat parse_sym (CONST char *cptr, t_addr addr, UNIT *uptr, t_value *val
|
|||
/* The per-simulator init routine is a weak global that defaults to NULL
|
||||
The other per-simulator pointers can be overrriden by the init routine */
|
||||
|
||||
WEAK extern void (*sim_vm_init) (void);
|
||||
extern void (*sim_vm_init) (void);
|
||||
extern char *(*sim_vm_read) (char *ptr, int32 size, FILE *stream);
|
||||
extern void (*sim_vm_post) (t_bool from_scp);
|
||||
extern CTAB *sim_vm_cmd;
|
||||
|
|
14
sim_defs.h
14
sim_defs.h
|
@ -322,12 +322,16 @@ typedef uint32 t_addr;
|
|||
#define WEAK __attribute__((weak))
|
||||
#elif defined(_MSC_VER)
|
||||
#define WEAK __declspec(selectany)
|
||||
#else
|
||||
#define WEAK extern
|
||||
#endif
|
||||
#else
|
||||
#else /* !defined(__GNUC__) && !defined(_MSC_VER) */
|
||||
#define WEAK
|
||||
#endif
|
||||
#endif /* __GNUC__ */
|
||||
#else /* !defined(__cplusplus) */
|
||||
#if defined(__GNUC__)
|
||||
#define WEAK __attribute__((common))
|
||||
#else /* !defined(__GNUC__) */
|
||||
#define WEAK
|
||||
#endif /* defined(__GNUC__) */
|
||||
#endif /* defined(__cplusplus) */
|
||||
|
||||
/* System independent definitions */
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue