/[gxemul]/trunk/src/machines/machine_pmax.c
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /trunk/src/machines/machine_pmax.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 22 by dpavlin, Mon Oct 8 16:19:37 2007 UTC revision 34 by dpavlin, Mon Oct 8 16:21:17 2007 UTC
# Line 1  Line 1 
1  /*  /*
2   *  Copyright (C) 2003-2006  Anders Gavare.  All rights reserved.   *  Copyright (C) 2003-2007  Anders Gavare.  All rights reserved.
3   *   *
4   *  Redistribution and use in source and binary forms, with or without   *  Redistribution and use in source and binary forms, with or without
5   *  modification, are permitted provided that the following conditions are met:   *  modification, are permitted provided that the following conditions are met:
# Line 25  Line 25 
25   *  SUCH DAMAGE.   *  SUCH DAMAGE.
26   *     *  
27   *   *
28   *  $Id: machine_pmax.c,v 1.3 2006/01/23 00:13:21 debug Exp $   *  $Id: machine_pmax.c,v 1.23 2007/02/18 09:19:48 debug Exp $
29     *
30     *  DECstation ("PMAX") machine description.
31   */   */
32    
33  #include <stdio.h>  #include <stdio.h>
# Line 37  Line 39 
39  #include "devices.h"  #include "devices.h"
40  #include "diskimage.h"  #include "diskimage.h"
41  #include "machine.h"  #include "machine.h"
 #include "machine_interrupts.h"  
42  #include "memory.h"  #include "memory.h"
43  #include "misc.h"  #include "misc.h"
44    
# Line 72  MACHINE_SETUP(pmax) Line 73  MACHINE_SETUP(pmax)
73    
74          cpu->byte_order = EMUL_LITTLE_ENDIAN;          cpu->byte_order = EMUL_LITTLE_ENDIAN;
75    
76          /*  An R2020 or R3220 memory thingy:  */          /*
77             *  Add an R2020 or R3220 writeback memory thing:
78             */
79          cpu->cd.mips.coproc[3] = mips_coproc_new(cpu, 3);          cpu->cd.mips.coproc[3] = mips_coproc_new(cpu, 3);
80    
81          /*  There aren't really any good standard values...  */          /*  There aren't really any good standard values...  */
# Line 118  MACHINE_SETUP(pmax) Line 121  MACHINE_SETUP(pmax)
121                      &fb->color_plane_mask);                      &fb->color_plane_mask);
122                  dev_vdac_init(mem, KN01_SYS_VDAC, fb->rgb_palette,                  dev_vdac_init(mem, KN01_SYS_VDAC, fb->rgb_palette,
123                      color_fb_flag);                      color_fb_flag);
124    
125                    snprintf(tmpstr, sizeof(tmpstr), "%s.cpu[%i].%i",
126                        machine->path, machine->bootstrap_cpu, KN01_INT_LANCE);
127                  dev_le_init(machine, mem, KN01_SYS_LANCE,                  dev_le_init(machine, mem, KN01_SYS_LANCE,
128                      KN01_SYS_LANCE_B_START, KN01_SYS_LANCE_B_END,                      KN01_SYS_LANCE_B_START, KN01_SYS_LANCE_B_END,
129                      KN01_INT_LANCE, 4*1048576);                      tmpstr, 4*1048576);
130    
131                    snprintf(tmpstr, sizeof(tmpstr), "%s.cpu[%i].%i",
132                        machine->path, machine->bootstrap_cpu, KN01_INT_SII);
133                  dev_sii_init(machine, mem, KN01_SYS_SII, KN01_SYS_SII_B_START,                  dev_sii_init(machine, mem, KN01_SYS_SII, KN01_SYS_SII_B_START,
134                      KN01_SYS_SII_B_END, KN01_INT_SII);                      KN01_SYS_SII_B_END, tmpstr);
135                  dev_dc7085_init(machine, mem, KN01_SYS_DZ, KN01_INT_DZ,  
136                    snprintf(tmpstr, sizeof(tmpstr), "%s.cpu[%i].%i",
137                        machine->path, machine->bootstrap_cpu, KN01_INT_DZ);
138                    dev_dc7085_init(machine, mem, KN01_SYS_DZ, tmpstr,
139                      machine->use_x11);                      machine->use_x11);
140                  dev_mc146818_init(machine, mem, KN01_SYS_CLOCK, KN01_INT_CLOCK,  
141                    snprintf(tmpstr, sizeof(tmpstr), "%s.cpu[%i].%i",
142                        machine->path, machine->bootstrap_cpu, KN01_INT_CLOCK);
143                    dev_mc146818_init(machine, mem, KN01_SYS_CLOCK, tmpstr,
144                      MC146818_DEC, 1);                      MC146818_DEC, 1);
145                  dev_kn01_csr_init(mem, KN01_SYS_CSR, color_fb_flag);  
146                    dev_kn01_init(mem, KN01_SYS_CSR, color_fb_flag);
147    
148                  framebuffer_console_name = "osconsole=0,3";     /*  fb,keyb  */                  framebuffer_console_name = "osconsole=0,3";     /*  fb,keyb  */
149                  serial_console_name      = "osconsole=3";       /*  3  */                  serial_console_name      = "osconsole=3";       /*  3  */
# Line 159  MACHINE_SETUP(pmax) Line 175  MACHINE_SETUP(pmax)
175                   *  ibus0 at tc0 slot 7 offset 0x0                   *  ibus0 at tc0 slot 7 offset 0x0
176                   *  dc0 at ibus0 addr 0x1fe00000                   *  dc0 at ibus0 addr 0x1fe00000
177                   *  mcclock0 at ibus0 addr 0x1fe80000: mc146818                   *  mcclock0 at ibus0 addr 0x1fe80000: mc146818
                  *  
                  *  kn02 shared irq numbers (IP) are offset by +8  
                  *  in the emulator  
178                   */                   */
179    
180                  /*  KN02 interrupts:  */                  /*  KN02 mainbus (TurboChannel interrupt controller):  */
181                  machine->md_interrupt = kn02_interrupt;                  snprintf(tmpstr, sizeof(tmpstr), "kn02 addr=0x%x "
182                        "irq=%s.cpu[%i].2", (int) KN02_SYS_CSR,
183                        machine->path, machine->bootstrap_cpu);
184                    device_add(machine, tmpstr);
185    
186                  /*                  /*
187                   *  TURBOchannel slots 0, 1, and 2 are free for                   *  TURBOchannel slots 0, 1, and 2 are free for option cards.
188                   *  option cards.  Let's put in zero or more graphics                   *  Let's put in zero or more graphics boards:
                  *  boards:  
189                   *                   *
190                   *  TODO: It's also possible to have larger graphics                   *  TODO: It's also possible to have larger graphics cards that
191                   *  cards that occupy several slots. How to solve                   *  occupy several slots. How should this be solved nicely?
                  *  this nicely?  
192                   */                   */
193    
194                    snprintf(tmpstr, sizeof(tmpstr), "%s.cpu[%i].2.kn02.%i",
195                        machine->path, machine->bootstrap_cpu, 0);
196                  dev_turbochannel_init(machine, mem, 0,                  dev_turbochannel_init(machine, mem, 0,
197                      KN02_PHYS_TC_0_START, KN02_PHYS_TC_0_END,                      KN02_PHYS_TC_0_START, KN02_PHYS_TC_0_END,
198                      machine->n_gfx_cards >= 1?                      machine->n_gfx_cards >= 1?
199                          turbochannel_default_gfx_card : "",                          turbochannel_default_gfx_card : "",
200                      KN02_IP_SLOT0 +8);                      tmpstr);
201    
202                    snprintf(tmpstr, sizeof(tmpstr), "%s.cpu[%i].2.kn02.%i",
203                        machine->path, machine->bootstrap_cpu, 1);
204                  dev_turbochannel_init(machine, mem, 1,                  dev_turbochannel_init(machine, mem, 1,
205                      KN02_PHYS_TC_1_START, KN02_PHYS_TC_1_END,                      KN02_PHYS_TC_1_START, KN02_PHYS_TC_1_END,
206                      machine->n_gfx_cards >= 2?                      machine->n_gfx_cards >= 2?
207                          turbochannel_default_gfx_card : "",                          turbochannel_default_gfx_card : "",
208                      KN02_IP_SLOT1 +8);                      tmpstr);
209    
210                    snprintf(tmpstr, sizeof(tmpstr), "%s.cpu[%i].2.kn02.%i",
211                        machine->path, machine->bootstrap_cpu, 2);
212                  dev_turbochannel_init(machine, mem, 2,                  dev_turbochannel_init(machine, mem, 2,
213                      KN02_PHYS_TC_2_START, KN02_PHYS_TC_2_END,                      KN02_PHYS_TC_2_START, KN02_PHYS_TC_2_END,
214                      machine->n_gfx_cards >= 3?                      machine->n_gfx_cards >= 3?
215                          turbochannel_default_gfx_card : "",                          turbochannel_default_gfx_card : "",
216                      KN02_IP_SLOT2 +8);                      tmpstr);
217    
218                  /*  TURBOchannel slots 3 and 4 are reserved.  */                  /*  TURBOchannel slots 3 and 4 are reserved.  */
219    
220                  /*  TURBOchannel slot 5 is PMAZ-AA ("asc" SCSI).  */                  /*  TURBOchannel slot 5 is PMAZ-AA ("asc" SCSI).  */
221                    snprintf(tmpstr, sizeof(tmpstr), "%s.cpu[%i].2.kn02.%i",
222                        machine->path, machine->bootstrap_cpu, 5);
223                  dev_turbochannel_init(machine, mem, 5,                  dev_turbochannel_init(machine, mem, 5,
224                      KN02_PHYS_TC_5_START, KN02_PHYS_TC_5_END,                      KN02_PHYS_TC_5_START, KN02_PHYS_TC_5_END,
225                      "PMAZ-AA", KN02_IP_SCSI +8);                      "PMAZ-AA", tmpstr);
226    
227                  /*  TURBOchannel slot 6 is PMAD-AA ("le" ethernet).  */                  /*  TURBOchannel slot 6 is PMAD-AA ("le" ethernet).  */
228                    snprintf(tmpstr, sizeof(tmpstr), "%s.cpu[%i].2.kn02.%i",
229                        machine->path, machine->bootstrap_cpu, 6);
230                  dev_turbochannel_init(machine, mem, 6,                  dev_turbochannel_init(machine, mem, 6,
231                      KN02_PHYS_TC_6_START, KN02_PHYS_TC_6_END,                      KN02_PHYS_TC_6_START, KN02_PHYS_TC_6_END,
232                      "PMAD-AA", KN02_IP_LANCE +8);                      "PMAD-AA", tmpstr);
233    
234                  /*  TURBOchannel slot 7 is system stuff.  */                  /*  TURBOchannel slot 7 is system stuff.  */
235                    snprintf(tmpstr, sizeof(tmpstr), "%s.cpu[%i].2.kn02.%i",
236                        machine->path, machine->bootstrap_cpu, 7);
237                  machine->main_console_handle =                  machine->main_console_handle =
238                      dev_dc7085_init(machine, mem,                      dev_dc7085_init(machine, mem,
239                      KN02_SYS_DZ, KN02_IP_DZ +8, machine->use_x11);                      KN02_SYS_DZ, tmpstr, machine->use_x11);
                 dev_mc146818_init(machine, mem,  
                     KN02_SYS_CLOCK, KN02_INT_CLOCK, MC146818_DEC, 1);  
240    
241                  machine->md_int.kn02_csr =                  snprintf(tmpstr, sizeof(tmpstr), "%s.cpu[%i].%i",
242                      dev_kn02_init(cpu, mem, KN02_SYS_CSR);                      machine->path, machine->bootstrap_cpu, KN02_INT_CLOCK);
243                    dev_mc146818_init(machine, mem,
244                        KN02_SYS_CLOCK, tmpstr, MC146818_DEC, 1);
245    
246                  framebuffer_console_name = "osconsole=0,7";                  framebuffer_console_name = "osconsole=0,7";
247                                                                  /*  fb,keyb  */                                                                  /*  fb,keyb  */
# Line 233  MACHINE_SETUP(pmax) Line 260  MACHINE_SETUP(pmax)
260                              "have more than 128MB RAM. Continuing anyway.\n");                              "have more than 128MB RAM. Continuing anyway.\n");
261    
262                  /*  KMIN interrupts:  */                  /*  KMIN interrupts:  */
263                  machine->md_interrupt = kmin_interrupt;  fatal("TODO: Legacy rewrite\n");
264    abort();
265    //              machine->md_interrupt = kmin_interrupt;
266    
267                  /*                  /*
268                   *  tc0 at mainbus0: 12.5 MHz clock                             (0x10000000, slotsize = 64MB)                   *  tc0 at mainbus0: 12.5 MHz clock  (0x10000000,slotsize=64MB)
269                   *  tc slot 1:   0x14000000                   *  tc slot 1:   0x14000000
270                   *  tc slot 2:   0x18000000                   *  tc slot 2:   0x18000000
271                   *  ioasic0 at tc0 slot 3 offset 0x0                            (0x1c000000) slot 0                   *  ioasic0 at tc0 slot 3 offset 0x0    (0x1c000000) slot 0
272                   *  asic regs                                                   (0x1c040000) slot 1                   *  asic regs                           (0x1c040000) slot 1
273                   *  station's ether address                                     (0x1c080000) slot 2                   *  station's ether address             (0x1c080000) slot 2
274                   *  le0 at ioasic0 offset 0xc0000: address 00:00:00:00:00:00    (0x1c0c0000) slot 3                   *  le0 at ioasic0 offset 0xc0000: address 00:00:00:00:00:00
275                   *  scc0 at ioasic0 offset 0x100000                             (0x1c100000) slot 4                   *                                      (0x1c0c0000) slot 3
276                   *  scc1 at ioasic0 offset 0x180000: console                    (0x1c180000) slot 6                   *  scc0 at ioasic0 offset 0x100000     (0x1c100000) slot 4
277                   *  mcclock0 at ioasic0 offset 0x200000: mc146818 or compatible (0x1c200000) slot 8                   *  scc1 at ioasic0 offset 0x180000: console(0x1c180000) slot 6
278                   *  asc0 at ioasic0 offset 0x300000: NCR53C94, 25MHz, SCSI ID 7 (0x1c300000) slot 12                   *  mcclock0 at ioasic0 offset 0x200000: mc146818 or
279                   *  dma for asc0                                                (0x1c380000) slot 14                   *      compatible                      (0x1c200000) slot 8
280                   */                   *  asc0 at ioasic0 offset 0x300000: NCR53C94, 25MHz,
281                  machine->md_int.dec_ioasic_data = dev_dec_ioasic_init(cpu, mem, 0x1c000000, 0);                   *      SCSI ID 7                       (0x1c300000) slot 12
282                  dev_le_init(machine, mem, 0x1c0c0000, 0, 0, KMIN_INTR_LANCE +8, 4*65536);                   *  dma for asc0                        (0x1c380000) slot 14
283                  dev_scc_init(machine, mem, 0x1c100000, KMIN_INTR_SCC_0 +8, machine->use_x11, 0, 1);                   */
284                  dev_scc_init(machine, mem, 0x1c180000, KMIN_INTR_SCC_1 +8, machine->use_x11, 1, 1);  fatal("TODO: dec_ioasic legacy rewrite\n");
285                  dev_mc146818_init(machine, mem, 0x1c200000, KMIN_INTR_CLOCK +8, MC146818_DEC, 1);  abort();
286                  dev_asc_init(machine, mem, 0x1c300000, KMIN_INTR_SCSI +8,  //              machine->md_int.dec_ioasic_data = dev_dec_ioasic_init(cpu,
287                      NULL, DEV_ASC_DEC, NULL, NULL);  //                  mem, 0x1c000000, 0);
288    fatal("TODO: kmin dev_le_init.\n");
289    abort();
290    //              dev_le_init(machine, mem, 0x1c0c0000, 0, 0,
291    //                  KMIN_INTR_LANCE + 8, 4 * 65536);
292                    dev_scc_init(machine, mem, 0x1c100000, KMIN_INTR_SCC_0 + 8,
293                        machine->use_x11, 0, 1);
294                    dev_scc_init(machine, mem, 0x1c180000, KMIN_INTR_SCC_1 + 8,
295                        machine->use_x11, 1, 1);
296    fatal("TODO: mc146818 irq\n");
297    abort();
298    //              dev_mc146818_init(machine, mem, 0x1c200000,
299    //KMIN_INTR_CLOCK + 8,
300    //                  MC146818_DEC, 1);
301    fatal("TODO: kmin asc init\n");
302    abort();
303    //              dev_asc_init(machine, mem, 0x1c300000, KMIN_INTR_SCSI +8,
304    //                  NULL, DEV_ASC_DEC, NULL, NULL);
305    
306                  /*                  /*
307                   *  TURBOchannel slots 0, 1, and 2 are free for                   *  TURBOchannel slots 0, 1, and 2 are free for
# Line 264  MACHINE_SETUP(pmax) Line 310  MACHINE_SETUP(pmax)
310                   *                   *
311                   *  TODO: irqs                   *  TODO: irqs
312                   */                   */
313    fatal("TODO: turbochannel init rewrite!\n");
314    abort();
315    #if 0
316                  dev_turbochannel_init(machine, mem, 0, 0x10000000, 0x103fffff,                  dev_turbochannel_init(machine, mem, 0, 0x10000000, 0x103fffff,
317                      machine->n_gfx_cards >= 1?                      machine->n_gfx_cards >= 1?
318                          turbochannel_default_gfx_card : "", KMIN_INT_TC0);                          turbochannel_default_gfx_card : "", KMIN_INT_TC0);
# Line 275  MACHINE_SETUP(pmax) Line 324  MACHINE_SETUP(pmax)
324                  dev_turbochannel_init(machine, mem, 2, 0x18000000, 0x183fffff,                  dev_turbochannel_init(machine, mem, 2, 0x18000000, 0x183fffff,
325                      machine->n_gfx_cards >= 3?                      machine->n_gfx_cards >= 3?
326                          turbochannel_default_gfx_card : "", KMIN_INT_TC2);                          turbochannel_default_gfx_card : "", KMIN_INT_TC2);
327    #endif
328                  /*  (kmin shared irq numbers (IP) are offset by +8 in the emulator)  */                  /*  (kmin shared irq numbers (IP) are offset by +8 in the
329                        emulator)  */
330                  /*  kmin_csr = dev_kmin_init(cpu, mem, KMIN_REG_INTR);  */                  /*  kmin_csr = dev_kmin_init(cpu, mem, KMIN_REG_INTR);  */
331    
332                  framebuffer_console_name = "osconsole=0,3";     /*  fb, keyb (?)  */                  framebuffer_console_name = "osconsole=0,3";     /* fb,keyb(?) */
333                  serial_console_name      = "osconsole=3";       /*  ?  */                  serial_console_name      = "osconsole=3";       /* ? */
334                  break;                  break;
335    
336          case MACHINE_DEC_3MAXPLUS_5000: /*  type 4, KN03  */          case MACHINE_DEC_3MAXPLUS_5000: /*  type 4, KN03  */
# Line 296  MACHINE_SETUP(pmax) Line 346  MACHINE_SETUP(pmax)
346                              "have more than 480MB RAM. Continuing anyway.\n");                              "have more than 480MB RAM. Continuing anyway.\n");
347    
348                  /*  KN03 interrupts:  */                  /*  KN03 interrupts:  */
349                  machine->md_interrupt = kn03_interrupt;  fatal("TODO: Legacy rewrite\n");
350    abort();
351                  /*  //              machine->md_interrupt = kn03_interrupt;
352                   *  tc0 at mainbus0: 25 MHz clock (slot 0)                      (0x1e000000)  
353                   *  tc0 slot 1                                                  (0x1e800000)                  /*
354                   *  tc0 slot 2                                                  (0x1f000000)                   *  tc0 at mainbus0: 25 MHz clock (slot 0)      (0x1e000000)
355                   *  ioasic0 at tc0 slot 3 offset 0x0                            (0x1f800000)                   *  tc0 slot 1                                  (0x1e800000)
356                   *    something that has to do with interrupts? (?)             (0x1f840000 ?)                   *  tc0 slot 2                                  (0x1f000000)
357                   *  le0 at ioasic0 offset 0xc0000                               (0x1f8c0000)                   *  ioasic0 at tc0 slot 3 offset 0x0            (0x1f800000)
358                   *  scc0 at ioasic0 offset 0x100000                             (0x1f900000)                   *    something that has to do with interrupts? (?)(0x1f840000?)
359                   *  scc1 at ioasic0 offset 0x180000: console                    (0x1f980000)                   *  le0 at ioasic0 offset 0xc0000               (0x1f8c0000)
360                   *  mcclock0 at ioasic0 offset 0x200000: mc146818 or compatible (0x1fa00000)                   *  scc0 at ioasic0 offset 0x100000             (0x1f900000)
361                   *  asc0 at ioasic0 offset 0x300000: NCR53C94, 25MHz, SCSI ID 7 (0x1fb00000)                   *  scc1 at ioasic0 offset 0x180000: console    (0x1f980000)
362                   */                   *  mcclock0 at ioasic0 offset 0x200000: mc146818 or
363                  machine->md_int.dec_ioasic_data = dev_dec_ioasic_init(cpu, mem, 0x1f800000, 0);                   *      compatible                              (0x1fa00000)
364                     *  asc0 at ioasic0 offset 0x300000: NCR53C94, 25MHz,
365                  dev_le_init(machine, mem, KN03_SYS_LANCE, 0, 0, KN03_INTR_LANCE +8, 4*65536);                   *      SCSI ID 7                               (0x1fb00000)
366                     */
367                  machine->md_int.dec_ioasic_data->dma_func[3] = dev_scc_dma_func;  fatal("TODO: dec_ioasic legacy rewrite\n");
368                  machine->md_int.dec_ioasic_data->dma_func_extra[2] = dev_scc_init(machine, mem, KN03_SYS_SCC_0, KN03_INTR_SCC_0 +8, machine->use_x11, 0, 1);  abort();
369                  machine->md_int.dec_ioasic_data->dma_func[2] = dev_scc_dma_func;  //              machine->md_int.dec_ioasic_data = dev_dec_ioasic_init(cpu,
370                  machine->md_int.dec_ioasic_data->dma_func_extra[3] = dev_scc_init(machine, mem, KN03_SYS_SCC_1, KN03_INTR_SCC_1 +8, machine->use_x11, 1, 1);  //                  mem, 0x1f800000, 0);
371    
372                  dev_mc146818_init(machine, mem, KN03_SYS_CLOCK, KN03_INT_RTC, MC146818_DEC, 1);  fatal("TODO: kn03 dev_le_init rewrite\n");
373                  dev_asc_init(machine, mem, KN03_SYS_SCSI,  abort();
374                      KN03_INTR_SCSI +8, NULL, DEV_ASC_DEC, NULL, NULL);  //              dev_le_init(machine, mem, KN03_SYS_LANCE, 0, 0,
375    //                  KN03_INTR_LANCE +8, 4 * 65536);
376    
377    fatal("TODO: dec_ioasic legacy rewrite\n");
378    abort();
379    //              machine->md_int.dec_ioasic_data->dma_func[3] =
380    //                  dev_scc_dma_func;
381    //              machine->md_int.dec_ioasic_data->dma_func_extra[2] =
382    //                  dev_scc_init(machine, mem, KN03_SYS_SCC_0,
383    //                  KN03_INTR_SCC_0 +8, machine->use_x11, 0, 1);
384    //              machine->md_int.dec_ioasic_data->dma_func[2] =
385    //                  dev_scc_dma_func;
386    //              machine->md_int.dec_ioasic_data->dma_func_extra[3] =
387    //                  dev_scc_init(machine, mem, KN03_SYS_SCC_1,
388    //                  KN03_INTR_SCC_1 +8, machine->use_x11, 1, 1);
389    
390    fatal("TODO: mc146818 irq\n");
391    abort();
392    //              dev_mc146818_init(machine, mem, KN03_SYS_CLOCK, KN03_INT_RTC,
393    //                  MC146818_DEC, 1);
394    fatal("TODO: asc init rewrite\n");
395    abort();
396    //              dev_asc_init(machine, mem, KN03_SYS_SCSI,
397    //                  KN03_INTR_SCSI +8, NULL, DEV_ASC_DEC, NULL, NULL);
398    
399                  /*                  /*
400                   *  TURBOchannel slots 0, 1, and 2 are free for                   *  TURBOchannel slots 0, 1, and 2 are free for
# Line 330  MACHINE_SETUP(pmax) Line 403  MACHINE_SETUP(pmax)
403                   *                   *
404                   *  TODO: irqs                   *  TODO: irqs
405                   */                   */
406    fatal("TODO: turbochannel rewrite init\n");
407    abort();
408    #if 0
409                  dev_turbochannel_init(machine, mem, 0,                  dev_turbochannel_init(machine, mem, 0,
410                      KN03_PHYS_TC_0_START, KN03_PHYS_TC_0_END,                      KN03_PHYS_TC_0_START, KN03_PHYS_TC_0_END,
411                      machine->n_gfx_cards >= 1?                      machine->n_gfx_cards >= 1?
# Line 347  MACHINE_SETUP(pmax) Line 423  MACHINE_SETUP(pmax)
423                      machine->n_gfx_cards >= 3?                      machine->n_gfx_cards >= 3?
424                          turbochannel_default_gfx_card : "",                          turbochannel_default_gfx_card : "",
425                      KN03_INTR_TC_2 +8);                      KN03_INTR_TC_2 +8);
426    #endif
427    
428                  /*  TODO: interrupts  */                  /*  TODO: interrupts  */
429                  /*  shared (turbochannel) interrupts are +8  */                  /*  shared (turbochannel) interrupts are +8  */
430    
431                  framebuffer_console_name = "osconsole=0,3";     /*  fb, keyb (?)  */                  framebuffer_console_name = "osconsole=0,3";     /* fb,keyb(?) */
432                  serial_console_name      = "osconsole=3";       /*  ?  */                  serial_console_name      = "osconsole=3";       /* ? */
433                  break;                  break;
434    
435          case MACHINE_DEC_5800:          /*  type 5, KN5800  */          case MACHINE_DEC_5800:          /*  type 5, KN5800  */
# Line 364  MACHINE_SETUP(pmax) Line 441  MACHINE_SETUP(pmax)
441                              "with less than 48MB RAM. Continuing anyway.\n");                              "with less than 48MB RAM. Continuing anyway.\n");
442    
443                  /*                  /*
444                   *  According to http://www2.no.netbsd.org/Ports/pmax/models.html,                   *  According to
445                     *  http://www2.no.netbsd.org/Ports/pmax/models.html,
446                   *  the 5800-series is based on VAX 6000/300.                   *  the 5800-series is based on VAX 6000/300.
447                   */                   */
448    
# Line 372  MACHINE_SETUP(pmax) Line 450  MACHINE_SETUP(pmax)
450                   *  Ultrix might support SMP on this machine type.                   *  Ultrix might support SMP on this machine type.
451                   *                   *
452                   *  Something at 0x10000000.                   *  Something at 0x10000000.
453                   *  ssc serial console at 0x10140000, interrupt 2 (shared with XMI?).                   *  ssc serial console at 0x10140000, interrupt 2 (shared
454                     *  with XMI?).
455                   *  xmi 0 at address 0x11800000   (node x at offset x*0x80000)                   *  xmi 0 at address 0x11800000   (node x at offset x*0x80000)
456                   *  Clock uses interrupt 3 (shared with XMI?).                   *  Clock uses interrupt 3 (shared with XMI?).
457                   */                   */
458    
459                  machine->md_int.dec5800_csr = dev_dec5800_init(machine, mem, 0x10000000);                  device_add(machine, "dec5800 addr=0x10000000");
460                  dev_decbi_init(mem, 0x10000000);                  device_add(machine, "decbi addr=0x10000000");
461                  dev_ssc_init(machine, mem, 0x10140000, 2, machine->use_x11, &machine->md_int.dec5800_csr->csr);  
462                    snprintf(tmpstr, sizeof(tmpstr), "%s.cpu[%i].dec5800.28",
463                        machine->path, machine->bootstrap_cpu);
464                    dev_ssc_init(machine, mem, 0x10140000,
465                        tmpstr, machine->use_x11);
466    
467                  dev_decxmi_init(mem, 0x11800000);                  dev_decxmi_init(mem, 0x11800000);
468                  dev_deccca_init(mem, DEC_DECCCA_BASEADDR);                  dev_deccca_init(mem, DEC_DECCCA_BASEADDR);
469    
# Line 415  MACHINE_SETUP(pmax) Line 499  MACHINE_SETUP(pmax)
499                  /*  ln (ethernet) at 0x10084x00 ? and 0x10120000 ?  */                  /*  ln (ethernet) at 0x10084x00 ? and 0x10120000 ?  */
500                  /*  error registers (?) at 0x17000000 and 0x10080000  */                  /*  error registers (?) at 0x17000000 and 0x10080000  */
501                  device_add(machine, "kn210 addr=0x10080000");                  device_add(machine, "kn210 addr=0x10080000");
502                  dev_ssc_init(machine, mem, 0x10140000, 0, machine->use_x11, NULL);      /*  TODO:  not irq 0  */                  dev_ssc_init(machine, mem, 0x10140000, "irq? TODO",
503                        machine->use_x11);
504                  break;                  break;
505    
506          case MACHINE_DEC_MAXINE_5000:   /*  type 7, KN02CA  */          case MACHINE_DEC_MAXINE_5000:   /*  type 7, KN02CA  */
# Line 432  MACHINE_SETUP(pmax) Line 517  MACHINE_SETUP(pmax)
517                              "have more than 40MB RAM. Continuing anyway.\n");                              "have more than 40MB RAM. Continuing anyway.\n");
518    
519                  /*  Maxine interrupts:  */                  /*  Maxine interrupts:  */
520                  machine->md_interrupt = maxine_interrupt;  fatal("TODO: Legacy rewrite\n");
521    abort();
522    
523    //              machine->md_interrupt = maxine_interrupt;
524    
525                  /*                  /*
526                   *  Something at address 0xca00000. (?)                   *  Something at address 0xca00000. (?)
527                   *  Something at address 0xe000000. (?)                   *  Something at address 0xe000000. (?)
528                   *  tc0 slot 0                                                          (0x10000000)                   *  tc0 slot 0                                  (0x10000000)
529                   *  tc0 slot 1                                                          (0x14000000)                   *  tc0 slot 1                                  (0x14000000)
530                   *  (tc0 slot 2 used by the framebuffer)                   *  (tc0 slot 2 used by the framebuffer)
531                   *  ioasic0 at tc0 slot 3 offset 0x0                                    (0x1c000000)                   *  ioasic0 at tc0 slot 3 offset 0x0            (0x1c000000)
532                   *  le0 at ioasic0 offset 0xc0000: address 00:00:00:00:00:00            (0x1c0c0000)                   *  le0 at ioasic0 offset 0xc0000: address 00:00:00:00:00:00
533                   *  scc0 at ioasic0 offset 0x100000: console  <-- serial                (0x1c100000)                   *                                              (0x1c0c0000)
534                   *  mcclock0 at ioasic0 offset 0x200000: mc146818                       (0x1c200000)                   *  scc0 at ioasic0 offset 0x100000: console  <-- serial
535                   *  isdn at ioasic0 offset 0x240000 not configured                      (0x1c240000)                   *                                              (0x1c100000)
536                   *  bba0 at ioasic0 offset 0x240000 (audio0 at bba0)        <--- which one of isdn and bba0?                   *  mcclock0 at ioasic0 offset 0x200000: mc146818 (0x1c200000)
537                   *  dtop0 at ioasic0 offset 0x280000                                    (0x1c280000)                   *  isdn at ioasic0 offset 0x240000 not configured (0x1c240000)
538                   *  fdc at ioasic0 offset 0x2c0000 not configured  <-- floppy           (0x1c2c0000)                   *  bba0 at ioasic0 offset 0x240000 (audio0 at bba0)
539                   *  asc0 at ioasic0 offset 0x300000: NCR53C94, 25MHz, SCSI ID 7         (0x1c300000)                   *      ^--- which one of isdn and bba0?
540                   *  xcfb0 at tc0 slot 2 offset 0x0: 1024x768x8 built-in framebuffer     (0xa000000)                   *  dtop0 at ioasic0 offset 0x280000            (0x1c280000)
541                   */                   *  fdc at ioasic0 offset 0x2c0000 not configured
542                  machine->md_int.dec_ioasic_data = dev_dec_ioasic_init(cpu, mem, 0x1c000000, 0);                   *      ^-- floppy                              (0x1c2c0000)
543                     *  asc0 at ioasic0 offset 0x300000: NCR53C94, 25MHz, SCSI
544                     *      ID 7                                    (0x1c300000)
545                     *  xcfb0 at tc0 slot 2 offset 0x0: 1024x768x8
546                     *      built-in framebuffer                    (0xa000000)
547                     */
548    fatal("TODO: dec_ioasic legacy rewrite\n");
549    abort();
550    //              machine->md_int.dec_ioasic_data =
551    //                  dev_dec_ioasic_init(cpu, mem, 0x1c000000, 0);
552    
553    fatal("TODO: turbochannel rewrite!\n");
554    abort();
555    #if 0
556                  /*  TURBOchannel slots (0 and 1):  */                  /*  TURBOchannel slots (0 and 1):  */
557                  dev_turbochannel_init(machine, mem, 0,                  dev_turbochannel_init(machine, mem, 0,
558                      0x10000000, 0x103fffff,                      0x10000000, 0x103fffff,
# Line 471  MACHINE_SETUP(pmax) Line 571  MACHINE_SETUP(pmax)
571                   */                   */
572                  dev_turbochannel_init(machine, mem, 2,                  dev_turbochannel_init(machine, mem, 2,
573                      0x8000000, 0xbffffff, "PMAG-DV", 0);                      0x8000000, 0xbffffff, "PMAG-DV", 0);
574    #endif
575                  /*                  /*
576                   *  TURBOchannel slot 3: fixed, ioasic                   *  TURBOchannel slot 3: fixed, ioasic
577                   *  (the system stuff), 0x1c000000                   *  (the system stuff), 0x1c000000
578                   */                   */
579                  dev_le_init(machine, mem, 0x1c0c0000, 0, 0,  fatal("TODO: xine dev_le_init rewrite\n");
580                      XINE_INTR_LANCE +8, 4*65536);  abort();
581    //              dev_le_init(machine, mem, 0x1c0c0000, 0, 0,
582    //                  XINE_INTR_LANCE +8, 4*65536);
583                  dev_scc_init(machine, mem, 0x1c100000,                  dev_scc_init(machine, mem, 0x1c100000,
584                      XINE_INTR_SCC_0 +8, machine->use_x11, 0, 1);                      XINE_INTR_SCC_0 +8, machine->use_x11, 0, 1);
585                  dev_mc146818_init(machine, mem, 0x1c200000,  fatal("TODO: mc146818 irq\n");
586                      XINE_INT_TOY, MC146818_DEC, 1);  abort();
587                  dev_asc_init(machine, mem, 0x1c300000,  //              dev_mc146818_init(machine, mem, 0x1c200000,
588                      XINE_INTR_SCSI +8, NULL, DEV_ASC_DEC, NULL, NULL);  //                  XINE_INT_TOY, MC146818_DEC, 1);
589    fatal("TODO: xine asc init rewrite\n");
590    abort();
591    //              dev_asc_init(machine, mem, 0x1c300000,
592    //                  XINE_INTR_SCSI +8, NULL, DEV_ASC_DEC, NULL, NULL);
593    
594                  framebuffer_console_name = "osconsole=3,2";     /*  keyb,fb ??  */                  framebuffer_console_name = "osconsole=3,2";     /*  keyb,fb?  */
595                  serial_console_name      = "osconsole=3";                  serial_console_name      = "osconsole=3";
596                  break;                  break;
597    
# Line 508  MACHINE_SETUP(pmax) Line 614  MACHINE_SETUP(pmax)
614                   *  something at 0x10040000                   *  something at 0x10040000
615                   *  scc at 0x10140000                   *  scc at 0x10140000
616                   *  qbus at (or around) 0x10080000                   *  qbus at (or around) 0x10080000
617                   *  dssi (disk controller) buffers at 0x10100000, registers at 0x10160000.                   *  dssi (disk controller) buffers at 0x10100000,
618                   *  sgec (ethernet) registers at 0x10008000, station addresss at 0x10120000.                   *      registers at 0x10160000.
619                     *  sgec (ethernet) registers at 0x10008000, station
620                     *      addresss at 0x10120000.
621                   *  asc (scsi) at 0x17100000.                   *  asc (scsi) at 0x17100000.
622                   */                   */
623    
624                  dev_ssc_init(machine, mem, 0x10140000, 0, machine->use_x11, NULL);              /*  TODO:  not irq 0  */                  dev_ssc_init(machine, mem, 0x10140000, "TODO: irq",
625                        machine->use_x11);
626    
627                  /*  something at 0x17000000, ultrix says "cpu 0 panic: DS5500 I/O Board is missing" if this is not here  */                  /*  something at 0x17000000, ultrix says "cpu 0 panic: "
628                        "DS5500 I/O Board is missing" if this is not here  */
629                  dev_dec5500_ioboard_init(cpu, mem, 0x17000000);                  dev_dec5500_ioboard_init(cpu, mem, 0x17000000);
630    
631                  dev_sgec_init(mem, 0x10008000, 0);              /*  irq?  */                  dev_sgec_init(mem, 0x10008000, 0);              /*  irq?  */
632    
633                  /*  The asc controller might be TURBOchannel-ish?  */                  /*  The asc controller might be TURBOchannel-ish?  */
634  #if 0  #if 0
635                  dev_turbochannel_init(machine, mem, 0, 0x17100000, 0x171fffff, "PMAZ-AA", 0);   /*  irq?  */                  dev_turbochannel_init(machine, mem, 0, 0x17100000,
636                        0x171fffff, "PMAZ-AA", 0);  /*  irq?  */
637  #else  #else
638                  dev_asc_init(machine, mem, 0x17100000, 0, NULL, DEV_ASC_DEC, NULL, NULL);               /*  irq?  */                  dev_asc_init(machine, mem, 0x17100000, 0, NULL,
639                        DEV_ASC_DEC, NULL, NULL);           /*  irq?  */
640  #endif  #endif
641    
642                  framebuffer_console_name = "osconsole=0,0";     /*  TODO (?)  */                  framebuffer_console_name = "osconsole=0,0";     /*  TODO (?)  */
# Line 547  MACHINE_SETUP(pmax) Line 659  MACHINE_SETUP(pmax)
659                              "cannot have a graphical framebuffer. "                              "cannot have a graphical framebuffer. "
660                              "Continuing anyway.\n");                              "Continuing anyway.\n");
661    
662                  /*  KN230 interrupts:  */                  /*  KN230 mainbus / interrupt controller:  */
663                  machine->md_interrupt = kn230_interrupt;                  snprintf(tmpstr, sizeof(tmpstr),
664                        "kn230 addr=0x%"PRIx64, (uint64_t) KN230_SYS_ICSR);
665                    device_add(machine, tmpstr);
666    
667                  /*                  /*
668                   *  According to NetBSD/pmax:                   *  According to NetBSD/pmax:
# Line 556  MACHINE_SETUP(pmax) Line 670  MACHINE_SETUP(pmax)
670                   *  le0 at ibus0 addr 0x18000000: address 00:00:00:00:00:00                   *  le0 at ibus0 addr 0x18000000: address 00:00:00:00:00:00
671                   *  sii0 at ibus0 addr 0x1a000000                   *  sii0 at ibus0 addr 0x1a000000
672                   */                   */
                 dev_mc146818_init(machine, mem, KN230_SYS_CLOCK, 4, MC146818_DEC, 1);  
                 dev_dc7085_init(machine, mem, KN230_SYS_DZ0, KN230_CSR_INTR_DZ0, machine->use_x11);             /*  NOTE: CSR_INTR  */  
                 /* dev_dc7085_init(machine, mem, KN230_SYS_DZ1, KN230_CSR_INTR_OPT0, machine->use_x11); */      /*  NOTE: CSR_INTR  */  
                 /* dev_dc7085_init(machine, mem, KN230_SYS_DZ2, KN230_CSR_INTR_OPT1, machine->use_x11); */      /*  NOTE: CSR_INTR  */  
                 dev_le_init(machine, mem, KN230_SYS_LANCE, KN230_SYS_LANCE_B_START, KN230_SYS_LANCE_B_END, KN230_CSR_INTR_LANCE, 4*1048576);  
                 dev_sii_init(machine, mem, KN230_SYS_SII, KN230_SYS_SII_B_START, KN230_SYS_SII_B_END, KN230_CSR_INTR_SII);  
673    
674                  snprintf(tmpstr, sizeof(tmpstr),                  snprintf(tmpstr, sizeof(tmpstr), "%s.cpu[%i].%i",
675                      "kn230 addr=0x%llx", (long long)KN230_SYS_ICSR);                      machine->path, machine->bootstrap_cpu, 4);
676                  machine->md_int.kn230_csr = device_add(machine, tmpstr);                  dev_mc146818_init(machine, mem, KN230_SYS_CLOCK, tmpstr,
677                        MC146818_DEC, 1);
678    
679                    snprintf(tmpstr, sizeof(tmpstr), "%s.cpu[%i].kn230.0x%x",
680                        machine->path, machine->bootstrap_cpu, KN230_CSR_INTR_DZ0);
681                    dev_dc7085_init(machine, mem, KN230_SYS_DZ0,
682                        tmpstr, machine->use_x11);
683    
684                    /* dev_dc7085_init(machine, mem, KN230_SYS_DZ1,
685                        KN230_CSR_INTR_OPT0, machine->use_x11);  */
686                    /* dev_dc7085_init(machine, mem, KN230_SYS_DZ2,
687                        KN230_CSR_INTR_OPT1, machine->use_x11);  */
688    
689                    snprintf(tmpstr, sizeof(tmpstr), "%s.cpu[%i].kn230.0x%x",
690                        machine->path, machine->bootstrap_cpu,
691                        KN230_CSR_INTR_LANCE);
692                    dev_le_init(machine, mem, KN230_SYS_LANCE,
693                        KN230_SYS_LANCE_B_START, KN230_SYS_LANCE_B_END,
694                        tmpstr, 4*1048576);
695    
696                    snprintf(tmpstr, sizeof(tmpstr), "%s.cpu[%i].kn230.0x%x",
697                        machine->path, machine->bootstrap_cpu, KN230_CSR_INTR_SII);
698                    dev_sii_init(machine, mem, KN230_SYS_SII,
699                        KN230_SYS_SII_B_START, KN230_SYS_SII_B_END, tmpstr);
700    
701                  serial_console_name = "osconsole=0";                  serial_console_name = "osconsole=0";
702                  break;                  break;
# Line 588  MACHINE_SETUP(pmax) Line 719  MACHINE_SETUP(pmax)
719    
720    
721          /*  DECstation PROM stuff:  (TODO: endianness)  */          /*  DECstation PROM stuff:  (TODO: endianness)  */
722          for (i=0; i<100; i++)          for (i=0; i<150; i++)
723                  store_32bit_word(cpu, DEC_PROM_CALLBACK_STRUCT + i*4,                  store_32bit_word(cpu, DEC_PROM_CALLBACK_STRUCT + i*4,
724                      DEC_PROM_EMULATION + i*8);                      DEC_PROM_EMULATION + i*8);
725    
726          /*  Fill PROM with dummy return instructions:  (TODO: make this nicer)  */          /*  Fill PROM with special "magic trap" instructions:  */
727          for (i=0; i<100; i++) {          for (i=0; i<150; i++) {
728                  store_32bit_word(cpu, DEC_PROM_EMULATION + i*8,                  store_32bit_word(cpu, DEC_PROM_EMULATION + i*8,
729                      0x03e00008);        /*  return  */                      0x00c0de0c);        /*  trap instruction  */
730                  store_32bit_word(cpu, DEC_PROM_EMULATION + i*8 + 4,                  store_32bit_word(cpu, DEC_PROM_EMULATION + i*8 + 4,
731                      0x00000000);        /*  nop  */                      0x00000000);        /*  nop  */
732          }          }
733    
734            /*  Jumptable at beginning of PROM:  also "magic trap" instructions:  */
735            for (i=0; i<0x180; i+=8) {
736                    store_32bit_word(cpu, 0xbfc00000 + i,
737                        0x00c0de0c);        /*  trap instruction  */
738                    store_32bit_word(cpu, 0xbfc00000 + i + 4,
739                        0x00000000);        /*  nop  */
740            }
741    
742    
743          /*          /*
744           *  According to dec_prom.h from NetBSD:           *  According to dec_prom.h from NetBSD:
745           *           *
# Line 717  MACHINE_SETUP(pmax) Line 857  MACHINE_SETUP(pmax)
857    
858          store_buf(cpu, BOOTINFO_ADDR, (char *)&xx, sizeof(xx));          store_buf(cpu, BOOTINFO_ADDR, (char *)&xx, sizeof(xx));
859    
860          /*          /*  The system's memmap:  */
861           *  The system's memmap:  (memmap is a global variable, in          machine->md.pmax.memmap = malloc(sizeof(struct dec_memmap));
862           *  dec_prom.h)          if (machine->md.pmax.memmap == NULL) {
863           */                  fprintf(stderr, "out of memory\n");
864                    exit(1);
865            }
866          store_32bit_word_in_host(cpu,          store_32bit_word_in_host(cpu,
867              (unsigned char *)&memmap.pagesize, 4096);              (unsigned char *)&machine->md.pmax.memmap->pagesize, 4096);
868          {          {
869                  unsigned int i;                  unsigned int i;
870                  for (i=0; i<sizeof(memmap.bitmap); i++)                  for (i=0; i<sizeof(machine->md.pmax.memmap->bitmap); i++)
871                          memmap.bitmap[i] = ((int)i * 4096*8 <                          machine->md.pmax.memmap->bitmap[i] = ((int)i * 4096*8 <
872                              1048576*machine->physical_ram_in_mb)? 0xff : 0x00;                              1048576*machine->physical_ram_in_mb)? 0xff : 0x00;
873          }          }
874          store_buf(cpu, DEC_MEMMAP_ADDR, (char *)&memmap, sizeof(memmap));          store_buf(cpu, DEC_MEMMAP_ADDR,
875                (char *)machine->md.pmax.memmap, sizeof(struct dec_memmap));
876    
877          /*  Environment variables:  */          /*  Environment variables:  */
878          addr = DEC_PROM_STRINGS;          addr = DEC_PROM_STRINGS;
# Line 747  MACHINE_SETUP(pmax) Line 890  MACHINE_SETUP(pmax)
890           */           */
891          {          {
892                  char tmps[300];                  char tmps[300];
893                  snprintf(tmps, sizeof(tmps), "cca=%x",                  snprintf(tmps, sizeof(tmps), "cca=%"PRIx32,
894                      (int)(DEC_DECCCA_BASEADDR + 0xa0000000ULL));                      (uint32_t) (DEC_DECCCA_BASEADDR + 0xa0000000ULL));
895                  add_environment_string(cpu, tmps, &addr);                  add_environment_string(cpu, tmps, &addr);
896          }          }
897    
# Line 760  MACHINE_SETUP(pmax) Line 903  MACHINE_SETUP(pmax)
903                  tmps[sizeof(tmps)-1] = '\0';                  tmps[sizeof(tmps)-1] = '\0';
904                  add_environment_string(cpu, tmps, &addr);                  add_environment_string(cpu, tmps, &addr);
905    
906                  snprintf(tmps, sizeof(tmps), "bitmap=0x%x", (uint32_t)((                  snprintf(tmps, sizeof(tmps), "bitmap=0x%"PRIx32, (uint32_t)
907                      DEC_MEMMAP_ADDR + sizeof(memmap.pagesize))                      ( (DEC_MEMMAP_ADDR + sizeof(uint32_t) /* skip the
908                      & 0xffffffffULL));                          page size and point to the memmap */
909                        ) & 0xffffffffULL) );
910                  tmps[sizeof(tmps)-1] = '\0';                  tmps[sizeof(tmps)-1] = '\0';
911                  add_environment_string(cpu, tmps, &addr);                  add_environment_string(cpu, tmps, &addr);
912    
913                  snprintf(tmps, sizeof(tmps), "bitmaplen=0x%x",                  snprintf(tmps, sizeof(tmps), "bitmaplen=0x%"PRIx32, (uint32_t)
914                      machine->physical_ram_in_mb * 1048576 / 4096 / 8);                      ( machine->physical_ram_in_mb * 1048576 / 4096 / 8) );
915                  tmps[sizeof(tmps)-1] = '\0';                  tmps[sizeof(tmps)-1] = '\0';
916                  add_environment_string(cpu, tmps, &addr);                  add_environment_string(cpu, tmps, &addr);
917          }          }
# Line 820  MACHINE_DEFAULT_RAM(pmax) Line 964  MACHINE_DEFAULT_RAM(pmax)
964    
965  MACHINE_REGISTER(pmax)  MACHINE_REGISTER(pmax)
966  {  {
967          MR_DEFAULT(pmax, "DECstation/DECsystem", ARCH_MIPS, MACHINE_PMAX, 3, 9);          MR_DEFAULT(pmax, "DECstation/DECsystem", ARCH_MIPS, MACHINE_PMAX);
968    
969          me->aliases[0] = "decstation";          machine_entry_add_alias(me, "decstation");
970          me->aliases[1] = "decsystem";          machine_entry_add_alias(me, "decsystem");
971          me->aliases[2] = "dec";          machine_entry_add_alias(me, "dec");
         me->subtype[0] = machine_entry_subtype_new(  
             "DECstation 3100 (PMAX)", MACHINE_DEC_PMAX_3100, 3);  
         me->subtype[0]->aliases[0] = "pmax";  
         me->subtype[0]->aliases[1] = "3100";  
         me->subtype[0]->aliases[2] = "2100";  
   
         me->subtype[1] = machine_entry_subtype_new(  
             "DECstation 5000/200 (3MAX)", MACHINE_DEC_3MAX_5000, 2);  
         me->subtype[1]->aliases[0] = "3max";  
         me->subtype[1]->aliases[1] = "5000/200";  
   
         me->subtype[2] = machine_entry_subtype_new(  
             "DECstation 5000/1xx (3MIN)", MACHINE_DEC_3MIN_5000, 2);  
         me->subtype[2]->aliases[0] = "3min";  
         me->subtype[2]->aliases[1] = "5000/1xx";  
   
         me->subtype[3] = machine_entry_subtype_new(  
             "DECstation 5000 (3MAXPLUS)", MACHINE_DEC_3MAXPLUS_5000, 2);  
         me->subtype[3]->aliases[0] = "3maxplus";  
         me->subtype[3]->aliases[1] = "3max+";  
   
         me->subtype[4] = machine_entry_subtype_new(  
             "DECsystem 58x0", MACHINE_DEC_5800, 2);  
         me->subtype[4]->aliases[0] = "5800";  
         me->subtype[4]->aliases[1] = "58x0";  
   
         me->subtype[5] = machine_entry_subtype_new(  
             "DECsystem 5400", MACHINE_DEC_5400, 1);  
         me->subtype[5]->aliases[0] = "5400";  
   
         me->subtype[6] = machine_entry_subtype_new(  
             "DECstation Maxine (5000)", MACHINE_DEC_MAXINE_5000, 1);  
         me->subtype[6]->aliases[0] = "maxine";  
   
         me->subtype[7] = machine_entry_subtype_new(  
             "DECsystem 5500", MACHINE_DEC_5500, 1);  
         me->subtype[7]->aliases[0] = "5500";  
   
         me->subtype[8] = machine_entry_subtype_new(  
             "DECstation MipsMate (5100)", MACHINE_DEC_MIPSMATE_5100, 2);  
         me->subtype[8]->aliases[0] = "5100";  
         me->subtype[8]->aliases[1] = "mipsmate";  
972    
973          me->set_default_ram = machine_default_ram_pmax;          machine_entry_add_subtype(me, "DECstation 3100 (PMAX)",
974                MACHINE_DEC_PMAX_3100, "pmax", "3100", "2100", NULL);
975    
976            machine_entry_add_subtype(me, "DECstation 5000/200 (3MAX)",
977                MACHINE_DEC_3MAX_5000, "3max", "5000/200", NULL);
978    
979            machine_entry_add_subtype(me, "DECstation 5000/1xx (3MIN)",
980                MACHINE_DEC_3MIN_5000, "3min", "5000/1xx", NULL);
981    
982            machine_entry_add_subtype(me, "DECstation 5000 (3MAXPLUS)",
983                MACHINE_DEC_3MAXPLUS_5000, "3maxplus", "3max+", NULL);
984    
985          machine_entry_add(me, ARCH_MIPS);          machine_entry_add_subtype(me, "DECsystem 58x0",
986                MACHINE_DEC_5800, "5800", "58x0", NULL);
987    
988            machine_entry_add_subtype(me, "DECsystem 5400",
989                MACHINE_DEC_5400, "5400", NULL);
990    
991            machine_entry_add_subtype(me, "DECstation Maxine (5000)",
992                MACHINE_DEC_MAXINE_5000, "maxine", NULL);
993    
994            machine_entry_add_subtype(me, "DECsystem 5500",
995                MACHINE_DEC_5500, "5500", NULL);
996    
997            machine_entry_add_subtype(me, "DECstation MipsMate (5100)",
998                MACHINE_DEC_MIPSMATE_5100, "5100", "mipsmate", NULL);
999    
1000            me->set_default_ram = machine_default_ram_pmax;
1001  }  }
1002    

Legend:
Removed from v.22  
changed lines
  Added in v.34

  ViewVC Help
Powered by ViewVC 1.1.26