Forum: Compiler & IDEs ST32, GCC, Prozessor-Status-Wort schreiben


von tschurifetzen (Gast)


Lesenswert?

Hallo!

laut ARM infocenter schreibt man beim Cortex-M3 das PSW folgendermaßen:
1
msr apsr,r0

Ich bekomme dabei die GCC assembler-Fehlermeldung: writing to APSR 
without specifying a bitmask is deprecated

hingegen funktioniert das ganze, wenn man folgendes schreibt.
1
msr apsr_nzcvq,r0

Laut ARM Webseite gibt es aber für den Cortex-M3 die Option _nzcvq 
nicht, und msr apsr alleine müsste eindeutig sein.

In den Compilereinstellungen ist explizit festgelegt, dass für den CM3 
kompiliert werden soll. Und die kompilierte Datei funktioniert auch auf 
dem ST32 (mit der Option _nzcvq) einwandfrei. Trotzdem will ich _nzcvq 
verwenden, weil es vielleicht mit anderen GCC-Versionen?? Probleme 
macht?
Toolchain: aktuelle Codesourcery g++ lite eabi


PS: Bei einem nxp17xx mit lpcxpresso reicht ein msr apsr aus

Jemand ein ähnliches Problem?

von Marcus H. (mharnisch) Benutzerseite


Lesenswert?

tschurifetzen schrieb:
> Laut ARM Webseite gibt es aber für den Cortex-M3 die Option _nzcvq
> nicht, und msr apsr alleine müsste eindeutig sein.

"ARM deprecates using MSR APSR without a _<bits> qualifier as an alias 
for MSR APSR_nzcvq." -- ARMv7-M ARM (DDI 0403D)

Gruß
Marcus

von tschurifetzen (Gast)


Lesenswert?

Vielen Dank!
Scheinbar wurde das noch nicht auf der arm-webseite angepasst.
http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0489c/Cihibbbh.html
1
Show/hideSyntax (ARMv7-M and ARMv6-M only)
2
3
You can also use the following syntax on ARMv7 and ARMv6M.
4
5
MSR{cond} psr, Rm
6
7
..
8
where psr can be any of: APSR, IPSR, EPSR ...

Aber im architecture reference manual (Seite 799) konnte ich genau das 
nachvollziehen was du geschrieben hast. Vielen Dank nochmal!

Is auch irgendwie logisch, da mit den Cortex-M4 mit DSP das flag _g 
verwendet werden kann.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.