cmos.hh revision 9808
18612Stushar@csail.mit.edu/* 28612Stushar@csail.mit.edu * Copyright (c) 2008 The Regents of The University of Michigan 38612Stushar@csail.mit.edu * All rights reserved. 48612Stushar@csail.mit.edu * 58612Stushar@csail.mit.edu * Redistribution and use in source and binary forms, with or without 68612Stushar@csail.mit.edu * modification, are permitted provided that the following conditions are 78612Stushar@csail.mit.edu * met: redistributions of source code must retain the above copyright 88612Stushar@csail.mit.edu * notice, this list of conditions and the following disclaimer; 98612Stushar@csail.mit.edu * redistributions in binary form must reproduce the above copyright 108612Stushar@csail.mit.edu * notice, this list of conditions and the following disclaimer in the 118612Stushar@csail.mit.edu * documentation and/or other materials provided with the distribution; 128612Stushar@csail.mit.edu * neither the name of the copyright holders nor the names of its 138612Stushar@csail.mit.edu * contributors may be used to endorse or promote products derived from 148612Stushar@csail.mit.edu * this software without specific prior written permission. 158612Stushar@csail.mit.edu * 168612Stushar@csail.mit.edu * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 178612Stushar@csail.mit.edu * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 188612Stushar@csail.mit.edu * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 198612Stushar@csail.mit.edu * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 208612Stushar@csail.mit.edu * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 218612Stushar@csail.mit.edu * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 228612Stushar@csail.mit.edu * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 238612Stushar@csail.mit.edu * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 248612Stushar@csail.mit.edu * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 258612Stushar@csail.mit.edu * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 268612Stushar@csail.mit.edu * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 278612Stushar@csail.mit.edu * 288612Stushar@csail.mit.edu * Authors: Gabe Black 298612Stushar@csail.mit.edu */ 308612Stushar@csail.mit.edu 3111320Ssteve.reinhardt@amd.com#ifndef __DEV_X86_CMOS_HH__ 328612Stushar@csail.mit.edu#define __DEV_X86_CMOS_HH__ 338612Stushar@csail.mit.edu 348612Stushar@csail.mit.edu#include "dev/io_device.hh" 358612Stushar@csail.mit.edu#include "dev/mc146818.hh" 368612Stushar@csail.mit.edu#include "params/Cmos.hh" 378612Stushar@csail.mit.edu 388612Stushar@csail.mit.edunamespace X86ISA 398612Stushar@csail.mit.edu{ 408612Stushar@csail.mit.edu 418612Stushar@csail.mit.educlass IntSourcePin; 428612Stushar@csail.mit.edu 438612Stushar@csail.mit.educlass Cmos : public BasicPioDevice 44{ 45 protected: 46 Tick latency; 47 48 uint8_t address; 49 50 static const int numRegs = 128; 51 52 uint8_t regs[numRegs]; 53 54 uint8_t readRegister(uint8_t reg); 55 void writeRegister(uint8_t reg, uint8_t val); 56 57 class X86RTC : public MC146818 58 { 59 protected: 60 IntSourcePin * intPin; 61 public: 62 X86RTC(EventManager *em, const std::string &n, const struct tm time, 63 bool bcd, Tick frequency, IntSourcePin * _intPin) : 64 MC146818(em, n, time, bcd, frequency), intPin(_intPin) 65 { 66 } 67 protected: 68 void handleEvent(); 69 } rtc; 70 71 public: 72 typedef CmosParams Params; 73 74 Cmos(const Params *p) : BasicPioDevice(p, 2), latency(p->pio_latency), 75 rtc(this, "rtc", p->time, true, ULL(5000000000), p->int_pin) 76 { 77 memset(regs, 0, numRegs * sizeof(uint8_t)); 78 address = 0; 79 } 80 81 Tick read(PacketPtr pkt); 82 83 Tick write(PacketPtr pkt); 84 85 virtual void serialize(std::ostream &os); 86 virtual void unserialize(Checkpoint *cp, const std::string §ion); 87 88}; 89 90} // namespace X86ISA 91 92#endif //__DEV_X86_CMOS_HH__ 93