Gast
#1147594
Ich bin gerade dabei den gcc an einen 68332, also CPU32, anzupassen.
Leider stuerzt mir bereits mein _start ab.
Das hier funktioniert:
void _start(void)
{
/* Hier habe ich unwichtes geloescht */
INTERN.qsm.qpdr |= 0x10; /* Schaltet die LED ein */
while(1);
}
Obiger Code schaltet eine LED am Prozessor ein und bleibt dann stehen.
Also genau was man erwartet.
Im folgenden haengt sich der Prozessor aber beim aufruf von aaa()
gnadenlos weg:
void aaa(void);
void _start(void)
{
aaa();
}
void aaa(void)
{
INTERN.qsm.qpdr |= 0x10; /* Schaltet die LED ein */
while(1);
}
;Das ende von _start mit dem Aufruf von aaa()
220196: 6104 bsrs 22019c <aaa>
220198: 4e5e unlk %fp
22019a: 4e75 rts
;Die aaa() Funktion
0022019c <aaa>:
22019c: 4e56 0000 linkw %fp,#0
2201a0: 227c 00ff fa00 moveal #16775680,%a1
2201a6: 207c 00ff fa00 moveal #16775680,%a0
;Einschalten der led
2201ac: 1028 0215 moveb %a0@(533),%d0
2201b0: 0000 0010 orib #16,%d0
2201b4: 1340 0215 moveb %d0,%a1@(533)
;while(1)
002201b8 <.L4>:
2201b8: 60fe bras 2201b8 <.L4>
2201ba: 4e71 nop
Kann mir einer sagen was da schief geht?
Olaf