Merge branch 'master' into imxrt1050
diff --git a/Makefile b/Makefile
index 87b6a10..5218010 100644
--- a/Makefile
+++ b/Makefile
@@ -16,6 +16,7 @@
 	@echo " - opentitan"
 	@echo " - hifive1"
 	@echo " - nrf52"
+	@echo " - imxrt1050"
 	@echo " - apollo3"
 	@echo
 	@echo "Run 'make setup' to setup Rust to build libtock-rs."
@@ -152,6 +153,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:
 	cargo clean
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 757e556..b3ba682 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 1a7d74c..cee7571 100755
--- a/tools/flash.sh
+++ b/tools/flash.sh
@@ -40,6 +40,11 @@
         binary_name=rv32imac.elf
         tockload=n
         ;;
+    "imxrt1050")
+        tockloader_flags=""
+        binary_name=cortex-m7.elf
+        tockload=n
+        ;;
     "opentitan")
         tockloader_flags=""
         binary_name=rv32imc.elf