From: SourceForge.net <no...@so...> - 2007-10-17 22:58:15
|
Bugs item #1815418, was opened at 2007-10-17 15:58 Message generated for change (Tracker Item Submitted) made by Item Submitter You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=100599&aid=1815418&group_id=599 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: msc51(8051) target Group: None Status: Open Resolution: None Priority: 6 Private: No Submitted By: Jesus Calvino-Fraga (jesusc) Assigned to: Nobody/Anonymous (nobody) Summary: Register bank not reserved Initial Comment: sdcc -v: mcs51/gbz80/z80/avr/ds390/pic16/pic14/TININative/xa51/ds400/hc08 2.7.4 #4932 (Oct 17 2007) (MSVC) When using "using" in a interrupt service routine, the corresponding register bank is not reserved and variables are allocated on it. The following code reproduces the problem: volatile int a; volatile unsigned char x[10]; //Use register bank 1 for this interrupt void my_interrupt (void) interrupt 1 using 1 { a++; x[a]=0; } void main (void) { } "my_interrupt" uses R0 of bank 1: push acc push psw mov psw,#0x08 ; C:\Source\lpc925\bug.c:7: a++; mov a,#0x01 add a,_a mov _a,a clr a addc a,(_a + 1) mov (_a + 1),a ; C:\Source\lpc925\bug.c:8: x[a]=0; mov a,_a add a,#_x mov r0,a mov @r0,#0x00 pop psw pop acc reti But variables (in this case 'a' and 'x[10]') are put in that register bank as shown in the mem file: Internal RAM layout: 0 1 2 3 4 5 6 7 8 9 A B C D E F 0x00:|0|0|0|0|0|0|0|0|a|a|a|a|a|a|a|a| 0x10:|a|a|a|a|S|S|S|S|S|S|S|S|S|S|S|S| 0x20:|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S| This is caused because the assembly file is missing the overlayable register bank 1 area and space. This bug may be related to the changes made las 2007-09-04 in file src/SDCCmem.c where the variable RegBankUsed[] is handled. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=100599&aid=1815418&group_id=599 |
From: SourceForge.net <no...@so...> - 2007-10-18 10:31:06
|
Bugs item #1815418, was opened at 2007-10-18 00:58 Message generated for change (Comment added) made by maartenbrock You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=100599&aid=1815418&group_id=599 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: msc51(8051) target >Group: fixed >Status: Closed >Resolution: Fixed Priority: 6 Private: No Submitted By: Jesus Calvino-Fraga (jesusc) >Assigned to: Maarten Brock (maartenbrock) Summary: Register bank not reserved Initial Comment: sdcc -v: mcs51/gbz80/z80/avr/ds390/pic16/pic14/TININative/xa51/ds400/hc08 2.7.4 #4932 (Oct 17 2007) (MSVC) When using "using" in a interrupt service routine, the corresponding register bank is not reserved and variables are allocated on it. The following code reproduces the problem: volatile int a; volatile unsigned char x[10]; //Use register bank 1 for this interrupt void my_interrupt (void) interrupt 1 using 1 { a++; x[a]=0; } void main (void) { } "my_interrupt" uses R0 of bank 1: push acc push psw mov psw,#0x08 ; C:\Source\lpc925\bug.c:7: a++; mov a,#0x01 add a,_a mov _a,a clr a addc a,(_a + 1) mov (_a + 1),a ; C:\Source\lpc925\bug.c:8: x[a]=0; mov a,_a add a,#_x mov r0,a mov @r0,#0x00 pop psw pop acc reti But variables (in this case 'a' and 'x[10]') are put in that register bank as shown in the mem file: Internal RAM layout: 0 1 2 3 4 5 6 7 8 9 A B C D E F 0x00:|0|0|0|0|0|0|0|0|a|a|a|a|a|a|a|a| 0x10:|a|a|a|a|S|S|S|S|S|S|S|S|S|S|S|S| 0x20:|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S| This is caused because the assembly file is missing the overlayable register bank 1 area and space. This bug may be related to the changes made las 2007-09-04 in file src/SDCCmem.c where the variable RegBankUsed[] is handled. ---------------------------------------------------------------------- >Comment By: Maarten Brock (maartenbrock) Date: 2007-10-18 12:31 Message: Logged In: YES user_id=888171 Originator: NO Fixed in SDCC 2.7.4 #4934. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=100599&aid=1815418&group_id=599 |