[Tinyos-beta-commits] CVS: tinyos-1.x/beta/platform/imote2 TrickleM.nc, 1.5, 1.6

Robbie Adler radler at users.sourceforge.net
Mon Sep 19 13:54:03 PDT 2005


Update of /cvsroot/tinyos/tinyos-1.x/beta/platform/imote2
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv20522

Modified Files:
	TrickleM.nc 
Log Message:
updates to help prevent against compiler optimizations causing errors

Index: TrickleM.nc
===================================================================
RCS file: /cvsroot/tinyos/tinyos-1.x/beta/platform/imote2/TrickleM.nc,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** TrickleM.nc	6 Sep 2005 18:06:31 -0000	1.5
--- TrickleM.nc	19 Sep 2005 20:54:01 -0000	1.6
***************
*** 126,146 ****
    }
  
    void reboot(uint32_t imageAddr, uint32_t imageSize) __attribute__((noinline)){
      uint32_t binSize = (uint32_t)&__Binary_Mover_true_end;
      uint8_t *rebootBinary;
      disableDCache();
      binSize -= (uint32_t)__Binary_Mover;
      rebootBinary = (uint8_t *)malloc(binSize);
      memcpy(rebootBinary, __Binary_Mover, binSize);
      //call USBControl.stop();
!     asm volatile(
! 		 "mov r1,%0;  \
! 		 mov r2,%1;   \
!                  mov r3,%2;   \
! 		 mov PC,r3;"
! 		 :/*no output*/
! 		 :"r"(imageAddr), "r"(imageSize), "r"(rebootBinary)
! 		 :"r1","r2","r3","memory");
!     /*everything is clobbered*/
    }
  }
--- 126,145 ----
    }
  
+   typedef  uint8_t (*binaryMoverFunc)(uint32_t addr, uint32_t size);
+   binaryMoverFunc binaryMover;
+  
    void reboot(uint32_t imageAddr, uint32_t imageSize) __attribute__((noinline)){
      uint32_t binSize = (uint32_t)&__Binary_Mover_true_end;
      uint8_t *rebootBinary;
+     //  uint8_t (*binaryMover)(uint32_t addr, uint32_t size); 
+ 
      disableDCache();
      binSize -= (uint32_t)__Binary_Mover;
      rebootBinary = (uint8_t *)malloc(binSize);
      memcpy(rebootBinary, __Binary_Mover, binSize);
+     //binaryMover = (uint8_t (*)(uint32_t, uint32_t))rebootBinary;
+     binaryMover = (binaryMoverFunc)rebootBinary;
      //call USBControl.stop();
!     (*binaryMover)(imageAddr,imageSize);
    }
  }



More information about the Tinyos-beta-commits mailing list