arm64: zynqmp: Define routines for mmio write and read
[oweals/u-boot.git] / arch / arm / cpu / armv8 / sec_firmware_asm.S
index 0c6a46249a262b9619067bc133b135c8c1fd2f76..30563ebe7be4a4e525f94e47dfcc191b79e721b8 100644 (file)
@@ -23,12 +23,12 @@ WEAK(_sec_firmware_entry)
        /* Set exception return address hold pointer */
         adr    x4, 1f
         mov    x3, x4
-#ifdef SEC_FIRMWARE_ERET_ADDR_REVERT
+#ifdef CONFIG_ARMV8_SEC_FIRMWARE_ERET_ADDR_REVERT
         rev    w3, w3
 #endif
         str    w3, [x1]
         lsr    x3, x4, #32
-#ifdef SEC_FIRMWARE_ERET_ADDR_REVERT
+#ifdef CONFIG_ARMV8_SEC_FIRMWARE_ERET_ADDR_REVERT
         rev    w3, w3
 #endif
         str    w3, [x2]
@@ -41,7 +41,7 @@ WEAK(_sec_firmware_entry)
         ret
 ENDPROC(_sec_firmware_entry)
 
-#ifdef CONFIG_ARMV8_PSCI
+#ifdef CONFIG_SEC_FIRMWARE_ARMV8_PSCI
 ENTRY(_sec_firmware_support_psci_version)
        mov     x0, 0x84000000
        mov     x1, 0x0
@@ -50,4 +50,27 @@ ENTRY(_sec_firmware_support_psci_version)
        smc     #0
        ret
 ENDPROC(_sec_firmware_support_psci_version)
+
+/*
+ * Switch from AArch64 EL2 to AArch32 EL2
+ * @param inputs:
+ * x0: argument, zero
+ * x1: machine nr
+ * x2: fdt address
+ * x3: input argument
+ * x4: kernel entry point
+ * @param outputs for secure firmware:
+ * x0: function id
+ * x1: kernel entry point
+ * x2: machine nr
+ * x3: fdt address
+*/
+ENTRY(armv8_el2_to_aarch32)
+       mov     x3, x2
+       mov     x2, x1
+       mov     x1, x4
+       ldr     x0, =0xc000ff04
+       smc     #0
+       ret
+ENDPROC(armv8_el2_to_aarch32)
 #endif