process_impl.hh revision 8706
14434Ssaidi@eecs.umich.edu/* 24434Ssaidi@eecs.umich.edu * Copyright (c) 2001-2005 The Regents of The University of Michigan 34434Ssaidi@eecs.umich.edu * All rights reserved. 44434Ssaidi@eecs.umich.edu * 54434Ssaidi@eecs.umich.edu * Redistribution and use in source and binary forms, with or without 64434Ssaidi@eecs.umich.edu * modification, are permitted provided that the following conditions are 74434Ssaidi@eecs.umich.edu * met: redistributions of source code must retain the above copyright 84434Ssaidi@eecs.umich.edu * notice, this list of conditions and the following disclaimer; 94434Ssaidi@eecs.umich.edu * redistributions in binary form must reproduce the above copyright 104434Ssaidi@eecs.umich.edu * notice, this list of conditions and the following disclaimer in the 114434Ssaidi@eecs.umich.edu * documentation and/or other materials provided with the distribution; 124434Ssaidi@eecs.umich.edu * neither the name of the copyright holders nor the names of its 134434Ssaidi@eecs.umich.edu * contributors may be used to endorse or promote products derived from 144434Ssaidi@eecs.umich.edu * this software without specific prior written permission. 154434Ssaidi@eecs.umich.edu * 164434Ssaidi@eecs.umich.edu * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 174434Ssaidi@eecs.umich.edu * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 184434Ssaidi@eecs.umich.edu * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 194434Ssaidi@eecs.umich.edu * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 204434Ssaidi@eecs.umich.edu * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 214434Ssaidi@eecs.umich.edu * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 224434Ssaidi@eecs.umich.edu * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 234434Ssaidi@eecs.umich.edu * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 244434Ssaidi@eecs.umich.edu * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 254434Ssaidi@eecs.umich.edu * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 264434Ssaidi@eecs.umich.edu * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 274434Ssaidi@eecs.umich.edu * 284434Ssaidi@eecs.umich.edu * Authors: Nathan Binkert 294434Ssaidi@eecs.umich.edu * Steve Reinhardt 304434Ssaidi@eecs.umich.edu */ 314434Ssaidi@eecs.umich.edu 324434Ssaidi@eecs.umich.edu#ifndef __SIM_PROCESS_IMPL_HH__ 334434Ssaidi@eecs.umich.edu#define __SIM_PROCESS_IMPL_HH__ 344434Ssaidi@eecs.umich.edu 354434Ssaidi@eecs.umich.edu// 364434Ssaidi@eecs.umich.edu// The purpose of this code is to fake the loader & syscall mechanism 374434Ssaidi@eecs.umich.edu// when there's no OS: thus there's no reason to use it in FULL_SYSTEM 384434Ssaidi@eecs.umich.edu// mode when we do have an OS. 394434Ssaidi@eecs.umich.edu// 404434Ssaidi@eecs.umich.edu#include "config/full_system.hh" 414434Ssaidi@eecs.umich.edu 424434Ssaidi@eecs.umich.edu#if !FULL_SYSTEM 434434Ssaidi@eecs.umich.edu 444434Ssaidi@eecs.umich.edu#include <string> 454434Ssaidi@eecs.umich.edu#include <vector> 464434Ssaidi@eecs.umich.edu 478706Sandreas.hansson@arm.com#include "mem/se_translating_port_proxy.hh" 487678Sgblack@eecs.umich.edu#include "sim/byteswap.hh" 494434Ssaidi@eecs.umich.edu 504434Ssaidi@eecs.umich.edu//This needs to be templated for cases where 32 bit pointers are needed. 514434Ssaidi@eecs.umich.edutemplate<class AddrType> 524434Ssaidi@eecs.umich.eduvoid 534434Ssaidi@eecs.umich.educopyStringArray(std::vector<std::string> &strings, 544434Ssaidi@eecs.umich.edu AddrType array_ptr, AddrType data_ptr, 558706Sandreas.hansson@arm.com SETranslatingPortProxy* memProxy) 564434Ssaidi@eecs.umich.edu{ 574434Ssaidi@eecs.umich.edu AddrType data_ptr_swap; 586227Snate@binkert.org for (std::vector<std::string>::size_type i = 0; i < strings.size(); ++i) { 594434Ssaidi@eecs.umich.edu data_ptr_swap = htog(data_ptr); 608706Sandreas.hansson@arm.com memProxy->writeBlob(array_ptr, (uint8_t*)&data_ptr_swap, 614434Ssaidi@eecs.umich.edu sizeof(AddrType)); 628706Sandreas.hansson@arm.com memProxy->writeString(data_ptr, strings[i].c_str()); 634434Ssaidi@eecs.umich.edu array_ptr += sizeof(AddrType); 644434Ssaidi@eecs.umich.edu data_ptr += strings[i].size() + 1; 654434Ssaidi@eecs.umich.edu } 664434Ssaidi@eecs.umich.edu // add NULL terminator 674434Ssaidi@eecs.umich.edu data_ptr = 0; 684434Ssaidi@eecs.umich.edu 698706Sandreas.hansson@arm.com memProxy->writeBlob(array_ptr, (uint8_t*)&data_ptr, sizeof(AddrType)); 704434Ssaidi@eecs.umich.edu} 714434Ssaidi@eecs.umich.edu 724434Ssaidi@eecs.umich.edu 734434Ssaidi@eecs.umich.edu#endif // !FULL_SYSTEM 744434Ssaidi@eecs.umich.edu 754434Ssaidi@eecs.umich.edu#endif 76