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 ReturnValueReg = 0;
|
||||||
const int ReturnValueReg1 = 1;
|
const int ReturnValueReg1 = 1;
|
||||||
const int ReturnValueReg2 = 2;
|
const int ReturnValueReg2 = 2;
|
||||||
|
const int NumArgumentRegs = 4;
|
||||||
const int ArgumentReg0 = 0;
|
const int ArgumentReg0 = 0;
|
||||||
const int ArgumentReg1 = 1;
|
const int ArgumentReg1 = 1;
|
||||||
const int ArgumentReg2 = 2;
|
const int ArgumentReg2 = 2;
|
||||||
|
|
|
@ -41,17 +41,22 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "arch/arm/system.hh"
|
#include "arch/arm/system.hh"
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
using namespace ArmISA;
|
using namespace ArmISA;
|
||||||
|
using namespace Linux;
|
||||||
|
|
||||||
ArmSystem::ArmSystem(Params *p)
|
ArmSystem::ArmSystem(Params *p)
|
||||||
: System(p)
|
: System(p)
|
||||||
{
|
{
|
||||||
|
debugPrintkEvent = addKernelFuncEvent<DebugPrintkEvent>("dprintk");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ArmSystem::~ArmSystem()
|
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
|
* Copyright (c) 2002-2005 The Regents of The University of Michigan
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
|
@ -37,9 +49,17 @@
|
||||||
#include "params/ArmSystem.hh"
|
#include "params/ArmSystem.hh"
|
||||||
#include "sim/sim_object.hh"
|
#include "sim/sim_object.hh"
|
||||||
#include "sim/system.hh"
|
#include "sim/system.hh"
|
||||||
|
#include "kern/linux/events.hh"
|
||||||
|
|
||||||
class ArmSystem : public System
|
class ArmSystem : public System
|
||||||
{
|
{
|
||||||
|
private:
|
||||||
|
/**
|
||||||
|
* PC based event to skip the dprink() call and emulate its
|
||||||
|
* functionality
|
||||||
|
*/
|
||||||
|
Linux::DebugPrintkEvent *debugPrintkEvent;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
typedef ArmSystemParams Params;
|
typedef ArmSystemParams Params;
|
||||||
ArmSystem(Params *p);
|
ArmSystem(Params *p);
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2009 ARM Limited
|
* Copyright (c) 2009-2010 ARM Limited
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* The license below extends only to copyright in the software and shall
|
* 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) {
|
uint64_t getArgument(ThreadContext *tc, int number, bool fp) {
|
||||||
#if FULL_SYSTEM
|
#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
|
#else
|
||||||
panic("getArgument() only implemented for FULL_SYSTEM\n");
|
panic("getArgument() only implemented for FULL_SYSTEM\n");
|
||||||
M5_DUMMY_RETURN
|
M5_DUMMY_RETURN
|
||||||
|
|
Loading…
Reference in a new issue