Get rid of a file that should have never been committed.

--HG--
extra : convert_revision : c0e678ce0ce0301bb3afff8bef4fcab7aef3c6fe
This commit is contained in:
Gabe Black 2007-11-20 22:51:03 -08:00
parent e35c4f2f08
commit ce26c3ccec

View file

@ -1,162 +0,0 @@
/*
* Copyright (c) 2002, 2003, 2004
* The Regents of The University of Michigan
* All Rights Reserved
*
* This code is part of the M5 simulator.
*
* 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.
*
* Authors: Jaidev Patwardhan
*
*/
#include <list>
#include <string>
#include <sys/types.h>
#include <sys/mman.h>
#include <fcntl.h>
#include <stdio.h>
#include <unistd.h>
#include "base/cprintf.hh"
#include "base/loader/hex_file.hh"
#include "base/loader/symtab.hh"
#include "mem/translating_port.hh"
using namespace std;
/* Load a Hex File into memory.
Currently only used with MIPS BARE_IRON mode.
A hex file consists of [Address Data] tuples that get directly loaded into
physical memory. The address specified is a word address (i.e., to get the byte address, shift left by 2)
The data is a full 32-bit hex value.
*/
HexFile::HexFile(const string _filename)
: filename(_filename)
{
fp = fopen(filename.c_str(),"r");
if(fp == NULL)
{
fatal("Unable to open %s\n",filename.c_str());
}
}
HexFile::~HexFile()
{
}
bool
HexFile::loadSections(Port *memPort, Addr addrMask)
{
char Line[64];
Addr MemAddr;
uint32_t Data;
while(!feof(fp))
{
fgets(Line,64,fp);
parseLine(Line,&MemAddr,&Data);
// printf("Hex:%u\n",Data);
if(MemAddr != 0)
{
// Now, write to memory
memPort->writeBlob(MemAddr<<2,(uint8_t *)&Data,sizeof(Data));
}
}
return true;
}
void HexFile::parseLine(char *Str,Addr *A, uint32_t *D)
{
int i=0;
bool Flag = false;
*A = 0;
*D = 0;
int Digit = 0;
unsigned Number = 0;
/* Skip white spaces */
while(Str[i] != '\0' && Str[i]==' ')
i++;
/* Ok, we're at some character...process things */
while(Str[i] != '\0')
{
if(Str[i]>='0' && Str[i]<='9')
{
Digit=Str[i]-'0';
}
else if(Str[i]>='a' && Str[i]<='f')
{
Digit=Str[i]-'a'+10;
}
else if(Str[i]>='A' && Str[i]<='F')
{
Digit=Str[i]-'A'+10;
}
else if(Str[i] == ' ' || Str[i]=='\n')
{
if(Number == 0)
return;
if(Flag == false)
{
*A = Number;
Number = 0;
Flag = true;
}
else
{
*D = Number;
return;
}
}
else
{
// Ok, we've encountered a non-hex character, cannot be a valid line, skip and return 0's
*A = 0;
*D = 0;
return;
}
Number<<=4;
Number+=Digit;
i++;
}
if(Flag != true)
{
*A = 0;
*D = 0;
}
else
*D = Number;
}
void
HexFile::close()
{
fclose(fp);
}