Get rid of a file that should have never been committed.
--HG-- extra : convert_revision : c0e678ce0ce0301bb3afff8bef4fcab7aef3c6fe
This commit is contained in:
parent
e35c4f2f08
commit
ce26c3ccec
1 changed files with 0 additions and 162 deletions
|
@ -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);
|
||||
}
|
Loading…
Reference in a new issue