summaryrefslogtreecommitdiff
path: root/examples/stubs.c
diff options
context:
space:
mode:
authorWolfgang Denk <wd@denx.de>2008-04-13 09:42:35 -0700
committerWolfgang Denk <wd@denx.de>2008-04-13 09:42:35 -0700
commit8c8428a576f632745306e288b629e30d420c0f5a (patch)
tree4ff35844d49c2278891d74bb37ff0928ec911b82 /examples/stubs.c
parent7754f33c6fb7a2c050388d20bf3847038558bdcf (diff)
parentd6f98e76a0a7db415e39c94bf3d2ad539ca9c60d (diff)
downloadolio-uboot-2014.01-8c8428a576f632745306e288b629e30d420c0f5a.tar.xz
olio-uboot-2014.01-8c8428a576f632745306e288b629e30d420c0f5a.zip
Merge branch 'master' of /home/wd/git/u-boot/custodians
Diffstat (limited to 'examples/stubs.c')
-rw-r--r--examples/stubs.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/examples/stubs.c b/examples/stubs.c
index b9dbcf906..ec5353216 100644
--- a/examples/stubs.c
+++ b/examples/stubs.c
@@ -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