From c5816c500aac534fed09f91a47df95349fecd314 Mon Sep 17 00:00:00 2001 From: florian Date: Mon, 26 Jan 2009 14:18:42 +0000 Subject: [PATCH] + support for nop, msr and mrs instructions git-svn-id: trunk@12609 - --- compiler/arm/armatt.inc | 3 +++ compiler/arm/armatts.inc | 3 +++ compiler/arm/armins.dat | 14 ++++++++------ compiler/arm/armnop.inc | 2 +- compiler/arm/armop.inc | 3 +++ compiler/arm/armtab.inc | 28 ++++++++++++++++++++++++++++ 6 files changed, 46 insertions(+), 7 deletions(-) diff --git a/compiler/arm/armatt.inc b/compiler/arm/armatt.inc index 4389a14b0c..74cd25d71b 100644 --- a/compiler/arm/armatt.inc +++ b/compiler/arm/armatt.inc @@ -47,11 +47,14 @@ 'mcr', 'mla', 'mov', +'mrs', +'msr', 'mnf', 'muf', 'mul', 'mvf', 'mvn', +'nop', 'orr', 'rdf', 'rfs', diff --git a/compiler/arm/armatts.inc b/compiler/arm/armatts.inc index 1614aeff1e..09041cfef0 100644 --- a/compiler/arm/armatts.inc +++ b/compiler/arm/armatts.inc @@ -174,5 +174,8 @@ attsufNONE, attsufNONE, attsufNONE, attsufNONE, +attsufNONE, +attsufNONE, +attsufNONE, attsufNONE ); diff --git a/compiler/arm/armins.dat b/compiler/arm/armins.dat index 1725c5df8b..d83c8d14e8 100644 --- a/compiler/arm/armins.dat +++ b/compiler/arm/armins.dat @@ -246,13 +246,13 @@ reg32,reg32,reg32,reg32 \x15\x00\x20\x90 ARM7 ; [MRC] ; reg32,reg32 \321\301\1\x13\110 ARM7 -; [MRScc] -; reg32,reg32 \x10\x01\x0F ARM7 +[MRScc] +reg32,reg32 \x10\x01\x0F ARM7 -; [MSRcc] -; reg32,reg32 \x11\x01\x29\xF0 ARM7 -; regf,reg32 \x12\x01\x28\xF0 ARM7 -; regf,imm \x13\x03\x28\xF0 ARM7 +[MSRcc] +reg32,reg32 \x11\x01\x29\xF0 ARM7 +regf,reg32 \x12\x01\x28\xF0 ARM7 +regf,imm \x13\x03\x28\xF0 ARM7 [MNFcc] @@ -271,6 +271,8 @@ fpureg,immfpu \xF2 FPA ; reg32,reg32,imm \xA\x1\xE0 ARM7 ; reg32,imm \xB\x3\xE0 ARM7 +[NOP] + [ORRcc] reg32,reg32,reg32 \4\x1\x80 ARM7 reg32,reg32,reg32,reg32 \5\x1\x80 ARM7 diff --git a/compiler/arm/armnop.inc b/compiler/arm/armnop.inc index 8241bc2dfc..60560b933e 100644 --- a/compiler/arm/armnop.inc +++ b/compiler/arm/armnop.inc @@ -1,2 +1,2 @@ { don't edit, this file is generated from armins.dat } -102; +106; diff --git a/compiler/arm/armop.inc b/compiler/arm/armop.inc index 631b2029d9..1e56db9ee2 100644 --- a/compiler/arm/armop.inc +++ b/compiler/arm/armop.inc @@ -47,11 +47,14 @@ A_LOG, A_MCR, A_MLA, A_MOV, +A_MRS, +A_MSR, A_MNF, A_MUF, A_MUL, A_MVF, A_MVN, +A_NOP, A_ORR, A_RDF, A_RFS, diff --git a/compiler/arm/armtab.inc b/compiler/arm/armtab.inc index 7eb5bfa785..d1543befa2 100644 --- a/compiler/arm/armtab.inc +++ b/compiler/arm/armtab.inc @@ -399,6 +399,34 @@ code : #21#0#32#144; flags : if_arm7 ), + ( + opcode : A_MRS; + ops : 2; + optypes : (ot_reg32,ot_reg32,ot_none,ot_none); + code : #16#1#15; + flags : if_arm7 + ), + ( + opcode : A_MSR; + ops : 2; + optypes : (ot_reg32,ot_reg32,ot_none,ot_none); + code : #17#1#41#240; + flags : if_arm7 + ), + ( + opcode : A_MSR; + ops : 2; + optypes : (ot_regf,ot_reg32,ot_none,ot_none); + code : #18#1#40#240; + flags : if_arm7 + ), + ( + opcode : A_MSR; + ops : 2; + optypes : (ot_regf,ot_immediate,ot_none,ot_none); + code : #19#3#40#240; + flags : if_arm7 + ), ( opcode : A_MUL; ops : 3;