diff options
author | Gabe Black <gblack@eecs.umich.edu> | 2010-06-02 12:58:10 -0500 |
---|---|---|
committer | Gabe Black <gblack@eecs.umich.edu> | 2010-06-02 12:58:10 -0500 |
commit | 1d5233958ad208e3b229e394ba5ab689b82d8cac (patch) | |
tree | de69dd4bac297c10f9e6355b06b5e1f5f12c9e90 /src/arch/arm/isa/insts/branch.isa | |
parent | 7b397925af7fd9864189387179137dd4ac40dfad (diff) | |
download | gem5-1d5233958ad208e3b229e394ba5ab689b82d8cac.tar.xz |
ARM: Implement the V7 version of alignment checking.
Diffstat (limited to 'src/arch/arm/isa/insts/branch.isa')
-rw-r--r-- | src/arch/arm/isa/insts/branch.isa | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/src/arch/arm/isa/insts/branch.isa b/src/arch/arm/isa/insts/branch.isa index b79f610b6..1aa37f483 100644 --- a/src/arch/arm/isa/insts/branch.isa +++ b/src/arch/arm/isa/insts/branch.isa @@ -153,14 +153,23 @@ let {{ #TBB, TBH for isTbh in (0, 1): if isTbh: - eaCode = "EA = Op1 + Op2 * 2" + eaCode = ''' + unsigned memAccessFlags = ArmISA::TLB::AllowUnaligned | + ArmISA::TLB::AlignHalfWord | + ArmISA::TLB::MustBeOne; + EA = Op1 + Op2 * 2 + ''' accCode = "NPC = readPC(xc) + 2 * (Mem.uh);" mnem = "tbh" else: - eaCode = "EA = Op1 + Op2" + eaCode = ''' + unsigned memAccessFlags = ArmISA::TLB::AllowUnaligned | + ArmISA::TLB::AlignByte | + ArmISA::TLB::MustBeOne; + EA = Op1 + Op2 + ''' accCode = "NPC = readPC(xc) + 2 * (Mem.ub);" mnem = "tbb" - eaCode = "unsigned memAccessFlags = 0;\n" + eaCode iop = InstObjParams(mnem, mnem.capitalize(), "BranchRegReg", {'ea_code': eaCode, 'memacc_code': accCode, |