Added imxrt1050 board
diff --git a/Makefile b/Makefile
index f1f6dd5..650f4e6 100644
--- a/Makefile
+++ b/Makefile
@@ -14,6 +14,7 @@
 	@echo " - opentitan"
 	@echo " - hifive1"
 	@echo " - nrf52"
+	@echo " - imxrt1050"
 	@echo
 	@echo "Run 'make setup' to setup Rust to build libtock-rs."
 	@echo "Run 'make <board>' to build libtock-rs for that board"
@@ -47,6 +48,7 @@
 	PLATFORM=nrf52 cargo build --release --target=thumbv7em-none-eabi --example panic --features=custom_panic_handler,custom_alloc_error_handler
 	PLATFORM=nrf52 cargo build --release --target=thumbv7em-none-eabi --example alloc_error --features=alloc,custom_alloc_error_handler
 	PLATFORM=opentitan cargo build --release --target=riscv32imc-unknown-none-elf --examples # Important: This is testing a platform without atomics support
+	PLATFORM=imxrt1050 cargo build --release --target=thumbv7em-none-eabi --examples --features=alloc
 
 .PHONY: test
 test:
@@ -107,6 +109,15 @@
 flash-nrf52:
 	PLATFORM=nrf52 cargo run $(release) --target=thumbv7em-none-eabi --example $(EXAMPLE) $(features)
 
+.PHONY: imxrt1050
+imxrt1050:
+	PLATFORM=imxrt1050 cargo build $(release) --target=thumbv7em-none-eabi --examples $(features)
+
+.PHONY: flash-imxrt1050
+flash-imxrt1050:
+	PLATFORM=imxrt1050 cargo run $(release) --target=thumbv7em-none-eabi --example $(EXAMPLE) $(features)
+
+
 .PHONY: clean
 clean:
 	rm -rf target
diff --git a/boards/layout_imxrt1050.ld b/boards/layout_imxrt1050.ld
new file mode 100644
index 0000000..a29c369
--- /dev/null
+++ b/boards/layout_imxrt1050.ld
@@ -0,0 +1,18 @@
+/* Layout for the iMX.RT1050 board, used by the examples in this repository. */
+
+MEMORY {
+  /* The application region is 64 bytes (0x40) */
+  FLASH (rx) : ORIGIN = 0x63002040, LENGTH = 0xFFFFC0
+  SRAM (rwx) : ORIGIN = 0x20004000, LENGTH = 112K
+}
+
+/*
+ * Any change to STACK_SIZE should be accompanied by a corresponding change to
+ * `elf2tab`'s `--stack` option
+ */
+STACK_SIZE = 2048;
+
+MPU_MIN_ALIGN = 8K;
+
+INCLUDE layout_generic.ld
+
diff --git a/core/src/entry_point/start_item_arm.rs b/core/src/entry_point/start_item_arm.rs
index c9390f6..43e259f 100644
--- a/core/src/entry_point/start_item_arm.rs
+++ b/core/src/entry_point/start_item_arm.rs
@@ -23,7 +23,8 @@
         // the Program Counter) will match the intended location of .start. We
         // don't have an easy way to signal an error, so for now we just yield
         // if the location is wrong.
-        sub r4, pc, #4    // r4 = pc
+        mov r4, pc
+        sub r4, r4, #4    // r4 = pc
         ldr r5, =.start   // r5 = address of .start
         cmp r4, r5
         beq .Lstack_init  // Jump to stack initialization if pc was correct
diff --git a/tools/flash.sh b/tools/flash.sh
index f24127e..fe9e62b 100755
--- a/tools/flash.sh
+++ b/tools/flash.sh
@@ -3,7 +3,7 @@
 set -eux
 
 artifact="$(basename $1)"
-rust_target_folder="$(readlink -f $(dirname $1)/../..)"
+rust_target_folder="$(greadlink -f $(dirname $1)/../..)"
 if [ -z $APP_HEAP_SIZE ]; then
 	echo "Set APP_HEAP_SIZE to a value"
 	exit 1
@@ -35,6 +35,11 @@
         binary_name=rv32imac.elf
         tockload=n
         ;;
+    "imxrt1050")
+        tockloader_flags=""
+        binary_name=cortex-m7.elf
+        tockload=n
+        ;;
     "opentitan")
         tockloader_flags=""
         binary_name=rv32imc.elf