OpenCores
URL https://opencores.org/ocsvn/aemb/aemb/trunk

Subversion Repositories aemb

[/] [aemb/] [trunk/] [sw/] [iss/] [cpu/] [RegisterFile.cc] - Rev 200

Go to most recent revision | Compare with Previous | Blame | View Log

/*!  
  AEMB INSTRUCTION SET SIMULATOR 
  Copyright (C) 2009 Shawn Tan <shawn.tan@aeste.net>
 
  This program is free software: you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
  the Free Software Foundation, either version 3 of the License, or
  (at your option) any later version.
 
  This program is distributed in the hope that it will be useful, but
  WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  General Public License for more details.
 
  You should have received a copy of the GNU General Public License
  along with this program.  If not, see
  <http://www.gnu.org/licenses/>.
*/
 
#include <assert.h>
 
#include "RegisterFile.hh"
 
using namespace std;
 
namespace aemb {
 
void RegisterFile::setRegister(const int gpr, const int data)
{
	regfile.at(gpr) = data;
}
 
int RegisterFile::getRegister(const int gpr)
{
  	return (gpr > 0) ? regfile.at(gpr) : 0;
}
 
int RegisterFile::getSpecial(const int sfr)
{
	int tmp;
	switch (sfr) {
		case SFR_MSR:
			tmp = rsfr;
		break;
		default: // invalid sfr
			assert(0);
		break;
	}
	return tmp;
}
 
void RegisterFile::setSpecial(const int sfr, const int imm32)
{
	switch (sfr) {
		case SFR_MSR:
			rsfr = imm32;
		break;
		default: // invalid sfr
			assert(0);
		break;
	}
}
 
void RegisterFile::reset()
{
	regfile.clear();
	for (int i=0; i<32; ++i) {
    	regfile.push_back(0);
  	}	
}
 
RegisterFile::RegisterFile()
{
}
 
RegisterFile::~RegisterFile()
{ 
}
 
}

Go to most recent revision | Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.