Skip to content
Snippets Groups Projects
Commit c45ce87c authored by Jason Hiser's avatar Jason Hiser :tractor:
Browse files

refactoring for separate arm/x86 pinners

parent 2c6f952f
No related branches found
No related tags found
1 merge request!16Arm port
......@@ -11,5 +11,11 @@ class ZiprArchitectureHelperARM64_t : public ZiprArchitectureHelperBase_t
// it includes a 26-bit immediate, which is +/- 128MB, which should be a good enough "jump anywhere"
// for now.
}
virtual libIRDB::Instruction_t* createNewHaltInstruction(libIRDB::FileIR_t *p_firp, libIRDB::Instruction_t* p_existing) override
{
return IRDBUtility::addNewDatabits(p_firp, p_existing, "\xd4\x40\x00\x00");
// A halt unconditional, in binary is:
// 1101 0100 0100 0000 0000 0000 0000 0000
}
};
#endif
......@@ -9,5 +9,9 @@ class ZiprArchitectureHelperX86_t : public ZiprArchitectureHelperBase_t
{
return IRDBUtility::addNewAssembly(p_firp, p_existing, "jmp 0");
}
virtual libIRDB::Instruction_t* createNewHaltInstruction(libIRDB::FileIR_t *p_firp, libIRDB::Instruction_t* p_existing) override
{
return IRDBUtility::addNewAssembly(p_firp, p_existing, "hlt");
}
};
#endif
......@@ -6,6 +6,7 @@ class ZiprArchitectureHelperBase_t
{
public:
virtual libIRDB::Instruction_t* createNewJumpInstruction(libIRDB::FileIR_t *p_firp, libIRDB::Instruction_t* p_existing)=0;
virtual libIRDB::Instruction_t* createNewHaltInstruction(libIRDB::FileIR_t *p_firp, libIRDB::Instruction_t* p_existing)=0;
static std::unique_ptr<ZiprArchitectureHelperBase_t> factory(libIRDB::FileIR_t* p_firp);
};
......
#ifndef ZIPR_PINNER
#define ZIPR_PINNER
class ZiprPinner_t
{
public:
virtual void doPinning();
};
#endif
#ifndef ZIPR_PINNER
#define ZIPR_PINNER
class ZiprPinner_t
{
public:
virtual void doPinning()=0;
static unique_ptr<ZiprPinner_t> factory(Zipr_SDK::Zipr_t* parent);
};
#endif
#ifndef ZIPR_PINNER
#define ZIPR_PINNER
class ZiprPinner_t
{
public:
virtual void doPinning()=0;
static unique_ptr<ZiprPinner_t> factory(Zipr_SDK::Zipr_t* parent);
};
#endif
......@@ -59,6 +59,7 @@ using namespace Zipr_SDK;
#include <zipr_dollop_man.h>
#include <zipr_utils.h>
#include <arch/archbase.hpp>
#include <pinner/pinner_base.h>
#include <zipr_impl.h>
#include <zipr_optimizations.h>
#include <zipr_stats.h>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment