been discussed. this been fixed a while ago. check new gcc sources. ~d P.S. are you sure this code really working? ;)
On Wednesday 12 February 2003 22:59, D.Pageau wrote: > mspgcc win32 build 2002-12-17 from www.mikrocontroller.net fail to > compile working code with -O2 flag. > > Here a example from the TCPIP source. > > memcpy(&TxFrame2[ETH_SA_OFS], &MyMAC, 6); > 1c0c: 3f 40 6d 11 mov #4461, r15 ;#0x116d > 1c10: b2 4f 06 02 mov @r15+, &0x0206 ; > 1c14: b2 4f 08 02 mov @r15+, &0x0208 ; > 1c18: b2 4f 0a 02 mov @r15+, &0x020a ; > memcpy(&TxFrame2[ARP_SENDER_HA_OFS], &MyMAC, 6); // !HERE! 1c38: > b2 > 4f 16 02 mov @r15+, &0x0216 ; > 1c3c: b2 4f 18 02 mov @r15+, &0x0218 ; > 1c40: b2 4f 1a 02 mov @r15+, &0x021a ; > > R15 should be reset to 0x116d in the second call of memcpy. I don't > know if it's a bug in memcpy where the pointer on &MyMAC need some > special keyword like "volatile" or it's a bug un the optimization. > > memcpy(&TxFrame2[ETH_SA_OFS], &MyMAC, 6); > 1c0c: 3f 40 6d 11 mov #4461, r15 ;#0x116d > 1c10: b2 4f 06 02 mov @r15+, &0x0206 ; > 1c14: b2 4f 08 02 mov @r15+, &0x0208 ; > 1c18: b2 4f 0a 02 mov @r15+, &0x020a ; > *(unsigned int *)&TxFrame2[ETH_TYPE_OFS] = SWAPB(FRAME_ARP); > 1c1c: b2 40 08 06 0c 02 mov #1544, &0x020c ;#0x0608 > > // ARP > *(unsigned int *)&TxFrame2[ARP_HARDW_OFS] = SWAPB(HARDW_ETH10); > 1c22: b2 40 00 01 0e 02 mov #256, &0x020e ;#0x0100 > *(unsigned int *)&TxFrame2[ARP_PROT_OFS] = SWAPB(FRAME_IP); > 1c28: b2 42 10 02 mov #8, &0x0210 ;subst r2 with As==11 > *(unsigned int *)&TxFrame2[ARP_HLEN_PLEN_OFS] = SWAPB(IP_HLEN_PLEN); > 1c2c: b2 40 06 04 12 02 mov #1030, &0x0212 ;#0x0406 > *(unsigned int *)&TxFrame2[ARP_OPCODE_OFS] = SWAPB(OP_ARP_REQUEST); > 1c32: b2 40 00 01 14 02 mov #256, &0x0214 ;#0x0100 > memcpy(&TxFrame2[ARP_SENDER_HA_OFS], &MyMAC, 6); // !HERE! 1c38: > b2 > 4f 16 02 mov @r15+, &0x0216 ; > 1c3c: b2 4f 18 02 mov @r15+, &0x0218 ; > 1c40: b2 4f 1a 02 mov @r15+, &0x021a ; -- /******************************************************************** ("`-''-/").___..--''"`-._ (\ Dimmy the Wild UA1ACZ `6_ 6 ) `-. ( ).`-.__.`) Enterprise Information Sys (_Y_.)' ._ ) `._ `. ``-..-' Nevsky prospekt, 20 / 44 _..`--'_..-_/ /--'_.' ,' Saint Petersburg, Russia (il),-'' (li),' ((!.-' +7 (812) 3468202, 5585314 ********************************************************************/