diff -ur tinyos-2.x-orig//tos/platforms/intelmote2/toscrt0.s tinyos-2.x/tos/platforms/intelmote2/toscrt0.s
--- tinyos-2.x-orig//tos/platforms/intelmote2/toscrt0.s	2008-06-11 02:46:26.000000000 +0200
+++ tinyos-2.x/tos/platforms/intelmote2/toscrt0.s	2010-09-20 16:26:37.329515000 +0200
@@ -248,17 +248,21 @@
 	
 	.weak hplarmv_undef, hplarmv_swi, hplarmv_pabort, hplarmv_dabort, hplarmv_reserved, hplarmv_irq, hplarmv_fiq
 
-	.section	.vectors
-	b	reset_handler_start
-	b	hplarmv_undef
-	b	hplarmv_swi
-	b	hplarmv_pabort
-	b	hplarmv_dabort
-	b	hplarmv_reserved
-	b	hplarmv_irq
-	b	hplarmv_fiq
+.section .vectable
+vectable:
+	.word hplarmv_irq
+	.word hplarmv_fiq
+
+.section .entry
+.globl _entry
+_entry:
+	b start
+	
+.section .magic
+	.word 0xcafebabe
+	.word __image_size
 
 .end
 	
 
-	
\ Kein Zeilenumbruch am Dateiende.
+	
diff -ur tinyos-2.x-orig//tos/platforms/intelmote2/tos.x tinyos-2.x/tos/platforms/intelmote2/tos.x
--- tinyos-2.x-orig//tos/platforms/intelmote2/tos.x	2008-06-11 02:42:14.000000000 +0200
+++ tinyos-2.x/tos/platforms/intelmote2/tos.x	2010-09-21 12:01:04.441906972 +0200
@@ -8,9 +8,12 @@
 }
 SECTIONS
 {
-  .text           :
+  .text 0x00400000:
   {
-    *(.vectors)
+    . = 0x20;
+    *(.entry)
+    . = 0x60;
+    *(.magic)
     *(.text .stub .text.* .gnu.linkonce.t.*)
     *(.rodata.*)
     *(.rodata)    
@@ -25,10 +28,14 @@
   .data           : AT (ADDR(.text) + SIZEOF(.text))
   {
     __data_start = . ;
+    *(.vectable)
     *(.data .data.* .gnu.linkonce.d.*)
     *(.gnu.linkonce.d*)
     _edata = .;
     PROVIDE (edata = .);
+    . = ALIGN(4);
+    /* magic at end of data section, denoting end of image */
+	LONG(0xdeadc0de);
   } > data
   .bss SIZEOF(.data) + ADDR(.data) :
   {
@@ -43,6 +50,7 @@
   } >data
    __data_load_start = LOADADDR(.data);
    __data_load_end = __data_load_start + SIZEOF(.data);
+   __image_size = ABSOLUTE(LOADADDR(.data) + SIZEOF(.data)) - ADDR(.text) - 4;
   /* Stabs debugging sections.  */
   .stab          0 : { *(.stab) }
   .stabstr       0 : { *(.stabstr) }
