1/* 2 * Copyright (c) 2011-2013 ARM Limited 3 * All rights reserved 4 * 5 * The license below extends only to copyright in the software and shall 6 * not be construed as granting a license to any other intellectual 7 * property including but not limited to intellectual property relating 8 * to a hardware implementation of the functionality of the software --- 65 unchanged lines hidden (view full) --- 74 75System::System(Params *p) 76 : MemObject(p), _systemPort("system_port", this), 77 _numContexts(0), 78 pagePtr(0), 79 init_param(p->init_param), 80 physProxy(_systemPort, p->cache_line_size), 81 loadAddrMask(p->load_addr_mask), |
82 loadAddrOffset(p->load_offset), |
83 nextPID(0), 84 physmem(name() + ".physmem", p->memories), 85 memoryMode(p->mem_mode), 86 _cacheLineSize(p->cache_line_size), 87 workItemsBegin(0), 88 workItemsEnd(0), 89 numWorkIds(p->num_work_ids), 90 _params(p), --- 179 unchanged lines hidden (view full) --- 270 TheISA::startupCPU(threadContexts[i], i); 271 // Moved from the constructor to here since it relies on the 272 // address map being resolved in the interconnect 273 /** 274 * Load the kernel code into memory 275 */ 276 if (params()->kernel != "") { 277 // Validate kernel mapping before loading binary |
278 if (!(isMemAddr((kernelStart & loadAddrMask) + loadAddrOffset) && 279 isMemAddr((kernelEnd & loadAddrMask) + loadAddrOffset))) { |
280 fatal("Kernel is mapped to invalid location (not memory). " |
281 "kernelStart 0x(%x) - kernelEnd 0x(%x) %#x:%#x\n", kernelStart, 282 kernelEnd, (kernelStart & loadAddrMask) + loadAddrOffset, 283 (kernelEnd & loadAddrMask) + loadAddrOffset); |
284 } 285 // Load program sections into memory |
286 kernel->loadSections(physProxy, loadAddrMask, loadAddrOffset); |
287 288 DPRINTF(Loader, "Kernel start = %#x\n", kernelStart); 289 DPRINTF(Loader, "Kernel end = %#x\n", kernelEnd); 290 DPRINTF(Loader, "Kernel entry = %#x\n", kernelEntry); 291 DPRINTF(Loader, "Kernel loaded...\n"); 292 } 293 } 294 --- 178 unchanged lines hidden --- |