hex_file.hh revision 5222:bb733a878f85
111348Sandreas.sandberg@arm.com/* 211470Sandreas.sandberg@arm.com * Copyright (c) 2002-2004 The Regents of The University of Michigan 311348Sandreas.sandberg@arm.com * All rights reserved. 411348Sandreas.sandberg@arm.com * 511348Sandreas.sandberg@arm.com * Redistribution and use in source and binary forms, with or without 611348Sandreas.sandberg@arm.com * modification, are permitted provided that the following conditions are 711348Sandreas.sandberg@arm.com * met: redistributions of source code must retain the above copyright 811348Sandreas.sandberg@arm.com * notice, this list of conditions and the following disclaimer; 911348Sandreas.sandberg@arm.com * redistributions in binary form must reproduce the above copyright 1011348Sandreas.sandberg@arm.com * notice, this list of conditions and the following disclaimer in the 1111348Sandreas.sandberg@arm.com * documentation and/or other materials provided with the distribution; 1211348Sandreas.sandberg@arm.com * neither the name of the copyright holders nor the names of its 1311348Sandreas.sandberg@arm.com * contributors may be used to endorse or promote products derived from 1411348Sandreas.sandberg@arm.com * this software without specific prior written permission. 1511348Sandreas.sandberg@arm.com * 1611348Sandreas.sandberg@arm.com * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 1711348Sandreas.sandberg@arm.com * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 1811348Sandreas.sandberg@arm.com * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 1911348Sandreas.sandberg@arm.com * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 2011348Sandreas.sandberg@arm.com * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 2111348Sandreas.sandberg@arm.com * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 2211348Sandreas.sandberg@arm.com * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 2311348Sandreas.sandberg@arm.com * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 2411348Sandreas.sandberg@arm.com * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 2511348Sandreas.sandberg@arm.com * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 2611348Sandreas.sandberg@arm.com * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 2711348Sandreas.sandberg@arm.com * 2811348Sandreas.sandberg@arm.com * Authors: Jaidev Patwardhan 2911348Sandreas.sandberg@arm.com */ 3011348Sandreas.sandberg@arm.com 3111348Sandreas.sandberg@arm.com#ifndef __HEX_FILE_HH__ 3211348Sandreas.sandberg@arm.com#define __HEX_FILE_HH__ 3311348Sandreas.sandberg@arm.com 3411348Sandreas.sandberg@arm.com#include <limits> 3511348Sandreas.sandberg@arm.com#include <string> 3611348Sandreas.sandberg@arm.com 3711348Sandreas.sandberg@arm.com#include "sim/host.hh" // for Addr 3811348Sandreas.sandberg@arm.com#include <fstream> 3911348Sandreas.sandberg@arm.com 4011348Sandreas.sandberg@arm.comclass Port; 4111348Sandreas.sandberg@arm.com 4211348Sandreas.sandberg@arm.comclass HexFile 4311348Sandreas.sandberg@arm.com{ 4411348Sandreas.sandberg@arm.com public: 4511348Sandreas.sandberg@arm.com 4611348Sandreas.sandberg@arm.com 4711348Sandreas.sandberg@arm.com protected: 4811348Sandreas.sandberg@arm.com const std::string filename; 4911348Sandreas.sandberg@arm.com FILE *fp; 5011348Sandreas.sandberg@arm.com 5111348Sandreas.sandberg@arm.com public: 5211348Sandreas.sandberg@arm.com virtual ~HexFile(); 5311348Sandreas.sandberg@arm.com HexFile(const std::string _filename); 5411348Sandreas.sandberg@arm.com 5511348Sandreas.sandberg@arm.com void close(); 5611348Sandreas.sandberg@arm.com 5711348Sandreas.sandberg@arm.com bool loadSections(Port *memPort, Addr addrMask = 5811348Sandreas.sandberg@arm.com std::numeric_limits<Addr>::max()); 5911348Sandreas.sandberg@arm.com 6011348Sandreas.sandberg@arm.com protected: 6111348Sandreas.sandberg@arm.com 6211348Sandreas.sandberg@arm.com typedef struct { 6311348Sandreas.sandberg@arm.com Addr MemAddr; 6411348Sandreas.sandberg@arm.com uint32_t Data; 6511348Sandreas.sandberg@arm.com } HexLine; 6611348Sandreas.sandberg@arm.com 6711348Sandreas.sandberg@arm.com Addr entry; 6811348Sandreas.sandberg@arm.com Addr globalPtr; 6911348Sandreas.sandberg@arm.com 7011348Sandreas.sandberg@arm.com public: 7111348Sandreas.sandberg@arm.com void parseLine(char *,Addr *,uint32_t *); 7211348Sandreas.sandberg@arm.com Addr entryPoint() const { return entry; } 7311348Sandreas.sandberg@arm.com Addr globalPointer() const { return globalPtr; } 7411348Sandreas.sandberg@arm.com 7511348Sandreas.sandberg@arm.com}; 7611348Sandreas.sandberg@arm.com 7711348Sandreas.sandberg@arm.com#endif // __HEX_FILE_HH__ 7811348Sandreas.sandberg@arm.com