ARM: Limited implementation of dprintk.
Does not work with vfp arguments or arguments passed on the stack.
This commit is contained in:
parent
e1168e72ca
commit
c0b54f579c
4 changed files with 37 additions and 2 deletions
|
@ -79,6 +79,7 @@ const int TotalNumRegs = NumIntRegs + NumFloatRegs + NumMiscRegs;
|
|||
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;
|
||||
|
|
|
@ -41,17 +41,22 @@
|
|||
*/
|
||||
|
||||
#include "arch/arm/system.hh"
|
||||
#include <iostream>
|
||||
|
||||
using namespace std;
|
||||
using namespace ArmISA;
|
||||
using namespace Linux;
|
||||
|
||||
ArmSystem::ArmSystem(Params *p)
|
||||
: System(p)
|
||||
{
|
||||
debugPrintkEvent = addKernelFuncEvent<DebugPrintkEvent>("dprintk");
|
||||
|
||||
}
|
||||
|
||||
ArmSystem::~ArmSystem()
|
||||
{
|
||||
delete debugPrintkEvent;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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,16 @@ initCPU(ThreadContext *tc, int cpuId)
|
|||
|
||||
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(): Floating point arguments not implemented\n");
|
||||
else
|
||||
return tc->readIntReg(number);
|
||||
}
|
||||
else {
|
||||
panic("getArgument(): Argument index %d beyond max supported (%d).\n",
|
||||
number, NumArgumentRegs - 1);
|
||||
}
|
||||
#else
|
||||
panic("getArgument() only implemented for FULL_SYSTEM\n");
|
||||
M5_DUMMY_RETURN
|
||||
|
|
Loading…
Reference in a new issue