efi_loader: Extract adding a conventional memory in separate routine
[oweals/u-boot.git] / examples / standalone / stubs.c
index a6a9fcf189a4dbf1ad5e0c3044a5a3f97cc9ef0c..0827bde35e581b27b9b7d081fef35ae296c4f698 100644 (file)
@@ -141,19 +141,6 @@ gd_t *global_data;
 "      lwi     r5, r5, %1\n"                   \
 "      bra     r5\n"                           \
        : : "i"(offsetof(gd_t, jt)), "i"(FO(x)) : "r5");
-#elif defined(CONFIG_AVR32)
-/*
- * r6 holds the pointer to the global_data. r8 is call clobbered.
- */
-#define EXPORT_FUNC(f, a, x, ...)                                      \
-       asm volatile(                                   \
-               "       .globl\t" #x "\n"               \
-               #x ":\n"                                \
-               "       ld.w    r8, r6[%0]\n"           \
-               "       ld.w    pc, r8[%1]\n"           \
-               :                                       \
-               : "i"(offsetof(gd_t, jt)), "i"(FO(x))   \
-               : "r8");
 #elif defined(CONFIG_SH)
 /*
  * r13 holds the pointer to the global_data. r1 is a call clobbered.
@@ -185,6 +172,29 @@ gd_t *global_data;
 "      lwi     $r16, [$r16 + (%1)]\n"  \
 "      jr      $r16\n"                 \
        : : "i"(offsetof(gd_t, jt)), "i"(FO(x)) : "$r16");
+#elif defined(CONFIG_RISCV)
+/*
+ * gp holds the pointer to the global_data. t0 is call clobbered.
+ */
+#ifdef CONFIG_ARCH_RV64I
+#define EXPORT_FUNC(f, a, x, ...)      \
+       asm volatile (                  \
+"      .globl " #x "\n"                \
+#x ":\n"                               \
+"      ld      t0, %0(gp)\n"           \
+"      ld      t0, %1(t0)\n"           \
+"      jr      t0\n"                   \
+       : : "i"(offsetof(gd_t, jt)), "i"(FO(x)) : "t0");
+#else
+#define EXPORT_FUNC(f, a, x, ...)      \
+       asm volatile (                  \
+"      .globl " #x "\n"                \
+#x ":\n"                               \
+"      lw      t0, %0(gp)\n"           \
+"      lw      t0, %1(t0)\n"           \
+"      jr      t0\n"                   \
+       : : "i"(offsetof(gd_t, jt)), "i"(FO(x)) : "t0");
+#endif
 #elif defined(CONFIG_ARC)
 /*
  * r25 holds the pointer to the global_data. r10 is call clobbered.