/[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 26 by dpavlin, Mon Oct 8 16:20:10 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.13 2006/06/24 10:19:19 debug Exp $   *  $Id: machine_pmax.c,v 1.23 2007/02/18 09:19:48 debug Exp $
29   *   *
30   *  DECstation ("PMAX") machine description.   *  DECstation ("PMAX") machine description.
31   */   */
# Line 39  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 74  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 120  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 161  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 235  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)
# Line 254  MACHINE_SETUP(pmax) Line 281  MACHINE_SETUP(pmax)
281                   *      SCSI ID 7                       (0x1c300000) slot 12                   *      SCSI ID 7                       (0x1c300000) slot 12
282                   *  dma for asc0                        (0x1c380000) slot 14                   *  dma for asc0                        (0x1c380000) slot 14
283                   */                   */
284                  machine->md_int.dec_ioasic_data = dev_dec_ioasic_init(cpu,  fatal("TODO: dec_ioasic legacy rewrite\n");
285                      mem, 0x1c000000, 0);  abort();
286                  dev_le_init(machine, mem, 0x1c0c0000, 0, 0, KMIN_INTR_LANCE + 8,  //              machine->md_int.dec_ioasic_data = dev_dec_ioasic_init(cpu,
287                      4 * 65536);  //                  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,                  dev_scc_init(machine, mem, 0x1c100000, KMIN_INTR_SCC_0 + 8,
293                      machine->use_x11, 0, 1);                      machine->use_x11, 0, 1);
294                  dev_scc_init(machine, mem, 0x1c180000, KMIN_INTR_SCC_1 + 8,                  dev_scc_init(machine, mem, 0x1c180000, KMIN_INTR_SCC_1 + 8,
295                      machine->use_x11, 1, 1);                      machine->use_x11, 1, 1);
296                  dev_mc146818_init(machine, mem, 0x1c200000, KMIN_INTR_CLOCK + 8,  fatal("TODO: mc146818 irq\n");
297                      MC146818_DEC, 1);  abort();
298                  dev_asc_init(machine, mem, 0x1c300000, KMIN_INTR_SCSI +8,  //              dev_mc146818_init(machine, mem, 0x1c200000,
299                      NULL, DEV_ASC_DEC, NULL, NULL);  //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 274  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 285  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                  /*  (kmin shared irq numbers (IP) are offset by +8 in the
329                      emulator)  */                      emulator)  */
330                  /*  kmin_csr = dev_kmin_init(cpu, mem, KMIN_REG_INTR);  */                  /*  kmin_csr = dev_kmin_init(cpu, mem, KMIN_REG_INTR);  */
# Line 307  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    
353                  /*                  /*
354                   *  tc0 at mainbus0: 25 MHz clock (slot 0)      (0x1e000000)                   *  tc0 at mainbus0: 25 MHz clock (slot 0)      (0x1e000000)
# Line 323  MACHINE_SETUP(pmax) Line 364  MACHINE_SETUP(pmax)
364                   *  asc0 at ioasic0 offset 0x300000: NCR53C94, 25MHz,                   *  asc0 at ioasic0 offset 0x300000: NCR53C94, 25MHz,
365                   *      SCSI ID 7                               (0x1fb00000)                   *      SCSI ID 7                               (0x1fb00000)
366                   */                   */
367                  machine->md_int.dec_ioasic_data = dev_dec_ioasic_init(cpu,  fatal("TODO: dec_ioasic legacy rewrite\n");
368                      mem, 0x1f800000, 0);  abort();
369    //              machine->md_int.dec_ioasic_data = dev_dec_ioasic_init(cpu,
370                  dev_le_init(machine, mem, KN03_SYS_LANCE, 0, 0,  //                  mem, 0x1f800000, 0);
371                      KN03_INTR_LANCE +8, 4 * 65536);  
372    fatal("TODO: kn03 dev_le_init rewrite\n");
373                  machine->md_int.dec_ioasic_data->dma_func[3] =  abort();
374                      dev_scc_dma_func;  //              dev_le_init(machine, mem, KN03_SYS_LANCE, 0, 0,
375                  machine->md_int.dec_ioasic_data->dma_func_extra[2] =  //                  KN03_INTR_LANCE +8, 4 * 65536);
376                      dev_scc_init(machine, mem, KN03_SYS_SCC_0,  
377                      KN03_INTR_SCC_0 +8, machine->use_x11, 0, 1);  fatal("TODO: dec_ioasic legacy rewrite\n");
378                  machine->md_int.dec_ioasic_data->dma_func[2] =  abort();
379                      dev_scc_dma_func;  //              machine->md_int.dec_ioasic_data->dma_func[3] =
380                  machine->md_int.dec_ioasic_data->dma_func_extra[3] =  //                  dev_scc_dma_func;
381                      dev_scc_init(machine, mem, KN03_SYS_SCC_1,  //              machine->md_int.dec_ioasic_data->dma_func_extra[2] =
382                      KN03_INTR_SCC_1 +8, machine->use_x11, 1, 1);  //                  dev_scc_init(machine, mem, KN03_SYS_SCC_0,
383    //                  KN03_INTR_SCC_0 +8, machine->use_x11, 0, 1);
384                  dev_mc146818_init(machine, mem, KN03_SYS_CLOCK, KN03_INT_RTC,  //              machine->md_int.dec_ioasic_data->dma_func[2] =
385                      MC146818_DEC, 1);  //                  dev_scc_dma_func;
386                  dev_asc_init(machine, mem, KN03_SYS_SCSI,  //              machine->md_int.dec_ioasic_data->dma_func_extra[3] =
387                      KN03_INTR_SCSI +8, NULL, DEV_ASC_DEC, NULL, NULL);  //                  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 352  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 369  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  */
# Line 401  MACHINE_SETUP(pmax) Line 456  MACHINE_SETUP(pmax)
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,                  device_add(machine, "dec5800 addr=0x10000000");
460                      mem, 0x10000000);                  device_add(machine, "decbi addr=0x10000000");
461                  dev_decbi_init(mem, 0x10000000);  
462                  dev_ssc_init(machine, mem, 0x10140000, 2, machine->use_x11,                  snprintf(tmpstr, sizeof(tmpstr), "%s.cpu[%i].dec5800.28",
463                      &machine->md_int.dec5800_csr->csr);                      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 441  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,                  dev_ssc_init(machine, mem, 0x10140000, "irq? TODO",
503                      machine->use_x11, NULL);    /*  TODO:  not irq 0  */                      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 459  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. (?)
# Line 484  MACHINE_SETUP(pmax) Line 545  MACHINE_SETUP(pmax)
545                   *  xcfb0 at tc0 slot 2 offset 0x0: 1024x768x8                   *  xcfb0 at tc0 slot 2 offset 0x0: 1024x768x8
546                   *      built-in framebuffer                    (0xa000000)                   *      built-in framebuffer                    (0xa000000)
547                   */                   */
548                  machine->md_int.dec_ioasic_data =  fatal("TODO: dec_ioasic legacy rewrite\n");
549                      dev_dec_ioasic_init(cpu, mem, 0x1c000000, 0);  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 505  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";
# Line 549  MACHINE_SETUP(pmax) Line 621  MACHINE_SETUP(pmax)
621                   *  asc (scsi) at 0x17100000.                   *  asc (scsi) at 0x17100000.
622                   */                   */
623    
624                  dev_ssc_init(machine, mem, 0x10140000, 0,                  dev_ssc_init(machine, mem, 0x10140000, "TODO: irq",
625                      machine->use_x11, NULL);            /*  TODO:  not irq 0  */                      machine->use_x11);
626    
627                  /*  something at 0x17000000, ultrix says "cpu 0 panic: "                  /*  something at 0x17000000, ultrix says "cpu 0 panic: "
628                      "DS5500 I/O Board is missing" if this is not here  */                      "DS5500 I/O Board is missing" if this is not here  */
# Line 587  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 596  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                   */                   */
673                  dev_mc146818_init(machine, mem, KN230_SYS_CLOCK, 4,  
674                    snprintf(tmpstr, sizeof(tmpstr), "%s.cpu[%i].%i",
675                        machine->path, machine->bootstrap_cpu, 4);
676                    dev_mc146818_init(machine, mem, KN230_SYS_CLOCK, tmpstr,
677                      MC146818_DEC, 1);                      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,                  dev_dc7085_init(machine, mem, KN230_SYS_DZ0,
682                      KN230_CSR_INTR_DZ0, machine->use_x11);/*  NOTE: CSR_INTR  */                      tmpstr, machine->use_x11);
683    
684                  /* dev_dc7085_init(machine, mem, KN230_SYS_DZ1,                  /* dev_dc7085_init(machine, mem, KN230_SYS_DZ1,
685                      KN230_CSR_INTR_OPT0, machine->use_x11);                      KN230_CSR_INTR_OPT0, machine->use_x11);  */
                         NOTE: CSR_INTR  */  
686                  /* dev_dc7085_init(machine, mem, KN230_SYS_DZ2,                  /* dev_dc7085_init(machine, mem, KN230_SYS_DZ2,
687                      KN230_CSR_INTR_OPT1, machine->use_x11);                      KN230_CSR_INTR_OPT1, machine->use_x11);  */
688                          NOTE: CSR_INTR  */  
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,                  dev_le_init(machine, mem, KN230_SYS_LANCE,
693                      KN230_SYS_LANCE_B_START, KN230_SYS_LANCE_B_END,                      KN230_SYS_LANCE_B_START, KN230_SYS_LANCE_B_END,
694                      KN230_CSR_INTR_LANCE, 4*1048576);                      tmpstr, 4*1048576);
                 dev_sii_init(machine, mem, KN230_SYS_SII,  
                     KN230_SYS_SII_B_START, KN230_SYS_SII_B_END,  
                     KN230_CSR_INTR_SII);  
695    
696                  snprintf(tmpstr, sizeof(tmpstr),                  snprintf(tmpstr, sizeof(tmpstr), "%s.cpu[%i].kn230.0x%x",
697                      "kn230 addr=0x%"PRIx64, (uint64_t) KN230_SYS_ICSR);                      machine->path, machine->bootstrap_cpu, KN230_CSR_INTR_SII);
698                  machine->md_int.kn230_csr = device_add(machine, tmpstr);                  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;

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

  ViewVC Help
Powered by ViewVC 1.1.26