]> git.ipfire.org Git - people/ms/u-boot.git/blobdiff - examples/stubs.c
* Patch by Scott McNutt, 04 Oct 2003:
[people/ms/u-boot.git] / examples / stubs.c
index 9c4c51b0e4f527eb5ea9928213225d5a465d700d..6ca6d78694fada47496ce3dcd12fa2b0fdd64198 100644 (file)
@@ -61,6 +61,23 @@ gd_t *global_data;
 "      lw      $25, %1($25)\n"         \
 "      jr      $25\n"                  \
        : : "i"(offsetof(gd_t, jt)), "i"(XF_ ## x * sizeof(void *)) : "t9");
+#elif defined(CONFIG_NIOS)
+/*
+ * %g7 holds the pointer to the global_data. %g0 is call clobbered.
+ */
+#define EXPORT_FUNC(x) \
+       asm volatile (                  \
+"      .globl " #x "\n"                \
+#x ":\n"                               \
+"      pfx     %%hi(%0)\n"             \
+"      movi    %%g0, %%lo(%0)\n"       \
+"      add     %%g0, %%g7\n"           \
+"      ld      %%g0, [%%g0]\n"         \
+"      pfx     %1\n"                   \
+"      ld      %%g0, [%%g0]\n"         \
+"      jmp     %%g0\n"                 \
+"      nop     \n"                     \
+       : : "i"(offsetof(gd_t, jt)), "i"(XF_ ## x) : "r0");
 #else
 #error stubs definition missing for this architecture
 #endif