ARM: Limited implementation of dprintk.

Does not work with vfp arguments or arguments passed on the stack.
This commit is contained in:
Ali Saidi 2010-08-25 19:10:43 -05:00
parent e1168e72ca
commit c0b54f579c
4 changed files with 37 additions and 2 deletions

View file

@ -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;

View file

@ -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;
}

View file

@ -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);

View file

@ -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