]> git.kernelconcepts.de Git - karo-tx-uboot.git/blobdiff - examples/stubs.c
Merge branch 'master' of /home/wd/git/u-boot/custodians
[karo-tx-uboot.git] / examples / stubs.c
index b9dbcf9065b9a8e635f1c1b9f5bcb9b99b391145..ec5353216b54983aa95a996def7597945cc888c0 100644 (file)
@@ -167,6 +167,22 @@ gd_t *global_data;
                "       nop\n"                          \
                "       nop\n"                          \
                : : "i"(offsetof(gd_t, jt)), "i"(XF_ ## x * sizeof(void *)) : "r1");
+#elif defined(CONFIG_SPARC)
+/*
+ * g7 holds the pointer to the global_data. g1 is call clobbered.
+ */
+#define EXPORT_FUNC(x)                                 \
+       asm volatile(                                   \
+"      .globl\t" #x "\n"                               \
+#x ":\n"                                               \
+"      set %0, %%g1\n"                                 \
+"      or %%g1, %%g7, %%g1\n"                          \
+"      ld [%%g1], %%g1\n"                              \
+"      ld [%%g1 + %1], %%g1\n"                         \
+"      call %%g1\n"                                    \
+"      nop\n"                                          \
+       : : "i"(offsetof(gd_t, jt)), "i"(XF_ ## x) : "g1" );
+
 #else
 #error stubs definition missing for this architecture
 #endif