X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=dev%2Ftsunami.cc;h=f98254354fde1a6abcc0de037cce09d22b6b8eff;hb=2e0695ec9ae9bbc798c8164e9dd66f59fef93b4e;hp=95c6714959d9e81f13631c97b103476879c88fbb;hpb=0e805e1ff35a5c70f8aff785db709c1f3b8d0c28;p=gem5.git diff --git a/dev/tsunami.cc b/dev/tsunami.cc index 95c671495..f98254354 100644 --- a/dev/tsunami.cc +++ b/dev/tsunami.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003 The Regents of The University of Michigan + * Copyright (c) 2004 The Regents of The University of Michigan * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -31,28 +31,67 @@ #include #include "cpu/intr_control.hh" -#include "dev/console.hh" +#include "dev/simconsole.hh" #include "dev/etherdev.hh" -#include "dev/scsi_ctrl.hh" +#include "dev/ide_ctrl.hh" #include "dev/tlaser_clock.hh" #include "dev/tsunami_cchip.hh" #include "dev/tsunami_pchip.hh" +#include "dev/tsunami_io.hh" #include "dev/tsunami.hh" +#include "dev/pciconfigall.hh" #include "sim/builder.hh" #include "sim/system.hh" using namespace std; -Tsunami::Tsunami(const string &name, ScsiController *s, EtherDev *e, - TlaserClock *c, TsunamiCChip *cc, TsunamiPChip *pc, SimConsole *con, - IntrControl *ic, int intr_freq) - : SimObject(name), intctrl(ic), cons(con), scsi(s), ethernet(e), - clock(c), cchip(cc), pchip(pc), interrupt_frequency(intr_freq) +Tsunami::Tsunami(const string &name, System *s, + IntrControl *ic, PciConfigAll *pci, int intr_freq) + : Platform(name, ic, pci, intr_freq), system(s) { + // set the back pointer from the system to myself + system->platform = this; + for (int i = 0; i < Tsunami::Max_CPUs; i++) intr_sum_type[i] = 0; } +Tick +Tsunami::intrFrequency() +{ + return io->frequency(); +} + +void +Tsunami::postConsoleInt() +{ + io->postPIC(0x10); +} + +void +Tsunami::clearConsoleInt() +{ + io->clearPIC(0x10); +} + +void +Tsunami::postPciInt(int line) +{ + cchip->postDRIR(line); +} + +void +Tsunami::clearPciInt(int line) +{ + cchip->clearDRIR(line); +} + +Addr +Tsunami::pciToDma(Addr pciAddr) const +{ + return pchip->translatePciToDma(pciAddr); +} + void Tsunami::serialize(std::ostream &os) { @@ -67,36 +106,28 @@ Tsunami::unserialize(Checkpoint *cp, const std::string §ion) BEGIN_DECLARE_SIM_OBJECT_PARAMS(Tsunami) - SimObjectParam scsi; - SimObjectParam ethernet; - SimObjectParam clock; - SimObjectParam cchip; - SimObjectParam pchip; + SimObjectParam system; SimObjectParam cons; SimObjectParam intrctrl; + SimObjectParam pciconfig; Param interrupt_frequency; END_DECLARE_SIM_OBJECT_PARAMS(Tsunami) BEGIN_INIT_SIM_OBJECT_PARAMS(Tsunami) - INIT_PARAM(scsi, "scsi controller"), - INIT_PARAM(ethernet, "ethernet controller"), - INIT_PARAM(clock, "turbolaser clock"), - INIT_PARAM(cchip, "cchip"), - INIT_PARAM(pchip, "pchip"), + INIT_PARAM(system, "system"), INIT_PARAM(cons, "system console"), INIT_PARAM(intrctrl, "interrupt controller"), - INIT_PARAM_DFLT(interrupt_frequency, "frequency of interrupts", 1200) + INIT_PARAM(pciconfig, "PCI configuration"), + INIT_PARAM_DFLT(interrupt_frequency, "frequency of interrupts", 1024) END_INIT_SIM_OBJECT_PARAMS(Tsunami) - CREATE_SIM_OBJECT(Tsunami) { - return new Tsunami(getInstanceName(), scsi, ethernet, clock, - cchip, pchip, cons, intrctrl, interrupt_frequency); + return new Tsunami(getInstanceName(), system, intrctrl, pciconfig, + interrupt_frequency); } REGISTER_SIM_OBJECT("Tsunami", Tsunami) -