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

Reply via email to