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

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

?? spec_memory.hh

?? linux下基于c++的處理器仿真平臺。具有處理器流水線
?? HH
字號:
/* * Copyright (c) 2000, 2001, 2002, 2003, 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. */#ifndef __ENCUMBERED_CPU_FULL_SPEC_MEMORY_HH__#define __ENCUMBERED_CPU_FULL_SPEC_MEMORY_HH__#include <cassert>#include <deque>#include "base/hashmap.hh"#include "mem/functional/functional.hh"struct HashAddr {    size_t operator()(Addr addr) const {	return (addr >> 24) ^ (addr >> 16) ^ (addr >> 8) ^	    (addr & (sizeof(Addr)-1));    }};class SpeculativeMemory : public FunctionalMemory{  public:    typedef uint64_t Block;  protected:    typedef std::deque<Block> data_queue;    typedef m5::hash_map<Addr, data_queue, HashAddr> htable_t;    typedef htable_t::iterator hash_iter_t;    typedef htable_t::const_iterator hash_citer_t;    htable_t table;    FunctionalMemory *child;    static Addr block_addr(Addr addr)    {	return addr & ~((Addr)(sizeof(Block) - 1));    }    bool read_block(Addr addr, Block &data);    bool write_block(Addr addr, Block data);    bool erase_block(Addr addr);    Fault writeback_block(MemReqPtr &req);  protected:    // Read/Write arbitrary amounts of data to simulated memory space    virtual void prot_read(Addr addr, uint8_t *p, int size);    virtual void prot_write(Addr addr, const uint8_t *p, int size);    virtual void prot_memset(Addr addr, uint8_t val, int size);  public:    SpeculativeMemory(const std::string &n, FunctionalMemory *c);    virtual ~SpeculativeMemory();  public:    void writeback();    void clear();    virtual Fault read(MemReqPtr &req, uint8_t *data);    virtual Fault write(MemReqPtr &req, const uint8_t *data);    virtual Fault read(MemReqPtr &req, uint8_t &data);    virtual Fault read(MemReqPtr &req, uint16_t &data);    virtual Fault read(MemReqPtr &req, uint32_t &data);    virtual Fault read(MemReqPtr &req, uint64_t &data);    virtual Fault write(MemReqPtr &req, uint8_t data);    virtual Fault write(MemReqPtr &req, uint16_t data);    virtual Fault write(MemReqPtr &req, uint32_t data);    virtual Fault write(MemReqPtr &req, uint64_t data);    bool erase(Addr addr);};inline boolSpeculativeMemory::erase(Addr addr){    // Remove the oldest entry from speculative memory for this    // address.    addr = block_addr(addr);    mem_block_test(addr);    hash_iter_t iter = table.find(addr);    if (iter == table.end())	return false;    assert(!(iter->second.empty()));    iter->second.pop_back();    if (iter->second.empty()) {	table.erase(iter);    }    return true;}inline voidSpeculativeMemory::clear(){    table.clear();}//// Ideally these would be template functions, but you can't make// template functions virtual.//#define SPEC_MEM_READ(TYPE)				\inline Fault						\SpeculativeMemory::read(MemReqPtr &req, TYPE &data)	\{							\    int offset = req->vaddr & (sizeof(Block) - 1);	\    if (offset & (sizeof(TYPE) - 1))			\	return Alignment_Fault;				\							\    Addr baddr = block_addr(req->vaddr);		\							\    Block block;					\    if (!read_block(baddr, block))			\	return child->read(req, data);			\							\    uint8_t *b = (uint8_t *)&block;			\    data = *(TYPE *)(b + offset);			\							\    return No_Fault;					\}SPEC_MEM_READ(uint8_t)SPEC_MEM_READ(uint16_t)SPEC_MEM_READ(uint32_t)// Specialize the quadword version for efficiencyinline FaultSpeculativeMemory::read(MemReqPtr &req, uint64_t &data){    if (req->vaddr & (sizeof(Block) - 1))	return Alignment_Fault;    if (!read_block(req->vaddr, data))	return child->read(req, data);    return No_Fault;}#define SPEC_MEM_WRITE(TYPE)				\inline Fault						\SpeculativeMemory::write(MemReqPtr &req, TYPE data)	\{							\    int offset = req->vaddr & (sizeof(Block) - 1);	\    if (offset & (sizeof(TYPE) - 1))			\	return Alignment_Fault;				\							\    Addr baddr = block_addr(req->vaddr);		\							\    Block block;					\    if (!read_block(baddr, block)) {			\	Fault fault;					\	MemReqPtr new_req = new MemReq();		\	new_req->vaddr = baddr;				\	new_req->paddr = block_addr(req->paddr);	\        new_req->size = sizeof(Block);			\        fault = child->read(new_req, block);		\        if (fault != No_Fault)				\	    return fault;				\    }							\							\    uint8_t *b = (uint8_t *)&block;			\    *(TYPE *)(b + offset) = data;			\    if (!write_block(baddr, block))			\	return Machine_Check_Fault;			\							\    return No_Fault;					\}SPEC_MEM_WRITE(uint8_t)SPEC_MEM_WRITE(uint16_t)SPEC_MEM_WRITE(uint32_t)// Specialize the quadword version for efficiencyinline FaultSpeculativeMemory::write(MemReqPtr &req, uint64_t data){    if (req->vaddr & (sizeof(Block) - 1))	return Alignment_Fault;    if (!write_block(req->vaddr, data))	return Machine_Check_Fault;    return No_Fault;}#undef SPEC_MEM_READ//(TYPE)#undef SPEC_MEM_WRITE//(TYPE)#endif // __ENCUMBERED_CPU_FULL_SPEC_MEMORY_HH__

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成a人亚洲| 国产精品中文字幕一区二区三区| 99精品视频中文字幕| 国产精品二区一区二区aⅴ污介绍| 国产精品一区二区不卡| 欧美国产激情二区三区 | 精品免费视频.| 久久99精品网久久| 欧美国产精品久久| 色94色欧美sute亚洲线路二| 亚洲成人黄色影院| 日韩精品中文字幕一区二区三区| 国产在线不卡一卡二卡三卡四卡| 国产婷婷色一区二区三区四区| 国产成a人亚洲精品| 亚洲综合男人的天堂| 91麻豆精品国产91| 国产成人午夜精品5599| 亚洲欧美日韩在线| 91麻豆精品国产| 国产99一区视频免费| 亚洲另类在线一区| 日韩一级免费一区| av不卡在线观看| 欧美bbbbb| 成人欧美一区二区三区黑人麻豆| 欧美日韩高清一区二区三区| 国产乱子轮精品视频| 亚洲黄色在线视频| 精品国产乱子伦一区| 一本久久a久久精品亚洲| 日本成人在线电影网| 国产精品女人毛片| 911国产精品| 99热国产精品| 久久66热偷产精品| 夜夜亚洲天天久久| 久久久久国产精品厨房| 欧美午夜寂寞影院| 高清视频一区二区| 蜜桃精品在线观看| 一区二区在线免费观看| 久久午夜色播影院免费高清| 欧美亚洲精品一区| 9久草视频在线视频精品| 久久成人18免费观看| 亚洲午夜羞羞片| 欧美激情在线观看视频免费| 91精品国产综合久久国产大片| 不卡电影一区二区三区| 国产一区二区在线观看视频| 亚洲va韩国va欧美va| 综合色天天鬼久久鬼色| 精品电影一区二区| 51精品久久久久久久蜜臀| 色综合久久综合| 国产盗摄精品一区二区三区在线 | 国产成人精品免费网站| 欧美aaa在线| 亚洲成人自拍偷拍| 亚洲女厕所小便bbb| 国产精品超碰97尤物18| 国产视频一区不卡| 久久亚洲一级片| 日韩精品在线看片z| 制服丝袜av成人在线看| 欧美一a一片一级一片| 一本久道中文字幕精品亚洲嫩| 风间由美一区二区三区在线观看 | 国产精品久久久久久久久免费相片 | 99久久久精品| 成人性色生活片| 国产成a人亚洲精| 国产在线播精品第三| 久久99精品久久久久婷婷| 免费成人你懂的| 麻豆精品视频在线| 伦理电影国产精品| 狠狠色综合播放一区二区| 国产中文字幕一区| 国产精品99精品久久免费| 国产米奇在线777精品观看| 国产一区激情在线| 国产夫妻精品视频| 成人动漫视频在线| 99re这里只有精品6| 一本色道久久综合精品竹菊| 在线观看一区日韩| 欧美日韩色综合| 91精品欧美福利在线观看| 日韩精品在线网站| 国产偷国产偷亚洲高清人白洁| 中文字幕欧美激情| 亚洲视频狠狠干| 亚洲国产精品欧美一二99| 婷婷亚洲久悠悠色悠在线播放| 亚洲成人综合网站| 久色婷婷小香蕉久久| 国产成人av福利| 色综合久久久久综合| 欧美精品久久99久久在免费线 | 国产精品超碰97尤物18| 最新不卡av在线| 无吗不卡中文字幕| 狠狠色综合播放一区二区| 成人精品鲁一区一区二区| 欧美综合久久久| 欧美大片日本大片免费观看| 日本一区二区综合亚洲| 一区二区三区日韩| 蜜桃在线一区二区三区| 成人免费黄色大片| 欧美日韩一区二区三区免费看| 欧美成人一区二区三区片免费 | 成人小视频免费观看| 在线观看一区不卡| 精品国精品自拍自在线| 亚洲欧洲精品一区二区三区不卡 | 日日噜噜夜夜狠狠视频欧美人| 老司机免费视频一区二区| 成人性生交大片免费看在线播放| 欧美三电影在线| 久久久久综合网| 亚洲国产美国国产综合一区二区| 国产一区二区在线观看免费| 欧美性色黄大片手机版| 久久久久久久综合狠狠综合| 一级精品视频在线观看宜春院 | 丁香网亚洲国际| 欧美精三区欧美精三区| 国产精品看片你懂得| 日韩国产一二三区| 91麻豆成人久久精品二区三区| 日韩精品一区二区三区swag| 亚洲激情男女视频| 国产乱妇无码大片在线观看| 欧美怡红院视频| 中文字幕亚洲成人| 精品一区二区三区免费毛片爱 | 亚洲福利视频一区| 成人app软件下载大全免费| 欧美tk丨vk视频| 亚洲午夜一二三区视频| 北条麻妃一区二区三区| 欧美mv日韩mv国产网站app| 亚洲韩国精品一区| av成人免费在线观看| 国产欧美一区二区精品久导航| 日韩av电影免费观看高清完整版在线观看 | 国产精品三级电影| 国产中文字幕一区| 日韩欧美国产午夜精品| 午夜a成v人精品| 色欧美88888久久久久久影院| 国产欧美日韩视频一区二区 | 亚洲高清视频的网址| 99久久伊人网影院| 国产欧美日产一区| 国产真实乱偷精品视频免| 日韩欧美国产一区在线观看| 爽好多水快深点欧美视频| 欧美性一级生活| 亚洲宅男天堂在线观看无病毒 | 在线视频中文字幕一区二区| 国产精品久久久久久久久搜平片| 风间由美性色一区二区三区| 久久精品视频一区二区| 韩国三级电影一区二区| 久久久影视传媒| 国产精品一区在线观看乱码 | 成人午夜电影网站| 中文字幕乱码久久午夜不卡| 粉嫩aⅴ一区二区三区四区五区| 久久美女高清视频| 成人午夜电影久久影院| 亚洲少妇屁股交4| 欧美中文一区二区三区| 天堂久久久久va久久久久| 678五月天丁香亚洲综合网| 偷偷要91色婷婷| 日韩三级伦理片妻子的秘密按摩| 日韩成人一区二区| 精品剧情v国产在线观看在线| 国产呦萝稀缺另类资源| 中文字幕一区二区视频| 91福利国产精品| 日韩精品福利网| 久久免费电影网| 91香蕉国产在线观看软件| 亚洲午夜精品久久久久久久久| 欧美日韩五月天| 国产一区在线不卡| 国产精品福利一区二区三区| 欧美日韩综合不卡| 美女视频黄 久久| 国产精品视频九色porn| 欧美电影影音先锋| 国产毛片精品一区| 亚洲精品成人悠悠色影视| 91精品国产一区二区|