malta.cc revision 8229
113531Sjairo.balart@metempsy.com/* 214167Sgiacomo.travaglini@arm.com * Copyright (c) 2004-2005 The Regents of The University of Michigan 314167Sgiacomo.travaglini@arm.com * All rights reserved. 414167Sgiacomo.travaglini@arm.com * 514167Sgiacomo.travaglini@arm.com * Redistribution and use in source and binary forms, with or without 614167Sgiacomo.travaglini@arm.com * modification, are permitted provided that the following conditions are 714167Sgiacomo.travaglini@arm.com * met: redistributions of source code must retain the above copyright 814167Sgiacomo.travaglini@arm.com * notice, this list of conditions and the following disclaimer; 914167Sgiacomo.travaglini@arm.com * redistributions in binary form must reproduce the above copyright 1014167Sgiacomo.travaglini@arm.com * notice, this list of conditions and the following disclaimer in the 1114167Sgiacomo.travaglini@arm.com * documentation and/or other materials provided with the distribution; 1214167Sgiacomo.travaglini@arm.com * neither the name of the copyright holders nor the names of its 1314167Sgiacomo.travaglini@arm.com * contributors may be used to endorse or promote products derived from 1413531Sjairo.balart@metempsy.com * this software without specific prior written permission. 1513531Sjairo.balart@metempsy.com * 1613531Sjairo.balart@metempsy.com * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 1713531Sjairo.balart@metempsy.com * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 1813531Sjairo.balart@metempsy.com * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 1913531Sjairo.balart@metempsy.com * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 2013531Sjairo.balart@metempsy.com * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 2113531Sjairo.balart@metempsy.com * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 2213531Sjairo.balart@metempsy.com * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 2313531Sjairo.balart@metempsy.com * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 2413531Sjairo.balart@metempsy.com * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 2513531Sjairo.balart@metempsy.com * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 2613531Sjairo.balart@metempsy.com * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 2713531Sjairo.balart@metempsy.com * 2813531Sjairo.balart@metempsy.com * Authors: Ali Saidi 2913531Sjairo.balart@metempsy.com * Rick Strong 3013531Sjairo.balart@metempsy.com */ 3113531Sjairo.balart@metempsy.com 3213531Sjairo.balart@metempsy.com/** @file 3313531Sjairo.balart@metempsy.com * Implementation of Malta platform. 3413531Sjairo.balart@metempsy.com */ 3513531Sjairo.balart@metempsy.com 3613531Sjairo.balart@metempsy.com#include <deque> 3713531Sjairo.balart@metempsy.com#include <string> 3813531Sjairo.balart@metempsy.com#include <vector> 3913531Sjairo.balart@metempsy.com 4013531Sjairo.balart@metempsy.com#include "config/the_isa.hh" 4113531Sjairo.balart@metempsy.com#include "cpu/intr_control.hh" 4213756Sjairo.balart@metempsy.com#include "dev/mips/malta.hh" 4313531Sjairo.balart@metempsy.com#include "dev/mips/malta_cchip.hh" 4413531Sjairo.balart@metempsy.com#include "dev/mips/malta_io.hh" 4513531Sjairo.balart@metempsy.com#include "dev/mips/malta_pchip.hh" 4613531Sjairo.balart@metempsy.com#include "dev/terminal.hh" 4713531Sjairo.balart@metempsy.com#include "params/Malta.hh" 4813531Sjairo.balart@metempsy.com#include "sim/system.hh" 4913531Sjairo.balart@metempsy.com 5013531Sjairo.balart@metempsy.comusing namespace std; 5113531Sjairo.balart@metempsy.comusing namespace TheISA; 5213756Sjairo.balart@metempsy.com 5313756Sjairo.balart@metempsy.comMalta::Malta(const Params *p) 5413756Sjairo.balart@metempsy.com : Platform(p), system(p->system) 5513756Sjairo.balart@metempsy.com{ 5613756Sjairo.balart@metempsy.com // set the back pointer from the system to myself 5713756Sjairo.balart@metempsy.com system->platform = this; 5813756Sjairo.balart@metempsy.com 5913531Sjairo.balart@metempsy.com for (int i = 0; i < Malta::Max_CPUs; i++) 6013756Sjairo.balart@metempsy.com intr_sum_type[i] = 0; 6113756Sjairo.balart@metempsy.com} 6213756Sjairo.balart@metempsy.com 6313756Sjairo.balart@metempsy.comTick 6413756Sjairo.balart@metempsy.comMalta::intrFrequency() 6513756Sjairo.balart@metempsy.com{ 6613756Sjairo.balart@metempsy.com return io->frequency(); 6713531Sjairo.balart@metempsy.com} 6813531Sjairo.balart@metempsy.com 6913531Sjairo.balart@metempsy.comvoid 7013531Sjairo.balart@metempsy.comMalta::postConsoleInt() 7113531Sjairo.balart@metempsy.com{ 7213531Sjairo.balart@metempsy.com //see {Linux-src}/arch/mips/mips-boards/sim/sim_setup.c 7313531Sjairo.balart@metempsy.com io->postIntr(0x10/*HW4*/); 7413531Sjairo.balart@metempsy.com} 7513531Sjairo.balart@metempsy.com 7613531Sjairo.balart@metempsy.comvoid 7713531Sjairo.balart@metempsy.comMalta::clearConsoleInt() 7813531Sjairo.balart@metempsy.com{ 7914167Sgiacomo.travaglini@arm.com //FIXME: implement clearConsoleInt() 8014167Sgiacomo.travaglini@arm.com io->clearIntr(0x10/*HW4*/); 8114167Sgiacomo.travaglini@arm.com} 8214167Sgiacomo.travaglini@arm.com 8314167Sgiacomo.travaglini@arm.comvoid 8414167Sgiacomo.travaglini@arm.comMalta::postPciInt(int line) 8513531Sjairo.balart@metempsy.com{ 8613531Sjairo.balart@metempsy.com panic("Malta::postPciInt() has not been implemented."); 8713531Sjairo.balart@metempsy.com} 8813531Sjairo.balart@metempsy.com 8913531Sjairo.balart@metempsy.comvoid 9013531Sjairo.balart@metempsy.comMalta::clearPciInt(int line) 9113531Sjairo.balart@metempsy.com{ 9213531Sjairo.balart@metempsy.com panic("Malta::clearPciInt() has not been implemented."); 9313531Sjairo.balart@metempsy.com} 9413531Sjairo.balart@metempsy.com 9513531Sjairo.balart@metempsy.comAddr 9613531Sjairo.balart@metempsy.comMalta::pciToDma(Addr pciAddr) const 9713531Sjairo.balart@metempsy.com{ 9813531Sjairo.balart@metempsy.com panic("Malta::pciToDma() has not been implemented."); 9913531Sjairo.balart@metempsy.com} 10013531Sjairo.balart@metempsy.com 10113531Sjairo.balart@metempsy.comvoid 10213531Sjairo.balart@metempsy.comMalta::serialize(std::ostream &os) 10313531Sjairo.balart@metempsy.com{ 10413531Sjairo.balart@metempsy.com SERIALIZE_ARRAY(intr_sum_type, Malta::Max_CPUs); 10513531Sjairo.balart@metempsy.com} 10613531Sjairo.balart@metempsy.com 10713531Sjairo.balart@metempsy.comvoid 10813531Sjairo.balart@metempsy.comMalta::unserialize(Checkpoint *cp, const std::string §ion) 10913531Sjairo.balart@metempsy.com{ 11013531Sjairo.balart@metempsy.com UNSERIALIZE_ARRAY(intr_sum_type, Malta::Max_CPUs); 11113531Sjairo.balart@metempsy.com} 11213531Sjairo.balart@metempsy.com 11313531Sjairo.balart@metempsy.comMalta * 11413531Sjairo.balart@metempsy.comMaltaParams::create() 11513531Sjairo.balart@metempsy.com{ 11613531Sjairo.balart@metempsy.com return new Malta(this); 11713531Sjairo.balart@metempsy.com} 11813531Sjairo.balart@metempsy.com