1/* 2 * Copyright (c) 2010 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 --- 44 unchanged lines hidden (view full) --- 53#include "mem/physical.hh" 54 55using namespace ArmISA; 56using namespace Linux; 57 58LinuxArmSystem::LinuxArmSystem(Params *p) 59 : ArmSystem(p) 60{ |
61#ifndef NDEBUG 62 kernelPanicEvent = addKernelFuncEvent<BreakPCEvent>("panic"); 63 if (!kernelPanicEvent) 64 panic("could not find kernel symbol \'panic\'"); 65#endif 66 67 // With ARM udelay() is #defined to __udelay 68 Addr addr = 0; 69 if (kernelSymtab->findAddress("__udelay", addr)) { 70 uDelaySkipEvent = new UDelayEvent(&pcEventQueue, "__udelay", 71 fixFuncEventAddr(addr), 1000, 0); 72 } else { 73 panic("couldn't find kernel symbol \'udelay\'"); 74 } 75 76 // constant arguments to udelay() have some precomputation done ahead of 77 // time. Constant comes from code. 78 if (kernelSymtab->findAddress("__const_udelay", addr)) { 79 constUDelaySkipEvent = new UDelayEvent(&pcEventQueue, "__const_udelay", 80 fixFuncEventAddr(addr), 1000, 107374); 81 } else { 82 panic("couldn't find kernel symbol \'udelay\'"); 83 } 84 85 secDataPtrAddr = 0; 86 secDataAddr = 0; 87 penReleaseAddr = 0; 88 kernelSymtab->findAddress("__secondary_data", secDataPtrAddr); 89 kernelSymtab->findAddress("secondary_data", secDataAddr); 90 kernelSymtab->findAddress("pen_release", penReleaseAddr); 91 92 secDataPtrAddr &= ~ULL(0x7F); 93 secDataAddr &= ~ULL(0x7F); 94 penReleaseAddr &= ~ULL(0x7F); |
95} 96 97bool 98LinuxArmSystem::adderBootUncacheable(Addr a) 99{ 100 Addr block = a & ~ULL(0x7F); 101 if (block == secDataPtrAddr || block == secDataAddr || 102 block == penReleaseAddr) --- 42 unchanged lines hidden (view full) --- 145 offset += ad->copyOut(boot_data + offset); 146 offset += an->copyOut(boot_data + offset); 147 148 DPRINTF(Loader, "Boot atags was %d bytes in total\n", size << 2); 149 DDUMP(Loader, boot_data, size << 2); 150 151 physProxy.writeBlob(params()->atags_addr, boot_data, size << 2); 152 |
153 for (int i = 0; i < threadContexts.size(); i++) { 154 threadContexts[i]->setIntReg(0, 0); 155 threadContexts[i]->setIntReg(1, params()->machine_type); 156 threadContexts[i]->setIntReg(2, params()->atags_addr); 157 } 158} 159 160LinuxArmSystem::~LinuxArmSystem() --- 12 unchanged lines hidden --- |