亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? cpu.hh

?? linux下基于c++的處理器仿真平臺。具有處理器流水線
?? HH
字號:
/* * Copyright (c) 2004, 2005 * The Regents of The University of Michigan * All Rights Reserved * * This code is part of the M5 simulator, developed by Nathan Binkert, * Erik Hallnor, Steve Raasch, and Steve Reinhardt, with contributions * from Ron Dreslinski, Dave Greene, Lisa Hsu, Kevin Lim, Ali Saidi, * and Andrew Schultz. * * Permission is granted to use, copy, create derivative works and * redistribute this software and such derivative works for any * purpose, so long as the copyright notice above, this grant of * permission, and the disclaimer below appear in all copies made; and * so long as the name of The University of Michigan is not used in * any advertising or publicity pertaining to the use or distribution * of this software without specific, written prior authorization. * * THIS SOFTWARE IS PROVIDED AS IS, WITHOUT REPRESENTATION FROM THE * UNIVERSITY OF MICHIGAN AS TO ITS FITNESS FOR ANY PURPOSE, AND * WITHOUT WARRANTY BY THE UNIVERSITY OF MICHIGAN OF ANY KIND, EITHER * EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE. THE REGENTS OF THE UNIVERSITY OF MICHIGAN SHALL NOT BE * LIABLE FOR ANY DAMAGES, INCLUDING DIRECT, SPECIAL, INDIRECT, * INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WITH RESPECT TO ANY CLAIM * ARISING OUT OF OR IN CONNECTION WITH THE USE OF THE SOFTWARE, EVEN * IF IT HAS BEEN OR IS HEREAFTER ADVISED OF THE POSSIBILITY OF SUCH * DAMAGES. *//** * @file * Declarations for FastCPU object and surrounding objects. */#ifndef __FAST_CPU_HH__#define __FAST_CPU_HH__#include "config/full_system.hh"#include "cpu/base.hh"#include "sim/eventq.hh"#include "cpu/pc_event.hh"#include "cpu/exec_context.hh"#include "cpu/sampler/sampler.hh"#include "cpu/static_inst.hh"// forward declarations#if FULL_SYSTEMclass Processor;class AlphaITB;class AlphaDTB;class PhysicalMemory;class RemoteGDB;class GDBListener;#endif // FULL_SYSTEMclass MemInterface;class Checkpoint;/** * A fast, simple CPU model for generating checkpoints. * @todo: Move things to the ISA level that should be there.  Be more * efficient in handling PC-based and number-of-committed-instruction-based * events.  Templatize so itb and dtb aren't architecture specific.   */class FastCPU : public BaseCPU{  public:    /** main simulation loop (one cycle). */    void tick();  private:    /** TickEvent class used to schedule cpu ticks. */    class TickEvent : public Event    {      private:	FastCPU *cpu;      public:        /**         * TickEvent constructor.         * @param c The CPU associated with this tick event.         */	TickEvent(FastCPU *c);        /** Process tick event. */	void process();        /** Accessor of description of event. */	const char *description();    };    /** TickEvent object to schedule CPU ticks. */    TickEvent tickEvent;    /**      * Schedule tick event, regardless of its current state.     * @param numCycles The delay, in ticks, of when this event will be     * scheduled.     */            void scheduleTickEvent(int numCycles)    {	if (tickEvent.squashed())	    tickEvent.reschedule(curTick + cycles(numCycles));	else if (!tickEvent.scheduled())	    tickEvent.schedule(curTick + cycles(numCycles));    }    /**     * Unschedule tick event, regardless of its current state.     */    void unscheduleTickEvent()    {	if (tickEvent.scheduled())	    tickEvent.squash();    }    /**      * Function to check for and process any interrupts.     * Not sure if this should be private, but will leave it so for now     * Moved to isa_fullsys_traits.hh and ev5.cc     */    void processInterrupts();  public:    /** FastCPU statuses. */    enum Status {	Running,	Idle,	SwitchedOut    };  private:    Status _status;  public:    /**     * Sets machine state after handling an interrupt.     * @param int_num Interrupt number.     * @param index Don't know what this is.     */       void post_interrupt(int int_num, int index);    /**     * Function to zero fill an address.  Instruction is not actually     * implemented so this outputs a warning.     * @param addr Address to zero fill.     */    void zero_fill_64(Addr addr) {      static int warned = 0;      if (!warned) {	warn ("WH64 is not implemented");	warned = 1;      }    };  public:    struct Params : public BaseCPU::Params    {#if FULL_SYSTEM	AlphaITB *itb;	AlphaDTB *dtb;	FunctionalMemory *mem;#else	Process *process;#endif    };    FastCPU(Params *params);    virtual ~FastCPU();  public:    /** execution context. */    ExecContext *xc;    /** Switch out the current process. */    void switchOut(Sampler *sampler);    /**     * Take over a process from another CPU.  Used for checkpointing.     * @param oldCPU The old CPU whose contexts are being taken over.     */    void takeOverFrom(BaseCPU *oldCPU);    /** Converts a virtual address to a physical address.     *  @param addr Virtual address to be translated.     */#if FULL_SYSTEM    Addr dbg_vtophys(Addr addr);#endif    /** Current instruction. */    MachInst inst;    /** Count of simulated instructions. */    Counter numInst;    /** Refcounted pointer to the one memory request. */    MemReqPtr memReq;    /**     * Returns the status of the CPU.     * @return The status of the CPU.     */    Status status() const { return _status; }    /**     * Activates a different context, scheduled to start after a given     * delay.     * @param thread_num The thread to switch to.     * @param delay The amount of time to take to switch to the new thread.     */    virtual void activateContext(int thread_num, int delay);    /**     * Suspends the given context.     * @param thread_num The thread to suspend.     */    virtual void suspendContext(int thread_num);    /**     * Deallocates the given context.     * @param thread_num The thread to deallocate.     */    virtual void deallocateContext(int thread_num);    /**     * Halts the given context.     * @param thread_num The thread to halt.     */    virtual void haltContext(int thread_num);    /**     * Serializes the FastCPU object so that a checkpoint can be generated.     * @param os The output stream to use.     */    virtual void serialize(std::ostream &os);    /**     * Unserializes a FastCPU object so execution can restart at a     * checkpoint.     * @param cp Pointer to the checkpoint.     * @param section The name of the FastCPU being resumed from.     */    virtual void unserialize(Checkpoint *cp, const std::string &section);    /**     * Does a read of the given address.     * @param addr The address to read from.     * @param data The variable where the result of the read is placed.     * @param flags Any flags for the read operation.     * @return The fault status of the read.     */    template <class T>    Fault read(Addr addr, T &data, unsigned flags);    /*     * Does a write of the given address.     * @param data The data to write to memory.     * @param addr The address to write to.     * @param res A pointer to the result of the memory access.  Used for     * store conditional.     * @return The fault status of the write.     */    template <class T>    Fault write(T data, Addr addr, unsigned flags,			uint64_t *res);    // These functions are only used in CPU models that split    // effective address computation from the actual memory access.    void setEA(Addr EA) { panic("FastCPU::setEA() not implemented\n"); }    Addr getEA() 	{ panic("FastCPU::getEA() not implemented\n"); }    void prefetch(Addr addr, unsigned flags)    {	// need to do this...    }    void writeHint(Addr addr, int size, unsigned flags)    {	// need to do this...    }    Fault copySrcTranslate(Addr src);    Fault copy(Addr dest);    // The register accessor methods provide the index of the    // instruction's operand (e.g., 0 or 1), not the architectural    // register index, to simplify the implementation of register    // renaming.  We find the architectural register index by indexing    // into the instruction's own operand index table.  Note that a    // raw pointer to the StaticInst is provided instead of a    // ref-counted StaticInstPtr to reduce overhead.  This is fine as    // long as these methods don't copy the pointer into any long-term    // storage (which is pretty hard to imagine they would have reason    // to do).    uint64_t readIntReg(const StaticInst<TheISA> *si, int idx)    {	return xc->readIntReg(si->srcRegIdx(idx));    }    float readFloatRegSingle(const StaticInst<TheISA> *si, int idx)    {	int reg_idx = si->srcRegIdx(idx) - TheISA::FP_Base_DepTag;	return xc->readFloatRegSingle(reg_idx);    }    double readFloatRegDouble(const StaticInst<TheISA> *si, int idx)    {	int reg_idx = si->srcRegIdx(idx) - TheISA::FP_Base_DepTag;	return xc->readFloatRegDouble(reg_idx);    }    uint64_t readFloatRegInt(const StaticInst<TheISA> *si, int idx)    {	int reg_idx = si->srcRegIdx(idx) - TheISA::FP_Base_DepTag;	return xc->readFloatRegInt(reg_idx);    }    void setIntReg(const StaticInst<TheISA> *si, int idx, uint64_t val)    {	xc->setIntReg(si->destRegIdx(idx), val);    }    void setFloatRegSingle(const StaticInst<TheISA> *si, int idx, float val)    {	int reg_idx = si->destRegIdx(idx) - TheISA::FP_Base_DepTag;	xc->setFloatRegSingle(reg_idx, val);    }    void setFloatRegDouble(const StaticInst<TheISA> *si, int idx, double val)    {	int reg_idx = si->destRegIdx(idx) - TheISA::FP_Base_DepTag;	xc->setFloatRegDouble(reg_idx, val);    }    void setFloatRegInt(const StaticInst<TheISA> *si, int idx, uint64_t val)    {	int reg_idx = si->destRegIdx(idx) - TheISA::FP_Base_DepTag;	xc->setFloatRegInt(reg_idx, val);    }    uint64_t readPC() { return xc->readPC(); }    void setNextPC(uint64_t val) { return xc->setNextPC(val); }    uint64_t readUniq() { return xc->readUniq(); }    void setUniq(uint64_t val) { return xc->setUniq(val); }    uint64_t readFpcr() { return xc->readFpcr(); }    void setFpcr(uint64_t val) { return xc->setFpcr(val); }#if FULL_SYSTEM    uint64_t readIpr(int idx, Fault &fault)     { return xc->readIpr(idx, fault); }    Fault setIpr(int idx, uint64_t val)     { return xc->setIpr(idx, val); }    uint64_t *getIprPtr()    { return xc->regs.ipr; }    Fault hwrei() { return xc->hwrei(); }    int readIntrFlag() { return xc->readIntrFlag(); }    void setIntrFlag(int val) { xc->setIntrFlag(val); }    bool inPalMode() { return xc->inPalMode(); }    void trap(Fault fault) { return xc->trap(fault); }    bool simPalCheck(int palFunc) { return xc->simPalCheck(palFunc); }#else    void syscall() { xc->syscall(); }#endif    bool misspeculating() { return xc->misspeculating(); }    ExecContext *xcBase() { return xc; }};#endif // __FAST_CPU_HH__

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
男男视频亚洲欧美| 精品国产99国产精品| 中文字幕在线不卡| 成人性视频免费网站| 国产日韩欧美不卡在线| 国产精品乡下勾搭老头1| 2023国产精品自拍| 国产福利91精品一区| 久久久久久久久久久久久夜| 国产尤物一区二区在线| 中文字幕欧美国产| 成人丝袜高跟foot| 日韩理论片在线| 欧美日韩久久不卡| 免费在线观看一区二区三区| 日韩精品自拍偷拍| 不卡电影免费在线播放一区| 国产精品毛片大码女人| 国产一区二区不卡在线| 国产精品免费人成网站| 99riav久久精品riav| 国产精品高清亚洲| 在线综合亚洲欧美在线视频| 久久精品久久久精品美女| 日韩女优av电影| 不卡一二三区首页| 亚洲va欧美va人人爽午夜| 精品久久久久久久一区二区蜜臀| 国产精品综合久久| 日韩美女视频一区| 欧美大度的电影原声| 国产激情一区二区三区| 综合欧美一区二区三区| 99re6这里只有精品视频在线观看| 日韩精品亚洲专区| 国产午夜亚洲精品午夜鲁丝片| av一区二区三区在线| 婷婷中文字幕一区三区| 国产日韩欧美高清| 欧美日韩一区在线观看| 精品一区二区三区免费播放| 亚洲人成伊人成综合网小说| 精品国产一区二区在线观看| 久久se精品一区精品二区| 最好看的中文字幕久久| 91精品国产高清一区二区三区| 国产成人免费高清| 亚洲6080在线| 亚洲乱码精品一二三四区日韩在线| 91精品在线免费观看| 日韩欧美一级在线播放| 欧美伊人久久久久久久久影院| 国产xxx精品视频大全| 亚洲国产欧美日韩另类综合 | 国产传媒一区在线| 亚洲国产成人av网| 国产欧美视频一区二区| 欧美在线制服丝袜| 成人夜色视频网站在线观看| 老司机午夜精品| 日日摸夜夜添夜夜添国产精品| 亚洲国产精品成人久久综合一区| 日韩一区二区中文字幕| 91香蕉视频污在线| 国产夫妻精品视频| 麻豆久久一区二区| 亚洲一区二区在线视频| 精品久久久久久综合日本欧美| 在线观看视频91| 成人自拍视频在线| 亚洲国产成人av好男人在线观看| 欧美国产日本韩| 精品国产91久久久久久久妲己| 日韩午夜三级在线| 欧美精品日韩综合在线| 色偷偷久久一区二区三区| 国产成人在线影院 | 欧美va天堂va视频va在线| 97国产一区二区| 96av麻豆蜜桃一区二区| 国产福利一区在线| 精品亚洲国产成人av制服丝袜 | 日韩电影在线看| 欧美a级一区二区| 天堂精品中文字幕在线| 亚洲精品高清在线观看| 亚洲精品大片www| 亚洲日本青草视频在线怡红院| 欧美一级高清片| 2023国产精品| 国产日韩精品一区| 亚洲欧美日韩国产手机在线 | eeuss鲁片一区二区三区| 国产999精品久久久久久绿帽| 国产精品91一区二区| 国产盗摄女厕一区二区三区 | 成人性色生活片| 成熟亚洲日本毛茸茸凸凹| 成人一级视频在线观看| 色婷婷av一区| 精品婷婷伊人一区三区三| 欧美写真视频网站| 欧美刺激脚交jootjob| 精品剧情v国产在线观看在线| 555夜色666亚洲国产免| 久久你懂得1024| 国产精品网站一区| 国产精品福利一区二区| 亚洲人成精品久久久久久 | 欧美精品123区| 欧美一区二区黄| 欧美高清在线一区二区| 中文字幕欧美一区| 亚洲v中文字幕| 国产91精品入口| 91久久精品国产91性色tv| 精品国产精品网麻豆系列| 国产欧美日本一区视频| 亚洲天堂中文字幕| 老司机精品视频一区二区三区| 国产在线乱码一区二区三区| youjizz久久| 欧美一区二区三区免费在线看| 国产亚洲欧美中文| 亚洲国产日韩精品| 国产精品一色哟哟哟| 色美美综合视频| 久久久久久久久久电影| 国产精品家庭影院| 日韩国产欧美在线视频| 99re8在线精品视频免费播放| 5858s免费视频成人| 亚洲精品乱码久久久久久久久| 久久国产精品露脸对白| 99久久国产免费看| 国产清纯在线一区二区www| 亚洲精品一区在线观看| 精品国产3级a| 综合在线观看色| 国产一区二区三区在线观看免费| 97久久精品人人爽人人爽蜜臀| 欧美三级午夜理伦三级中视频| 精品乱人伦小说| 亚洲在线视频网站| va亚洲va日韩不卡在线观看| 欧美日本乱大交xxxxx| 久久蜜桃一区二区| 蜜臀av一区二区| 色哟哟一区二区在线观看| 精品女同一区二区| 日韩精品一二三四| 在线观看亚洲精品| 亚洲视频免费观看| 黄页网站大全一区二区| 欧美视频在线观看一区二区| 亚洲欧洲成人av每日更新| 久久99热这里只有精品| 91福利精品第一导航| 综合婷婷亚洲小说| 国产精品自拍在线| 久久久久久久久久久99999| 男男视频亚洲欧美| 欧美中文字幕一区二区三区| 自拍偷自拍亚洲精品播放| 极品瑜伽女神91| 欧美无人高清视频在线观看| 中国色在线观看另类| 国产麻豆视频精品| 久久久久国产精品免费免费搜索| 日本中文在线一区| 在线播放视频一区| 日韩精品一卡二卡三卡四卡无卡| 99re视频这里只有精品| 亚洲女人****多毛耸耸8| 成人精品鲁一区一区二区| 久久久www成人免费无遮挡大片| 韩国毛片一区二区三区| 欧美成人精品二区三区99精品| 亚洲综合图片区| 欧美日韩一级二级| 亚洲观看高清完整版在线观看| 欧洲色大大久久| 一区二区三区视频在线看| av中文一区二区三区| 亚洲你懂的在线视频| 色婷婷综合久久久| 亚洲美女免费在线| 欧美高清hd18日本| 天堂在线亚洲视频| 久久精品人人做人人综合| 国产乱人伦偷精品视频免下载| 久久影视一区二区| 99视频一区二区| 亚洲免费高清视频在线| 欧美美女一区二区三区| 五月激情综合色| 在线电影院国产精品| 黑人巨大精品欧美黑白配亚洲| 久久女同互慰一区二区三区| 国产91精品欧美|