diff --git a/hw/armv7m.c b/hw/armv7m.c
index 034323d..674a8b4 100644
--- a/hw/armv7m.c
+++ b/hw/armv7m.c
@@ -231,8 +231,10 @@ qemu_irq *armv7m_init(int flash_size, int sram_size,
        regular ROM image and perform the normal CPU reset sequence.
        Otherwise jump directly to the entry point.  */
     if (lowaddr == 0) {
-	env->regs[13] = ldl_phys(0);
-	pc = ldl_phys(4);
+        /* roms are not loaded in physical memory until reset */
+        uint32_t *rom = rom_ptr(0);
+        env->regs[13] = rom[0];
+        pc = rom[1];
     } else {
 	pc = entry;
     }
