[fpc-devel] arm embedded cortexM3 unrecognized opcode
Geoffrey Barton
mrb at periphon.net
Tue Jul 13 16:12:10 CEST 2010
On 13 Jul 2010, at 12:24, Jeppe Johansen wrote:
> The bit names are a bit hard, since there aren't any parsing
> facilities in place for them, to my knowledge. I think they would
> need a special syntax to not be seen as symbols by the assembler
> reader
>
> It'll take some work on the assembler reader and writer to get those
> special instructions to work
>
> The special registers should be added to armreg.dat(and then run
> mkarmreg). I didn't add all the cortex registers.
ok, I have done that, 'msr primask,r0' compiles ok. I will disassemble
and compare with the C code examples, if I can understand them :-)
> Is primask a real register btw? It just assembles to cpsr
cpsr should not exist in cortexm3 according to ARM (see www.arm.com/files/pdf/Cortex-M3_programming_for_ARM7_developers.pdf
eg. page 10 ) It is not in either the v7m archictecture or cortex_m3
tech ref manuals.
primask is a (real as far as I can see) one bit register. I will try
flipping it on the hardware debugger and see if it changes anywhere
else...
rgds
Geoffrey
>
> Geoffrey Barton skrev:
>>
>> On 12 Jul 2010, at 19:06, Jeppe Johansen wrote:
>>
>>> Add the missing instructions to the bottom of armins.dat, run
>>> mkarmins in the same directory.
>>
>>
>> It now recognises the mnemonic 'cpsie' but not the following 'i'.
>>
>> The 'msr' instruction should also allow the interrupts to be
>> enabled/disabled as
>>
>> msr primask,r0
>>
>> but msr gives an unknown identifier error for 'primask' and all the
>> other 'special' register names ('apsr' etc.) Perhaps they have been
>> given different names, but I cannot find them listed anywhere in
>> the FPC source.
>>
>>> (and then submit patch) :-)
>>
>> well, once I have some code which works on the chip, I will ask
>> someone where to put it :-)
>>
>> Geoffrey
>>
>>>
>>> Geoffrey Barton skrev:
>>>> I wrote a procedure to turn on interrupts:-
>>>>
>>>> procedure intenable;nostackframe;
>>>> begin
>>>> asm
>>>> cpsie i
>>>> end;
>>>> end;
>>>>
>>>> The compilation fails with 'Error: Unrecognized opcode cpsie'
>>>>
>>>> The compiler also does not recognise 'cpsid' and also 'primask'
>>>> as in 'mrs r0,primask'
>>>>
>>>> any ideas/workarounds?
>>>>
>>>> Geoffrey
>>>> _______________________________________________
>>>> fpc-devel maillist - fpc-devel at lists.freepascal.org
>>>> http://lists.freepascal.org/mailman/listinfo/fpc-devel
>>>
>>> _______________________________________________
>>> fpc-devel maillist - fpc-devel at lists.freepascal.org
>>> http://lists.freepascal.org/mailman/listinfo/fpc-devel
>>
>> _______________________________________________
>> fpc-devel maillist - fpc-devel at lists.freepascal.org
>> http://lists.freepascal.org/mailman/listinfo/fpc-devel
>
> _______________________________________________
> fpc-devel maillist - fpc-devel at lists.freepascal.org
> http://lists.freepascal.org/mailman/listinfo/fpc-devel
More information about the fpc-devel
mailing list