diff -r bfdbf815be5b -r b8c31beb9d0e src/arch/arm/registers.hh --- a/src/arch/arm/registers.hh Mon Aug 23 11:32:29 2010 -0500 +++ b/src/arch/arm/registers.hh Mon Aug 23 11:32:44 2010 -0500 @@ -78,6 +78,7 @@ const int ReturnValueReg = 0; const int ReturnValueReg1 = 1; const int ReturnValueReg2 = 2; +const int NumArgumentRegs = 4; const int ArgumentReg0 = 0; const int ArgumentReg1 = 1; const int ArgumentReg2 = 2; diff -r bfdbf815be5b -r b8c31beb9d0e src/arch/arm/system.hh --- a/src/arch/arm/system.hh Mon Aug 23 11:32:29 2010 -0500 +++ b/src/arch/arm/system.hh Mon Aug 23 11:32:44 2010 -0500 @@ -1,4 +1,16 @@ /* + * Copyright (c) 2010 ARM Limited + * All rights reserved + * + * The license below extends only to copyright in the software and shall + * not be construed as granting a license to any other intellectual + * property including but not limited to intellectual property relating + * to a hardware implementation of the functionality of the software + * licensed hereunder. You may use the software subject to the license + * terms below provided that you ensure that this notice is replicated + * unmodified and in its entirety in all distributions of the software, + * modified or unmodified, in source code or in binary form. + * * Copyright (c) 2002-2005 The Regents of The University of Michigan * All rights reserved. * @@ -37,9 +49,17 @@ #include "params/ArmSystem.hh" #include "sim/sim_object.hh" #include "sim/system.hh" +#include "kern/linux/events.hh" class ArmSystem : public System { + private: + /** + * PC based event to skip the dprink() call and emulate its + * functionality + */ + Linux::DebugPrintkEvent *debugPrintkEvent; + public: typedef ArmSystemParams Params; ArmSystem(Params *p); diff -r bfdbf815be5b -r b8c31beb9d0e src/arch/arm/system.cc --- a/src/arch/arm/system.cc Mon Aug 23 11:32:29 2010 -0500 +++ b/src/arch/arm/system.cc Mon Aug 23 11:32:44 2010 -0500 @@ -41,17 +41,22 @@ */ #include "arch/arm/system.hh" +#include +using namespace std; using namespace ArmISA; +using namespace Linux; ArmSystem::ArmSystem(Params *p) : System(p) { + debugPrintkEvent = addKernelFuncEvent("dprintk"); } ArmSystem::~ArmSystem() { + delete debugPrintkEvent; } diff -r bfdbf815be5b -r b8c31beb9d0e src/arch/arm/utility.cc --- a/src/arch/arm/utility.cc Mon Aug 23 11:32:29 2010 -0500 +++ b/src/arch/arm/utility.cc Mon Aug 23 11:32:44 2010 -0500 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009 ARM Limited + * Copyright (c) 2009-2010 ARM Limited * All rights reserved. * * The license below extends only to copyright in the software and shall @@ -59,7 +59,15 @@ uint64_t getArgument(ThreadContext *tc, int number, bool fp) { #if FULL_SYSTEM - panic("getArgument() not implemented for ARM!\n"); + if (number < NumArgumentRegs) { + if (fp) + panic("getArgument() doesn't support fp regs!\n"); + else + return tc->readIntReg(number); + } + else { + panic("getArgument() not implemented for larger than NumArgumentRegs!\n"); + } #else panic("getArgument() only implemented for FULL_SYSTEM\n"); M5_DUMMY_RETURN