[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