system.hh revision 1492
110152Satgutier@umich.edu/* 210152Satgutier@umich.edu * Copyright (c) 2004 The Regents of The University of Michigan 310152Satgutier@umich.edu * All rights reserved. 410152Satgutier@umich.edu * 510152Satgutier@umich.edu * Redistribution and use in source and binary forms, with or without 610152Satgutier@umich.edu * modification, are permitted provided that the following conditions are 710152Satgutier@umich.edu * met: redistributions of source code must retain the above copyright 810152Satgutier@umich.edu * notice, this list of conditions and the following disclaimer; 910152Satgutier@umich.edu * redistributions in binary form must reproduce the above copyright 1010152Satgutier@umich.edu * notice, this list of conditions and the following disclaimer in the 1110152Satgutier@umich.edu * documentation and/or other materials provided with the distribution; 1210152Satgutier@umich.edu * neither the name of the copyright holders nor the names of its 1310152Satgutier@umich.edu * contributors may be used to endorse or promote products derived from 1410152Satgutier@umich.edu * this software without specific prior written permission. 1510152Satgutier@umich.edu * 1610152Satgutier@umich.edu * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 1710152Satgutier@umich.edu * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 1810152Satgutier@umich.edu * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 1910152Satgutier@umich.edu * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 2010152Satgutier@umich.edu * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 2110152Satgutier@umich.edu * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 2210152Satgutier@umich.edu * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 2310152Satgutier@umich.edu * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 2410152Satgutier@umich.edu * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 2510152Satgutier@umich.edu * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 2610152Satgutier@umich.edu * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 2710152Satgutier@umich.edu */ 2810152Satgutier@umich.edu 2910152Satgutier@umich.edu#ifndef __KERN_LINUX_LINUX_SYSTEM_HH__ 3010152Satgutier@umich.edu#define __KERN_LINUX_LINUX_SYSTEM_HH__ 3110152Satgutier@umich.edu 3210152Satgutier@umich.edu#include "sim/host.hh" 3310152Satgutier@umich.edu#include "sim/system.hh" 3410152Satgutier@umich.edu#include "targetarch/isa_traits.hh" 3510152Satgutier@umich.edu 3610152Satgutier@umich.edu/** 3710152Satgutier@umich.edu * MAGIC address where the kernel arguments should go. Defined as 3810152Satgutier@umich.edu * PARAM in linux kernel alpha-asm. 3910152Satgutier@umich.edu */ 4010152Satgutier@umich.educonst Addr PARAM_ADDR = ULL(0xfffffc000030a000); 4110152Satgutier@umich.edu 4210152Satgutier@umich.educlass ExecContext; 4310152Satgutier@umich.edu 4410152Satgutier@umich.educlass BreakPCEvent; 4510152Satgutier@umich.educlass DebugPrintkEvent; 4610152Satgutier@umich.educlass BreakPCEvent; 4710152Satgutier@umich.educlass LinuxSkipDelayLoopEvent; 4810152Satgutier@umich.educlass SkipFuncEvent; 4910152Satgutier@umich.educlass IdleStartEvent; 5010152Satgutier@umich.educlass PrintThreadInfo; 5110152Satgutier@umich.edu 5210152Satgutier@umich.edu/** 5310152Satgutier@umich.edu * This class contains linux specific system code (Loading, Events, Binning). 5410152Satgutier@umich.edu * It points to objects that are the system binaries to load and patches them 5510152Satgutier@umich.edu * appropriately to work in simulator. 5610152Satgutier@umich.edu */ 5710152Satgutier@umich.educlass LinuxSystem : public System 5810152Satgutier@umich.edu{ 5910152Satgutier@umich.edu private: 6010152Satgutier@umich.edu#ifndef NDEBUG 6110152Satgutier@umich.edu /** Event to halt the simulator if the kernel calls panic() */ 6210152Satgutier@umich.edu BreakPCEvent *kernelPanicEvent; 6310152Satgutier@umich.edu 6410152Satgutier@umich.edu /** Event to halt the simulator if the kernel calls die_if_kernel */ 6510152Satgutier@umich.edu BreakPCEvent *kernelDieEvent; 6610152Satgutier@umich.edu#endif 6710152Satgutier@umich.edu 6810152Satgutier@umich.edu /** 6910152Satgutier@umich.edu * Event to skip determine_cpu_caches() because we don't support 7010152Satgutier@umich.edu * the IPRs that the code can access to figure out cache sizes 7110152Satgutier@umich.edu */ 7210152Satgutier@umich.edu SkipFuncEvent *skipCacheProbeEvent; 7310152Satgutier@umich.edu 7410152Satgutier@umich.edu /** PC based event to skip the ide_delay_50ms() call */ 7510152Satgutier@umich.edu SkipFuncEvent *skipIdeDelay50msEvent; 7610152Satgutier@umich.edu 7710152Satgutier@umich.edu /** 7810152Satgutier@umich.edu * PC based event to skip the dprink() call and emulate its 7910152Satgutier@umich.edu * functionality 8010152Satgutier@umich.edu */ 8110152Satgutier@umich.edu DebugPrintkEvent *debugPrintkEvent; 8210152Satgutier@umich.edu 8310152Satgutier@umich.edu /** 8410152Satgutier@umich.edu * Skip calculate_delay_loop() rather than waiting for this to be 8510152Satgutier@umich.edu * calculated 8610152Satgutier@umich.edu */ 8710152Satgutier@umich.edu LinuxSkipDelayLoopEvent *skipDelayLoopEvent; 8810152Satgutier@umich.edu 8910152Satgutier@umich.edu /** 9010152Satgutier@umich.edu * Event to print information about thread switches if the trace flag 9110152Satgutier@umich.edu * Thread is set 9210152Satgutier@umich.edu */ 9310152Satgutier@umich.edu PrintThreadInfo *printThreadEvent; 9410152Satgutier@umich.edu 9510152Satgutier@umich.edu /** 9610152Satgutier@umich.edu * Event to bin Interrupts seperately from kernel code 9710152Satgutier@umich.edu */ 9810152Satgutier@umich.edu InterruptStartEvent *intStartEvent; 9910152Satgutier@umich.edu 10010152Satgutier@umich.edu /** 10110152Satgutier@umich.edu * Event to bin Interrupts seperately from kernel code 10210152Satgutier@umich.edu */ 10310152Satgutier@umich.edu InterruptEndEvent *intEndEvent; 10410152Satgutier@umich.edu InterruptEndEvent *intEndEvent2; 10510152Satgutier@umich.edu InterruptEndEvent *intEndEvent3; 10610152Satgutier@umich.edu 10710152Satgutier@umich.edu /** Grab the PCBB of the idle process when it starts */ 10810152Satgutier@umich.edu IdleStartEvent *idleStartEvent; 10910152Satgutier@umich.edu 11010152Satgutier@umich.edu public: 11110152Satgutier@umich.edu LinuxSystem(Params *p); 11210152Satgutier@umich.edu ~LinuxSystem(); 11310152Satgutier@umich.edu 11410152Satgutier@umich.edu void setDelayLoop(ExecContext *xc); 11510152Satgutier@umich.edu}; 11610152Satgutier@umich.edu 11710152Satgutier@umich.edu#endif // __KERN_LINUX_LINUX_SYSTEM_HH__ 11810152Satgutier@umich.edu