Hallo zusammen,
ich portiere derzeit ein 68k/Coldfire V2 Projekt von einem alten
Freescale Compiler auf den GCC. Ich hänge etwas bei den
Interrupt-Handlern.
Im alten Code werden Interrupt-Handler wie folgt angelegt:
1 | __declspec(interrupt: 0x2700)
|
2 | void f(void);
|
So wie ich es verstehe, gibt die Zahl die Interrupt-Priorität an und
wird einfach in das SR Register geschrieben. Dies entnehme ich zumindest
dem Disassembly des alten Projekts:
1 | 34016: 46fc 2700 movew #9984,%sr
|
in
1 | 00034014 <_f>:
|
2 | 34014: 40e7 movew %sr,%sp@-
|
3 | 34016: 46fc 2700 movew #9984,%sr
|
4 | 3401a: 4e56 0000 linkw %fp,#0
|
5 | 3401e: 4fef fff4 lea %sp@(-12),%sp
|
6 | 34022: 48d7 0103 moveml %d0-%d1/%a0,%sp@
|
7 | 34026: 41f9 4000 0000 lea 40000000 <___IPSBAR>,%a0
|
8 | ...
|
9 | 34096: 4e73 rte
|
Mit dem GCC finde ich keine Entsprechung, da kann ich wie zwar
Interrupt-Handler anlegen, aber habe keine Möglichkeit die Priorität
festzulegen:
1 | void f(void) __attribute__((interrupt));
|
Bietet GCC eine solche Möglichkeit nicht?