Oh GREAT!!!

I'll give it a try tomorrow, thanks!

a*

Maarten Brock wrote:
I think you missed my announcement. It is already in the
latest revision. I still need to document it though. Use
--model-huge and all functions will be banked including
the library (except some lowest level helper functions).
The library therefor must also be build with this
switch.

Maarten

Hi Maarten,  I was wondering how are you progressing on the huge memory
model?

I have been using the banked features pretty extensively but the
requirement to explicitly mark code banked has limited what code I can
move into the non-default banks.  I would love if there was a way to
make this all much more flexible.

a*

   Anthony Asterisk wrote:
Thanks Maarten,  your fix has helped!  I look forward to your full
release.  Let me know if you need any assistance with testing.

Anthony

Maarten Brock wrote:
No, not quite. This is where it should be:

    if (IFFUNC_ISREENT (name->type) || options.stackAuto)
      {
        if (options.useXstack)
          xstackPtr -= port->stack.direction * port->stack.reent_overhead;
        else
          stackPtr  -= port->stack.direction * port->stack.reent_overhead;
      }

    if (IFFUNC_ISBANKEDCALL (name->type))
      stackPtr -= port->stack.direction * port->stack.banked_overhead;

    fetype = getSpec (name->type);        /* get the specifier for the function 
*/
    /* if this is a reentrant function then */
    if (IFFUNC_ISREENT (name->type))
      reentrant++;




Hi Maarten.  I'm not sure my line numbers line up with your.  I'm pretty
sure I got the correct location in mcs51/main.c, but the change is
SDCCCast might be different.  Does this look good to you?


     if (options.dump_tree)
       PA(ex);
     if (fatalError)
       goto skipall;

*  if (IFFUNC_ISBANKEDCALL (name->type))
       stackPtr -= port->stack.direction * port->stack.banked_overhead;

*
     /* Do not generate code for inline functions unless extern also. */
#if 0
     if (FUNC_ISINLINE (name->type)&&   !IS_EXTERN (fetype))
       goto skipall;
#else
     /* Temporary hack: always generate code for static inline functions. */
     /* Ideally static inline functions should only be generated if needed. */
     if (FUNC_ISINLINE (name->type)&&   !IS_EXTERN (fetype)&&   !IS_STATIC
(fetype))
       goto skipall;
#endif


Maarten Brock wrote:

Anthony,

I think I've found the bug.

In mcs51/main.c(795) banked_overhead should be set to 1.
And in SDCCast.c(6514) the following should be added:
     if (IFFUNC_ISBANKEDCALL (name->type))
       stackPtr -= port->stack.direction * port->stack.banked_overhead;

When I fully have --model-huge working I'll commit ot svn.

Greets,
Maarten



Hi Maarten,

any other way I can help narrow down the cause of this issue?

a*

Anthony Asterisk wrote:


Indeed, no .rst for library objects. But maybe you could
link the object explicitly to override the library and
this will generate the .rst file. That is assuming you
have built the library first from source.

Maarten


Yep can do that.

program output:
sending 2d bytes.
payload addr X:0xe0a0.
SP 72.
sending ff00 bytes.
payload addr X:0xe0a0.
SP 78.


rst file excerpts


                              1047
;------------------------------------------------------------
                              1048 ;Allocation info for local variables
in function 'cc2430_rf_send'
                              1049
;------------------------------------------------------------
                              1050 ;payload_len               Allocated
to stack - offset -4
                              1051 ;payload                   Allocated
to registers r2 r3 r4
                              1052
;------------------------------------------------------------
                              1053 ;
../../cpu/cc2430/dev/cc2430_rf_intr.c:128: cc2430_rf_send(void
*payload, unsigned short payload_len)
                              1054 ;
-----------------------------------------
                              1055 ;        function cc2430_rf_send
                              1056 ;
-----------------------------------------
      0468                    1057 _cc2430_rf_send:
      0468 C0 09              1058         push    _bp
      046A 85 81 09           1059         mov     _bp,sp
      046D AA 82              1060         mov     r2,dpl
      046F AB 83              1061         mov     r3,dph
      0471 AC F0              1062         mov     r4,b
                              1063 ;
../../cpu/cc2430/dev/cc2430_rf_intr.c:130: printf("sending %x
bytes.\n",payload_len);
      0473 C0 02              1064         push    ar2
      0475 C0 03              1065         push    ar3
      0477 C0 04              1066         push    ar4
      0479 E5 09              1067         mov     a,_bp
      047B 24 FC              1068         add     a,#0xfc
      047D F8                 1069         mov     r0,a
      047E E6                 1070         mov     a,@r0
      047F C0 E0              1071         push    acc
      0481 08                 1072         inc     r0
      0482 E6                 1073         mov     a,@r0
      0483 C0 E0              1074         push    acc

      0485 74 C1              1075         mov     a,#__str_0
      0487 C0 E0              1076         push    acc
      0489 74 7C              1077         mov     a,#(__str_0>>    8)
      048B C0 E0              1078         push    acc
      048D 74 80              1079         mov     a,#0x80
      048F C0 E0              1080         push    acc
      0491 12 3D 15           1081         lcall   _printf
      0494 E5 81              1082         mov     a,sp
      0496 24 FB              1083         add     a,#0xfb
      0498 F5 81              1084         mov     sp,a
      049A D0 04              1085         pop     ar4
      049C D0 03              1086         pop     ar3
      049E D0 02              1087         pop     ar2
                              1088 ;
../../cpu/cc2430/dev/cc2430_rf_intr.c:131: printf("payload addr
%p.\n", payload);
      04A0 C0 02              1089         push    ar2
      04A2 C0 03              1090         push    ar3
      04A4 C0 04              1091         push    ar4
      04A6 C0 02              1092         push    ar2
      04A8 C0 03              1093         push    ar3
      04AA C0 04              1094         push    ar4
      04AC 74 D4              1095         mov     a,#__str_1
      04AE C0 E0              1096         push    acc
      04B0 74 7C              1097         mov     a,#(__str_1>>    8)
      04B2 C0 E0              1098         push    acc
      04B4 74 80              1099         mov     a,#0x80
      04B6 C0 E0              1100         push    acc
      04B8 12 3D 15           1101         lcall   _printf
      04BB E5 81              1102         mov     a,sp
      04BD 24 FA              1103         add     a,#0xfa

      04BF F5 81              1104         mov     sp,a
                              1105 ;
../../cpu/cc2430/dev/cc2430_rf_intr.c:132: printf("SP %x.\n", SP);
      04C1 AD 81              1106         mov     r5,_SP
      04C3 7E 00              1107         mov     r6,#0x00
      04C5 C0 05              1108         push    ar5
      04C7 C0 06              1109         push    ar6
      04C9 74 E6              1110         mov     a,#__str_2
      04CB C0 E0              1111         push    acc
      04CD 74 7C              1112         mov     a,#(__str_2>>    8)
      04CF C0 E0              1113         push    acc
      04D1 74 80              1114         mov     a,#0x80
      04D3 C0 E0              1115         push    acc
      04D5 12 3D 15           1116         lcall   _printf
      04D8 E5 81              1117         mov     a,sp
      04DA 24 FB              1118         add     a,#0xfb
      04DC F5 81              1119         mov     sp,a
      04DE D0 04              1120         pop     ar4
      04E0 D0 03              1121         pop     ar3
      04E2 D0 02              1122         pop     ar2
                              1123 ;
../../cpu/cc2430/dev/cc2430_rf_intr.c:133: return
cc2430_rf_send_b(payload, payload_len);
      04E4 E5 09              1124         mov     a,_bp
      04E6 24 FC              1125         add     a,#0xfc
      04E8 F8                 1126         mov     r0,a
      04E9 E6                 1127         mov     a,@r0
      04EA C0 E0              1128         push    acc
      04EC 08                 1129         inc     r0
      04ED E6                 1130         mov     a,@r0
      04EE C0 E0              1131         push    acc
      04F0 8A 82              1132         mov     dpl,r2
      04F2 8B 83              1133         mov     dph,r3
      04F4 8C F0              1134         mov     b,r4
      04F6 78 8D              1135         mov     r0,#_cc2430_rf_send_b
      04F8 79 82              1136         mov     r1,#(_cc2430_rf_send_b


8)


      04FA 7A 02              1137         mov     r2,#(_cc2430_rf_send_b


16)


      04FC 12 06 27           1138         lcall   __sdcc_banked_call
      04FF AA 82              1139         mov     r2,dpl
      0501 AB 83              1140         mov     r3,dph
      0503 15 81              1141         dec     sp
      0505 15 81              1142         dec     sp
      0507 8A 82              1143         mov     dpl,r2
      0509 8B 83              1144         mov     dph,r3
      050B D0 09              1145         pop     _bp
      050D 22                 1146         ret

                              1115
;------------------------------------------------------------
                              1116 ;Allocation info for local variables
in function 'cc2430_rf_send_b'
                              1117
;------------------------------------------------------------
                              1118 ;payload_len               Allocated
to stack - offset -4
                              1119 ;payload                   Allocated
to stack - offset 1
                              1120 ;i                         Allocated
to registers r5
                              1121 ;counter                   Allocated
to registers r2
                              1122
;------------------------------------------------------------
                              1123 ;
../../cpu/cc2430/dev/cc2430_rf.c:160: cc2430_rf_send_b(void *payload,
unsigned short payload_len) __banked
                              1124 ;
-----------------------------------------
                              1125 ;        function cc2430_rf_send_b
                              1126 ;
-----------------------------------------
      828D                    1127 _cc2430_rf_send_b:
      828D C0 09              1128         push    _bp
      828F 85 81 09           1129         mov     _bp,sp
      8292 C0 82              1130         push    dpl
      8294 C0 83              1131         push    dph
      8296 C0 F0              1132         push    b
                              1133 ;
../../cpu/cc2430/dev/cc2430_rf.c:164: printf("sending %x
bytes.\n",payload_len);
      8298 E5 09              1134         mov     a,_bp
      829A 24 FC              1135         add     a,#0xfc
      829C F8                 1136         mov     r0,a
      829D E6                 1137         mov     a,@r0
      829E C0 E0              1138         push    acc
      82A0 08                 1139         inc     r0
      82A1 E6                 1140         mov     a,@r0
      82A2 C0 E0              1141         push    acc
      82A4 74 31              1142         mov     a,#__str_2
      82A6 C0 E0              1143         push    acc
      82A8 74 7C              1144         mov     a,#(__str_2>>    8)
      82AA C0 E0              1145         push    acc
      82AC 74 80              1146         mov     a,#0x80
      82AE C0 E0              1147         push    acc
      82B0 12 3D 15           1148         lcall   _printf
      82B3 E5 81              1149         mov     a,sp
      82B5 24 FB              1150         add     a,#0xfb
      82B7 F5 81              1151         mov     sp,a
                              1152 ;
../../cpu/cc2430/dev/cc2430_rf.c:165: printf("payload addr %p.\n",
payload);
      82B9 A8 09              1153         mov     r0,_bp
      82BB 08                 1154         inc     r0
      82BC E6                 1155         mov     a,@r0
      82BD C0 E0              1156         push    acc
      82BF 08                 1157         inc     r0
      82C0 E6                 1158         mov     a,@r0
      82C1 C0 E0              1159         push    acc
      82C3 08                 1160         inc     r0
      82C4 E6                 1161         mov     a,@r0
      82C5 C0 E0              1162         push    acc
      82C7 74 44              1163         mov     a,#__str_3
      82C9 C0 E0              1164         push    acc
      82CB 74 7C              1165         mov     a,#(__str_3>>    8)
      82CD C0 E0              1166         push    acc
      82CF 74 80              1167         mov     a,#0x80
      82D1 C0 E0              1168         push    acc
      82D3 12 3D 15           1169         lcall   _printf
      82D6 E5 81              1170         mov     a,sp
      82D8 24 FA              1171         add     a,#0xfa
      82DA F5 81              1172         mov     sp,a
                              1173 ;
../../cpu/cc2430/dev/cc2430_rf.c:166: printf("SP %x.\n", SP);
      82DC AD 81              1174         mov     r5,_SP
      82DE 7E 00              1175         mov     r6,#0x00
      82E0 C0 05              1176         push    ar5
      82E2 C0 06              1177         push    ar6
      82E4 74 56              1178         mov     a,#__str_4
      82E6 C0 E0              1179         push    acc
      82E8 74 7C              1180         mov     a,#(__str_4>>    8)
      82EA C0 E0              1181         push    acc
      82EC 74 80              1182         mov     a,#0x80
      82EE C0 E0              1183         push    acc
      82F0 12 3D 15           1184         lcall   _printf
      82F3 E5 81              1185         mov     a,sp
      82F5 24 FB              1186         add     a,#0xfb
      82F7 F5 81              1187         mov     sp,a


------------------------------------------------------------------------------
Throughout its 18-year history, RSA Conference consistently attracts the
world's best and brightest in the field, creating opportunities for
Conference
attendees to learn about information security's most important issues
through
interactions with peers, luminaries and emerging and established
companies.
http://p.sf.net/sfu/rsaconf-dev2dev
_______________________________________________
Sdcc-user mailing list
Sdcc-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sdcc-user




------------------------------------------------------------------------------
Throughout its 18-year history, RSA Conference consistently attracts the
world's best and brightest in the field, creating opportunities for Conference
attendees to learn about information security's most important issues through
interactions with peers, luminaries and emerging and established companies.
http://p.sf.net/sfu/rsaconf-dev2dev
_______________________________________________
Sdcc-user mailing list
Sdcc-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sdcc-user




------------------------------------------------------------------------------
Throughout its 18-year history, RSA Conference consistently attracts the
world's best and brightest in the field, creating opportunities for Conference
attendees to learn about information security's most important issues through
interactions with peers, luminaries and emerging and established companies.
http://p.sf.net/sfu/rsaconf-dev2dev
_______________________________________________
Sdcc-user mailing list
Sdcc-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sdcc-user




------------------------------------------------------------------------------
Download Intel® Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev
_______________________________________________
Sdcc-user mailing list
Sdcc-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sdcc-user

------------------------------------------------------------------------------
Download Intel® Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev
_______________________________________________
Sdcc-user mailing list
Sdcc-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sdcc-user

Reply via email to