cpu.hh (3402:db60546818d0) | cpu.hh (3781:b00795985f07) |
---|---|
1/* 2 * Copyright (c) 2004-2005 The Regents of The University of Michigan 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions are 7 * met: redistributions of source code must retain the above copyright 8 * notice, this list of conditions and the following disclaimer; --- 77 unchanged lines hidden (view full) --- 86 * FullO3CPU class, has each of the stages (fetch through commit) 87 * within it, as well as all of the time buffers between stages. The 88 * tick() function for the CPU is defined here. 89 */ 90template <class Impl> 91class FullO3CPU : public BaseO3CPU 92{ 93 public: | 1/* 2 * Copyright (c) 2004-2005 The Regents of The University of Michigan 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions are 7 * met: redistributions of source code must retain the above copyright 8 * notice, this list of conditions and the following disclaimer; --- 77 unchanged lines hidden (view full) --- 86 * FullO3CPU class, has each of the stages (fetch through commit) 87 * within it, as well as all of the time buffers between stages. The 88 * tick() function for the CPU is defined here. 89 */ 90template <class Impl> 91class FullO3CPU : public BaseO3CPU 92{ 93 public: |
94 typedef TheISA::FloatReg FloatReg; 95 typedef TheISA::FloatRegBits FloatRegBits; 96 | |
97 // Typedefs from the Impl here. 98 typedef typename Impl::CPUPol CPUPolicy; 99 typedef typename Impl::Params Params; 100 typedef typename Impl::DynInstPtr DynInstPtr; 101 102 typedef O3ThreadState<Impl> Thread; 103 104 typedef typename std::list<DynInstPtr>::iterator ListIt; --- 4 unchanged lines hidden (view full) --- 109 enum Status { 110 Running, 111 Idle, 112 Halted, 113 Blocked, 114 SwitchedOut 115 }; 116 | 94 // Typedefs from the Impl here. 95 typedef typename Impl::CPUPol CPUPolicy; 96 typedef typename Impl::Params Params; 97 typedef typename Impl::DynInstPtr DynInstPtr; 98 99 typedef O3ThreadState<Impl> Thread; 100 101 typedef typename std::list<DynInstPtr>::iterator ListIt; --- 4 unchanged lines hidden (view full) --- 106 enum Status { 107 Running, 108 Idle, 109 Halted, 110 Blocked, 111 SwitchedOut 112 }; 113 |
114#if FULL_SYSTEM 115 TheISA::ITB * itb; 116 TheISA::DTB * dtb; 117#endif 118 |
|
117 /** Overall CPU status. */ 118 Status _status; 119 120 /** Per-thread status in CPU, used for SMT. */ 121 Status _threadStatus[Impl::MaxThreads]; 122 123 private: 124 class TickEvent : public Event --- 252 unchanged lines hidden (view full) --- 377 int getDataAsid(unsigned tid) 378 { return thread[tid]->getDataAsid(); } 379 380#endif 381 382 /** Register accessors. Index refers to the physical register index. */ 383 uint64_t readIntReg(int reg_idx); 384 | 119 /** Overall CPU status. */ 120 Status _status; 121 122 /** Per-thread status in CPU, used for SMT. */ 123 Status _threadStatus[Impl::MaxThreads]; 124 125 private: 126 class TickEvent : public Event --- 252 unchanged lines hidden (view full) --- 379 int getDataAsid(unsigned tid) 380 { return thread[tid]->getDataAsid(); } 381 382#endif 383 384 /** Register accessors. Index refers to the physical register index. */ 385 uint64_t readIntReg(int reg_idx); 386 |
385 FloatReg readFloatReg(int reg_idx); | 387 TheISA::FloatReg readFloatReg(int reg_idx); |
386 | 388 |
387 FloatReg readFloatReg(int reg_idx, int width); | 389 TheISA::FloatReg readFloatReg(int reg_idx, int width); |
388 | 390 |
389 FloatRegBits readFloatRegBits(int reg_idx); | 391 TheISA::FloatRegBits readFloatRegBits(int reg_idx); |
390 | 392 |
391 FloatRegBits readFloatRegBits(int reg_idx, int width); | 393 TheISA::FloatRegBits readFloatRegBits(int reg_idx, int width); |
392 393 void setIntReg(int reg_idx, uint64_t val); 394 | 394 395 void setIntReg(int reg_idx, uint64_t val); 396 |
395 void setFloatReg(int reg_idx, FloatReg val); | 397 void setFloatReg(int reg_idx, TheISA::FloatReg val); |
396 | 398 |
397 void setFloatReg(int reg_idx, FloatReg val, int width); | 399 void setFloatReg(int reg_idx, TheISA::FloatReg val, int width); |
398 | 400 |
399 void setFloatRegBits(int reg_idx, FloatRegBits val); | 401 void setFloatRegBits(int reg_idx, TheISA::FloatRegBits val); |
400 | 402 |
401 void setFloatRegBits(int reg_idx, FloatRegBits val, int width); | 403 void setFloatRegBits(int reg_idx, TheISA::FloatRegBits val, int width); |
402 403 uint64_t readArchIntReg(int reg_idx, unsigned tid); 404 405 float readArchFloatRegSingle(int reg_idx, unsigned tid); 406 407 double readArchFloatRegDouble(int reg_idx, unsigned tid); 408 409 uint64_t readArchFloatRegInt(int reg_idx, unsigned tid); --- 265 unchanged lines hidden --- | 404 405 uint64_t readArchIntReg(int reg_idx, unsigned tid); 406 407 float readArchFloatRegSingle(int reg_idx, unsigned tid); 408 409 double readArchFloatRegDouble(int reg_idx, unsigned tid); 410 411 uint64_t readArchFloatRegInt(int reg_idx, unsigned tid); --- 265 unchanged lines hidden --- |