I looked for the announcement but didn't find it in the sdcc-users list or on the sdcc sourceforge NEWS section.   Where should I download the version that has this support?  Looking on sourceforge, I only see snapshots, and version 2.9.0 which does not include this..


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