machine_pmax.cc Source File
Back to the index.
Go to the documentation of this file.
53 #define BOOTARG_BUFLEN 2000
58 const char *framebuffer_console_name, *serial_console_name;
62 int boot_scsi_boardnumber = 3, boot_net_boardnumber = 3;
63 const char *turbochannel_default_gfx_card =
"PMAG-BA";
83 framebuffer_console_name =
"osconsole=0,3";
84 serial_console_name =
"osconsole=1";
98 fprintf(stderr,
"WARNING! Real DECstation 3100 machines"
99 " cannot have more than 24MB RAM.\n");
102 fprintf(stderr,
"WARNING! Real DECstation 3100 machines"
103 " have an integer multiple of 4 MBs of RAM.\n");
120 0,0,0,0,0, color_fb_flag?
"VFB02":
"VFB01");
126 snprintf(tmpstr,
sizeof(tmpstr),
"%s.cpu[%i].%i",
132 snprintf(tmpstr,
sizeof(tmpstr),
"%s.cpu[%i].%i",
137 snprintf(tmpstr,
sizeof(tmpstr),
"%s.cpu[%i].%i",
142 snprintf(tmpstr,
sizeof(tmpstr),
"%s.cpu[%i].%i",
149 framebuffer_console_name =
"osconsole=0,3";
150 serial_console_name =
"osconsole=3";
162 fprintf(stderr,
"WARNING! Real KN02 machines do not "
163 "have less than 8MB RAM. Continuing anyway.\n");
165 fprintf(stderr,
"WARNING! Real KN02 machines cannot "
166 "have more than 480MB RAM. Continuing anyway.\n");
181 snprintf(tmpstr,
sizeof(tmpstr),
"kn02 addr=0x%x "
194 snprintf(tmpstr,
sizeof(tmpstr),
"%s.cpu[%i].2.kn02.%i",
199 turbochannel_default_gfx_card :
"",
202 snprintf(tmpstr,
sizeof(tmpstr),
"%s.cpu[%i].2.kn02.%i",
207 turbochannel_default_gfx_card :
"",
210 snprintf(tmpstr,
sizeof(tmpstr),
"%s.cpu[%i].2.kn02.%i",
215 turbochannel_default_gfx_card :
"",
221 snprintf(tmpstr,
sizeof(tmpstr),
"%s.cpu[%i].2.kn02.%i",
228 snprintf(tmpstr,
sizeof(tmpstr),
"%s.cpu[%i].2.kn02.%i",
235 snprintf(tmpstr,
sizeof(tmpstr),
"%s.cpu[%i].2.kn02.%i",
241 snprintf(tmpstr,
sizeof(tmpstr),
"%s.cpu[%i].%i",
246 framebuffer_console_name =
"osconsole=0,7";
248 serial_console_name =
"osconsole=2";
249 boot_scsi_boardnumber = 5;
250 boot_net_boardnumber = 6;
259 fprintf(stderr,
"WARNING! Real 3MIN machines cannot "
260 "have more than 128MB RAM. Continuing anyway.\n");
263 snprintf(tmpstr,
sizeof(tmpstr),
"kn02ba irq=%s.cpu[%i].%i",
290 snprintf(tmpstr,
sizeof(tmpstr),
"%s.cpu[%i].%i.kn02ba.0x%x",
295 snprintf(tmpstr,
sizeof(tmpstr),
"%s.cpu[%i].%i.kn02ba.0x%x",
301 snprintf(tmpstr,
sizeof(tmpstr),
"%s.cpu[%i].%i.kn02ba.0x%x",
306 snprintf(tmpstr,
sizeof(tmpstr),
"%s.cpu[%i].%i.kn02ba.0x%x",
319 snprintf(tmpstr,
sizeof(tmpstr),
"%s.cpu[%i].%i",
324 turbochannel_default_gfx_card :
"",
327 snprintf(tmpstr,
sizeof(tmpstr),
"%s.cpu[%i].%i",
332 turbochannel_default_gfx_card :
"",
335 snprintf(tmpstr,
sizeof(tmpstr),
"%s.cpu[%i].%i",
340 turbochannel_default_gfx_card :
"",
347 framebuffer_console_name =
"osconsole=0,3";
348 serial_console_name =
"osconsole=3";
360 fprintf(stderr,
"WARNING! Real KN03 machines cannot "
361 "have more than 480MB RAM. Continuing anyway.\n");
364 fatal(
"TODO: Legacy rewrite\n");
382 fatal(
"TODO: dec_ioasic legacy rewrite\n");
387 fatal(
"TODO: kn03 dev_le_init rewrite\n");
392 fatal(
"TODO: dec_ioasic legacy rewrite\n");
405 fatal(
"TODO: mc146818 irq\n");
409 fatal(
"TODO: asc init rewrite\n");
421 fatal(
"TODO: turbochannel rewrite init\n");
427 turbochannel_default_gfx_card :
"",
433 turbochannel_default_gfx_card :
"",
439 turbochannel_default_gfx_card :
"",
446 framebuffer_console_name =
"osconsole=0,3";
447 serial_console_name =
"osconsole=3";
455 fprintf(stderr,
"WARNING! 5800 will probably not run "
456 "with less than 48MB RAM. Continuing anyway.\n");
477 snprintf(tmpstr,
sizeof(tmpstr),
"%s.cpu[%i].dec5800.28",
523 "(MAXINE) (KN02CA)");
528 fprintf(stderr,
"WARNING! Real KN02CA machines do not "
529 "have less than 8MB RAM. Continuing anyway.\n");
531 fprintf(stderr,
"WARNING! Real KN02CA machines cannot "
532 "have more than 40MB RAM. Continuing anyway.\n");
535 fatal(
"TODO: Legacy rewrite\n");
563 fatal(
"TODO: dec_ioasic legacy rewrite\n");
568 fatal(
"TODO: turbochannel rewrite!\n");
573 0x10000000, 0x103fffff,
575 turbochannel_default_gfx_card :
"",
578 0x14000000, 0x143fffff,
580 turbochannel_default_gfx_card :
"",
588 0x8000000, 0xbffffff,
"PMAG-DV", 0);
594 fatal(
"TODO: xine dev_le_init rewrite\n");
600 fatal(
"TODO: mc146818 irq\n");
604 fatal(
"TODO: xine asc init rewrite\n");
609 framebuffer_console_name =
"osconsole=3,2";
610 serial_console_name =
"osconsole=3";
651 0x171fffff,
"PMAZ-AA", 0);
657 framebuffer_console_name =
"osconsole=0,0";
658 serial_console_name =
"osconsole=0";
668 fprintf(stderr,
"WARNING! Real MIPSMATE 5100 machines "
669 "cannot have more than 128MB RAM. Continuing"
673 fprintf(stderr,
"WARNING! Real MIPSMATE 5100 machines "
674 "cannot have a graphical framebuffer. "
675 "Continuing anyway.\n");
678 snprintf(tmpstr,
sizeof(tmpstr),
689 snprintf(tmpstr,
sizeof(tmpstr),
"%s.cpu[%i].%i",
694 snprintf(tmpstr,
sizeof(tmpstr),
"%s.cpu[%i].kn230.0x%x",
704 snprintf(tmpstr,
sizeof(tmpstr),
"%s.cpu[%i].kn230.0x%x",
711 snprintf(tmpstr,
sizeof(tmpstr),
"%s.cpu[%i].kn230.0x%x",
716 serial_console_name =
"osconsole=0";
719 default:
fatal(
"Unknown DEC machine type: %i\n",
737 for (i=0; i<150; i++)
742 for (i=0; i<150; i++) {
750 for (i=0; i<0x180; i+=8) {
802 strlcpy(bootpath,
"rz(0,0,0)",
sizeof(bootpath));
805 strlcpy(bootpath,
"X/rzY/",
sizeof(bootpath));
809 strlcpy(bootpath,
"5/tftp/",
sizeof(bootpath));
810 bootpath[0] =
'0' + boot_net_boardnumber;
813 bootpath[0] =
'0' + boot_scsi_boardnumber;
820 init_bootpath = bootpath;
827 fprintf(stderr,
"bootarg truncated?\n");
847 fprintf(stderr,
"bootstr truncated?\n");
852 xx.a.common.next = (
char *)&xx.b - (
char *)&xx;
856 xx.b.common.next = (
char *)&xx.c - (
char *)&xx.b;
860 xx.c.common.next = 0;
901 snprintf(tmps,
sizeof(tmps),
"cca=%" PRIx32,
911 tmps[
sizeof(tmps)-1] =
'\0';
914 snprintf(tmps,
sizeof(tmps),
"bitmap=0x%" PRIx32, (uint32_t)
917 ) & 0xffffffffULL) );
918 tmps[
sizeof(tmps)-1] =
'\0';
921 snprintf(tmps,
sizeof(tmps),
"bitmaplen=0x%" PRIx32, (uint32_t)
923 tmps[
sizeof(tmps)-1] =
'\0';
1008 me->set_default_ram = machine_default_ram_pmax;
struct mips_coproc * coproc[N_MIPS_COPROCS]
#define KN230_SYS_SII_B_END
uint64_t file_loaded_end_addr
#define KN03_PHYS_TC_2_END
#define KN01_SYS_LANCE_B_END
void dev_le_init(struct machine *machine, struct memory *mem, uint64_t baseaddr, uint64_t buf_start, uint64_t buf_end, const char *irq_path, int len)
#define KN02_PHYS_TC_1_END
#define KN230_SYS_LANCE_B_START
#define KN03_PHYS_TC_0_START
void store_buf(struct cpu *cpu, uint64_t addr, const char *s, size_t len)
unsigned char rgb_palette[256 *3]
#define KN02_PHYS_TC_1_START
#define KMIN_PHYS_TC_1_START
#define KN230_CSR_INTR_DZ0
unsigned char color_plane_mask
#define KN02_PHYS_TC_5_START
void add_environment_string(struct cpu *cpu, const char *s, uint64_t *addr)
#define KN230_SYS_SII_B_START
struct mips_coproc * mips_coproc_new(struct cpu *cpu, int coproc_nr)
#define KMIN_PHYS_TC_2_START
#define KN03_PHYS_TC_0_END
struct dec5500_ioboard_data * dev_dec5500_ioboard_init(struct cpu *cpu, struct memory *mem, uint64_t baseaddr)
char * boot_string_argument
#define MACHINE_DEC_MIPSMATE_5100
#define KN02_PHYS_TC_2_START
#define KMIN_PHYS_TC_1_END
#define KN03_PHYS_TC_1_END
#define KN01_SYS_SII_B_START
int diskimage_is_a_tape(struct machine *machine, int id, int type)
struct dec_memmap * memmap
void fatal(const char *fmt,...)
#define KN01_SYS_SII_B_END
void machine_entry_add_subtype(struct machine_entry *me, const char *name, int oldstyle_subtype,...)
#define KN03_PHYS_TC_1_START
#define KN230_CSR_INTR_LANCE
#define KN02_PHYS_TC_2_END
#define KN02_PHYS_TC_5_END
void * device_add(struct machine *machine, const char *name_and_params)
#define MACHINE_DEC_3MIN_5000
#define KN02_PHYS_TC_6_END
void dev_deccca_init(struct memory *mem, uint64_t baseaddr)
#define MR_DEFAULT(x, name, arch, type)
void dev_ssc_init(struct machine *machine, struct memory *mem, uint64_t baseaddr, const char *irq_path, int use_fb)
void store_string(struct cpu *cpu, uint64_t addr, const char *s)
#define KN01_PHYS_COLMASK_START
void dev_colorplanemask_init(struct memory *mem, uint64_t baseaddr, unsigned char *color_plane_mask)
#define DEC_DECCCA_BASEADDR
struct machine_pmax * pmax
void * dev_scc_init(struct machine *machine, struct memory *mem, uint64_t baseaddr, char *irq_path, int use_fb, int scc_nr, int addrmul)
#define DEC_PROM_INITIAL_ARGV
MACHINE_DEFAULT_RAM(pmax)
uint32_t physical_ram_in_mb
#define KMIN_PHYS_TC_0_END
void dev_sgec_init(struct memory *mem, uint64_t baseaddr, int irq_nr)
#define EMUL_LITTLE_ENDIAN
char * boot_kernel_filename
void dev_asc_init(struct machine *machine, struct memory *mem, uint64_t baseaddr, const char *irq_path, void *turbochannel, int mode, size_t(*dma_controller)(void *dma_controller_data, unsigned char *data, size_t len, int writeflag), void *dma_controller_data)
#define DEV_RAM_MIGHT_POINT_TO_DEVICES
#define KN01_PHYS_FBUF_START
#define DEC_PROM_EMULATION
#define MACHINE_DEC_PMAX_3100
#define KN03_PHYS_TC_2_START
int store_32bit_word(struct cpu *cpu, uint64_t addr, uint64_t data32)
#define KN02_PHYS_TC_0_START
void dev_kn01_init(struct memory *mem, uint64_t baseaddr, int color_fb)
#define INITIAL_STACK_POINTER
uint64_t gpr[N_MIPS_GPRS]
#define MACHINE_DEC_3MAXPLUS_5000
void store_32bit_word_in_host(struct cpu *cpu, unsigned char *data, uint64_t data32)
int dev_dc7085_init(struct machine *machine, struct memory *mem, uint64_t baseaddr, char *irq_path, int use_fb)
#define DEC_PROM_CALLBACK_STRUCT
void dev_vdac_init(struct memory *mem, uint64_t baseaddr, unsigned char *rgb_palette, int color_fb_flag)
void dev_turbochannel_init(struct machine *machine, struct memory *mem, int slot_nr, uint64_t baseaddr, uint64_t endaddr, const char *device_name, const char *irq_path)
void dev_sii_init(struct machine *machine, struct memory *mem, uint64_t baseaddr, uint64_t buf_start, uint64_t buf_end, char *irq_path)
#define MACHINE_DEC_3MAX_5000
#define KN02_PHYS_TC_0_END
#define MACHINE_DEC_MAXINE_5000
const char * machine_name
void dev_mc146818_init(struct machine *machine, struct memory *mem, uint64_t baseaddr, char *irq_path, int access_style, int addrdiv)
#define KN01_SYS_LANCE_B_START
#define KN02_PHYS_TC_6_START
#define KMIN_PHYS_TC_2_END
MACHINE_DEFAULT_CPU(pmax)
void dev_decxmi_init(struct memory *mem, uint64_t baseaddr)
#define KN230_SYS_LANCE_B_END
void machine_entry_add_alias(struct machine_entry *me, const char *name)
void dev_ram_init(struct machine *machine, uint64_t baseaddr, uint64_t length, int mode, uint64_t otheraddress, const char *name)
#define KMIN_PHYS_TC_0_START
struct vfb_data * dev_fb_init(struct machine *machine, struct memory *mem, uint64_t baseaddr, int vfb_type, int visible_xsize, int visible_ysize, int xsize, int ysize, int bit_depth, const char *name)
#define KN230_CSR_INTR_SII
#define CHECK_ALLOCATION(ptr)
Generated on Tue Aug 25 2020 19:25:06 for GXemul by
1.8.18