From 2753c07dc5131972d1dcbb7628e2f0712c778fec Mon Sep 17 00:00:00 2001 From: Gabe Black Date: Sat, 11 Oct 2008 01:22:20 -0700 Subject: X86: Change the I8259 from a subdevice into a real SimObject. --HG-- rename : src/dev/x86/south_bridge/i8259.cc => src/dev/x86/i8259.cc rename : src/dev/x86/south_bridge/i8259.hh => src/dev/x86/i8259.hh --- src/dev/x86/I8259.py | 37 +++++++++++++++++ src/dev/x86/PC.py | 5 +++ src/dev/x86/SConscript | 4 ++ src/dev/x86/i8259.cc | 51 +++++++++++++++++++++++ src/dev/x86/i8259.hh | 69 ++++++++++++++++++++++++++++++++ src/dev/x86/south_bridge/SConscript | 1 - src/dev/x86/south_bridge/i8259.cc | 45 --------------------- src/dev/x86/south_bridge/i8259.hh | 60 --------------------------- src/dev/x86/south_bridge/south_bridge.cc | 4 -- src/dev/x86/south_bridge/south_bridge.hh | 5 --- 10 files changed, 166 insertions(+), 115 deletions(-) create mode 100644 src/dev/x86/I8259.py create mode 100644 src/dev/x86/i8259.cc create mode 100644 src/dev/x86/i8259.hh delete mode 100644 src/dev/x86/south_bridge/i8259.cc delete mode 100644 src/dev/x86/south_bridge/i8259.hh (limited to 'src/dev/x86') diff --git a/src/dev/x86/I8259.py b/src/dev/x86/I8259.py new file mode 100644 index 000000000..a599a5b3c --- /dev/null +++ b/src/dev/x86/I8259.py @@ -0,0 +1,37 @@ +# Copyright (c) 2008 The Regents of The University of Michigan +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer; +# redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution; +# neither the name of the copyright holders nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# Authors: Gabe Black + +from m5.params import * +from m5.proxy import * +from Device import BasicPioDevice + +class I8259(BasicPioDevice): + type = 'I8259' + cxx_class='X86ISA::I8259' + pio_latency = Param.Latency('1ns', "Programmed IO latency in simticks") + master = Param.Bool(True, 'If this PIC is the master or slave') diff --git a/src/dev/x86/PC.py b/src/dev/x86/PC.py index 6460e7402..d0516ec13 100644 --- a/src/dev/x86/PC.py +++ b/src/dev/x86/PC.py @@ -32,6 +32,7 @@ from m5.proxy import * from Cmos import Cmos from Device import IsaFake from Pci import PciConfigAll +from I8259 import I8259 from Platform import Platform from SouthBridge import SouthBridge from Terminal import Terminal @@ -49,6 +50,8 @@ class PC(Platform): south_bridge = SouthBridge() cmos = Cmos(pio_addr=x86IOAddress(0x70)) + pic1 = I8259(pio_addr=x86IOAddress(0x20), master=True) + pic2 = I8259(pio_addr=x86IOAddress(0xA0), master=False) # "Non-existant" port used for timing purposes by the linux kernel i_dont_exist = IsaFake(pio_addr=x86IOAddress(0x80), pio_size=1) @@ -66,6 +69,8 @@ class PC(Platform): def attachIO(self, bus): self.south_bridge.pio = bus.port self.cmos.pio = bus.port + self.pic1.pio = bus.port + self.pic2.pio = bus.port self.i_dont_exist.pio = bus.port self.behind_pci.pio = bus.port self.com_1.pio = bus.port diff --git a/src/dev/x86/SConscript b/src/dev/x86/SConscript index c9ac19a91..6cc010f71 100644 --- a/src/dev/x86/SConscript +++ b/src/dev/x86/SConscript @@ -37,3 +37,7 @@ if env['FULL_SYSTEM'] and env['TARGET_ISA'] == 'x86': SimObject('Cmos.py') Source('cmos.cc') TraceFlag('CMOS', 'Accesses to CMOS devices') + + SimObject('I8259.py') + Source('i8259.cc') + TraceFlag('I8259', 'Accesses to the I8259 PIC devices') diff --git a/src/dev/x86/i8259.cc b/src/dev/x86/i8259.cc new file mode 100644 index 000000000..62698c0eb --- /dev/null +++ b/src/dev/x86/i8259.cc @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2004-2005 The Regents of The University of Michigan + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer; + * redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution; + * neither the name of the copyright holders nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * Authors: Gabe Black + */ + +#include "dev/x86/i8259.hh" + +Tick +X86ISA::I8259::read(PacketPtr pkt) +{ + DPRINTF(I8259, "Reading from PIC device.\n"); + return latency; +} + +Tick +X86ISA::I8259::write(PacketPtr pkt) +{ + DPRINTF(I8259, "Writing to PIC device.\n"); + return latency; +} + +X86ISA::I8259 * +I8259Params::create() +{ + return new X86ISA::I8259(this); +} diff --git a/src/dev/x86/i8259.hh b/src/dev/x86/i8259.hh new file mode 100644 index 000000000..a2f245513 --- /dev/null +++ b/src/dev/x86/i8259.hh @@ -0,0 +1,69 @@ +/* + * Copyright (c) 2004-2005 The Regents of The University of Michigan + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer; + * redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution; + * neither the name of the copyright holders nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * Authors: Gabe Black + */ + +#ifndef __DEV_X86_I8259_HH__ +#define __DEV_X86_I8259_HH__ + +#include "dev/io_device.hh" +#include "params/I8259.hh" + +namespace X86ISA +{ + +class I8259 : public BasicPioDevice +{ + protected: + Tick latency; + bool master; + + public: + typedef I8259Params Params; + + const Params * + params() const + { + return dynamic_cast(_params); + } + + I8259(Params * p) : BasicPioDevice(p) + { + pioSize = 2; + latency = p->pio_latency; + master = p->master; + } + + Tick read(PacketPtr pkt); + + Tick write(PacketPtr pkt); +}; + +}; // namespace X86ISA + +#endif //__DEV_X86_I8259_HH__ diff --git a/src/dev/x86/south_bridge/SConscript b/src/dev/x86/south_bridge/SConscript index edc091e12..c4e31bb8c 100644 --- a/src/dev/x86/south_bridge/SConscript +++ b/src/dev/x86/south_bridge/SConscript @@ -37,7 +37,6 @@ if env['FULL_SYSTEM'] and env['TARGET_ISA'] == 'x86': # Sub devices Source('i8254.cc') - Source('i8259.cc') Source('speaker.cc') TraceFlag('PCSpeaker') diff --git a/src/dev/x86/south_bridge/i8259.cc b/src/dev/x86/south_bridge/i8259.cc deleted file mode 100644 index 0cf83dece..000000000 --- a/src/dev/x86/south_bridge/i8259.cc +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright (c) 2004-2005 The Regents of The University of Michigan - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer; - * redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution; - * neither the name of the copyright holders nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * Authors: Gabe Black - */ - -#include "dev/x86/south_bridge/i8259.hh" - -Tick -X86ISA::I8259::read(PacketPtr pkt) -{ - warn("Reading from PIC device.\n"); - return SubDevice::read(pkt); -} - -Tick -X86ISA::I8259::write(PacketPtr pkt) -{ - warn("Writing to PIC device.\n"); - return SubDevice::write(pkt); -} diff --git a/src/dev/x86/south_bridge/i8259.hh b/src/dev/x86/south_bridge/i8259.hh deleted file mode 100644 index 3fda75dfb..000000000 --- a/src/dev/x86/south_bridge/i8259.hh +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright (c) 2004-2005 The Regents of The University of Michigan - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer; - * redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution; - * neither the name of the copyright holders nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * Authors: Gabe Black - */ - -#ifndef __DEV_X86_SOUTH_BRIDGE_I8259_HH__ -#define __DEV_X86_SOUTH_BRIDGE_I8259_HH__ - -#include "arch/x86/x86_traits.hh" -#include "base/range.hh" -#include "dev/x86/south_bridge/sub_device.hh" - -namespace X86ISA -{ - -class I8259 : public SubDevice -{ - public: - - I8259() - {} - I8259(Tick _latency) : SubDevice(_latency) - {} - I8259(Addr start, Addr size, Tick _latency) : - SubDevice(start, size, _latency) - {} - - Tick read(PacketPtr pkt); - - Tick write(PacketPtr pkt); -}; - -}; // namespace X86ISA - -#endif //__DEV_X86_SOUTH_BRIDGE_I8259_HH__ diff --git a/src/dev/x86/south_bridge/south_bridge.cc b/src/dev/x86/south_bridge/south_bridge.cc index 6edb3364c..0e9a63a74 100644 --- a/src/dev/x86/south_bridge/south_bridge.cc +++ b/src/dev/x86/south_bridge/south_bridge.cc @@ -67,13 +67,9 @@ SouthBridge::write(PacketPtr pkt) } SouthBridge::SouthBridge(const Params *p) : PioDevice(p), - pic1(0x20, 2, p->pio_latency), - pic2(0xA0, 2, p->pio_latency), pit(this, p->name + ".pit", 0x40, 4, p->pio_latency), speaker(&pit, 0x61, 1, p->pio_latency) { - addDevice(pic1); - addDevice(pic2); addDevice(pit); addDevice(speaker); diff --git a/src/dev/x86/south_bridge/south_bridge.hh b/src/dev/x86/south_bridge/south_bridge.hh index 6510ab348..171589cf3 100644 --- a/src/dev/x86/south_bridge/south_bridge.hh +++ b/src/dev/x86/south_bridge/south_bridge.hh @@ -34,7 +34,6 @@ #include "base/range_map.hh" #include "dev/io_device.hh" #include "dev/x86/south_bridge/i8254.hh" -#include "dev/x86/south_bridge/i8259.hh" #include "dev/x86/south_bridge/speaker.hh" #include "dev/x86/south_bridge/sub_device.hh" #include "params/SouthBridge.hh" @@ -52,10 +51,6 @@ class SouthBridge : public PioDevice void addDevice(X86ISA::SubDevice &); public: - // PICs - X86ISA::I8259 pic1; - X86ISA::I8259 pic2; - // I8254 Programmable Interval Timer X86ISA::I8254 pit; -- cgit v1.2.3