system.cc (7580:6f77f379a594) | system.cc (7723:ee4ac00d0774) |
---|---|
1/* 2 * Copyright (c) 2002-2005 The Regents of The University of Michigan 3 * Copyright (c) 2007 MIPS Technologies, Inc. 4 * All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions are 8 * met: redistributions of source code must retain the above copyright --- 36 unchanged lines hidden (view full) --- 45using namespace LittleEndianGuest; 46 47MipsSystem::MipsSystem(Params *p) : System(p) 48{ 49 50#if FULL_SYSTEM 51 if (p->bare_iron == true) { 52 hexFile = new HexFile(params()->hex_file_name); | 1/* 2 * Copyright (c) 2002-2005 The Regents of The University of Michigan 3 * Copyright (c) 2007 MIPS Technologies, Inc. 4 * All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions are 8 * met: redistributions of source code must retain the above copyright --- 36 unchanged lines hidden (view full) --- 45using namespace LittleEndianGuest; 46 47MipsSystem::MipsSystem(Params *p) : System(p) 48{ 49 50#if FULL_SYSTEM 51 if (p->bare_iron == true) { 52 hexFile = new HexFile(params()->hex_file_name); |
53 if (!hexFile->loadSections(&functionalPort)) | 53 if (!hexFile->loadSections(functionalPort)) |
54 panic("Could not load hex file\n"); 55 } 56 57 Addr addr = 0; 58 59 consoleSymtab = new SymbolTable; 60 61 62 /** 63 * Load the console code into memory 64 */ 65 // Load Console Code 66 console = createObjectFile(params()->console); 67 68 warn("console code is located at: %s\n", params()->console); 69 70 if (console == NULL) 71 fatal("Could not load console file %s", params()->console); 72 //Load program sections into memory | 54 panic("Could not load hex file\n"); 55 } 56 57 Addr addr = 0; 58 59 consoleSymtab = new SymbolTable; 60 61 62 /** 63 * Load the console code into memory 64 */ 65 // Load Console Code 66 console = createObjectFile(params()->console); 67 68 warn("console code is located at: %s\n", params()->console); 69 70 if (console == NULL) 71 fatal("Could not load console file %s", params()->console); 72 //Load program sections into memory |
73 console->loadSections(&functionalPort, loadAddrMask); | 73 console->loadSections(functionalPort, loadAddrMask); |
74 75 //load symbols 76 if (!console->loadGlobalSymbols(consoleSymtab)) 77 panic("could not load console symbols\n"); 78 79 if (!console->loadGlobalSymbols(debugSymbolTable)) 80 panic("could not load console symbols\n"); 81 --- 5 unchanged lines hidden (view full) --- 87 /** 88 * Copy the osflags (kernel arguments) into the consoles 89 * memory. (Presently Linux does not use the console service 90 * routine to get these command line arguments, but Tru64 and 91 * others do.) 92 */ 93 if (consoleSymtab->findAddress("env_booted_osflags", addr)) { 94 warn("writing addr starting from %#x", addr); | 74 75 //load symbols 76 if (!console->loadGlobalSymbols(consoleSymtab)) 77 panic("could not load console symbols\n"); 78 79 if (!console->loadGlobalSymbols(debugSymbolTable)) 80 panic("could not load console symbols\n"); 81 --- 5 unchanged lines hidden (view full) --- 87 /** 88 * Copy the osflags (kernel arguments) into the consoles 89 * memory. (Presently Linux does not use the console service 90 * routine to get these command line arguments, but Tru64 and 91 * others do.) 92 */ 93 if (consoleSymtab->findAddress("env_booted_osflags", addr)) { 94 warn("writing addr starting from %#x", addr); |
95 virtPort.writeBlob(addr, (uint8_t*)params()->boot_osflags.c_str(), | 95 virtPort->writeBlob(addr, (uint8_t*)params()->boot_osflags.c_str(), |
96 strlen(params()->boot_osflags.c_str())); 97 } 98 99 /** 100 * Set the hardware reset parameter block system type and revision 101 * information to Tsunami. 102 */ 103 if (consoleSymtab->findAddress("m5_rpb", addr)) { 104 uint64_t data; 105 data = htog(params()->system_type); | 96 strlen(params()->boot_osflags.c_str())); 97 } 98 99 /** 100 * Set the hardware reset parameter block system type and revision 101 * information to Tsunami. 102 */ 103 if (consoleSymtab->findAddress("m5_rpb", addr)) { 104 uint64_t data; 105 data = htog(params()->system_type); |
106 virtPort.write(addr + 0x50, data); | 106 virtPort->write(addr + 0x50, data); |
107 data = htog(params()->system_rev); | 107 data = htog(params()->system_rev); |
108 virtPort.write(addr + 0x58, data); | 108 virtPort->write(addr + 0x58, data); |
109 } else { 110 panic("could not find hwrpb\n"); 111 } 112#endif 113} 114 115MipsSystem::~MipsSystem() 116{ --- 40 unchanged lines hidden --- | 109 } else { 110 panic("could not find hwrpb\n"); 111 } 112#endif 113} 114 115MipsSystem::~MipsSystem() 116{ --- 40 unchanged lines hidden --- |