On 02/11/2023 10:23, Michal Orzel wrote:
/* Address in the runtime mapping to jump to after the MMU is enabled
*/
mov_w lr, primary_switched
@@ -593,6 +603,21 @@ enable_mmu:
mcr CP32(r0, HSCTLR) /* now paging is enabled */
isb /* Now, flush the icache */
+ /*
+ * At this stage, the UART address will depend on whether the
+ * temporary mapping was created or not.
+ *
+ * If it was, then the UART will be mapped in the temporary
+ * area. Otherwise, it will be mapped at runtime virtual
+ * mapping.
+ */
+#ifdef CONFIG_EARLY_PRINTK
+ teq r12, #1 /* Was the temporary mapping created? */
+ mov_w_on_cond eq, r11, TEMPORARY_EARLY_UART_VIRTUAL_ADDRESS
Shouldn't the clobber list be updated?
I missed this comment. I understand it will get clobbered today, but
thinking a bit more, I would actually prefer if r11 is updated to
EARLY_UART_ADDRESS just right after calling switch_to_runtime_mapping.
So we can add more prints in remove_identity_mapping() and
remove_temporary_mapping().
I will have a look to update this patch.
Cheers,
--
Julien Grall