summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin Getz <robin.getz@analog.com>2009-08-17 15:23:02 +0000
committerTom Rix <Tom.Rix@windriver.com>2009-10-03 09:04:06 -0500
commitced6466ed520749ea73651b45fabeb5a3efa9c8b (patch)
tree2763fa03f67e8bcdfc45e145213c572ce3b76ac1
parentf6e33d95dfe4b95a284d3e960eabc8b04f71b56a (diff)
downloadu-boot-imx-ced6466ed520749ea73651b45fabeb5a3efa9c8b.zip
u-boot-imx-ced6466ed520749ea73651b45fabeb5a3efa9c8b.tar.gz
u-boot-imx-ced6466ed520749ea73651b45fabeb5a3efa9c8b.tar.bz2
Blackfin: change global data register from P5 to P3
Since the Blackfin ABI favors higher scratch registers by default, use the last scratch register (P3) for global data rather than the first (P5). This allows the compiler's register allocator to use higher number scratch P registers, which in turn better matches the Blackfin instruction set, which reduces the size of U-Boot by more than 1024 bytes... Signed-off-by: Robin Getz <robin.getz@analog.com> Signed-off-by: Mike Frysinger <vapier@gentoo.org>
-rw-r--r--README4
-rw-r--r--doc/README.standalone2
-rw-r--r--examples/standalone/stubs.c4
-rw-r--r--include/asm-blackfin/global_data.h2
-rw-r--r--lib_blackfin/config.mk2
5 files changed, 7 insertions, 7 deletions
diff --git a/README b/README
index 246ae2b..c90f6ee 100644
--- a/README
+++ b/README
@@ -3912,10 +3912,10 @@ For PowerPC, the following registers have specific use:
average for all boards 752 bytes for the whole U-Boot image,
624 text + 127 data).
-On Blackfin, the normal C ABI (except for P5) is followed as documented here:
+On Blackfin, the normal C ABI (except for P3) is followed as documented here:
http://docs.blackfin.uclinux.org/doku.php?id=application_binary_interface
- ==> U-Boot will use P5 to hold a pointer to the global data
+ ==> U-Boot will use P3 to hold a pointer to the global data
On ARM, the following registers are used:
diff --git a/doc/README.standalone b/doc/README.standalone
index 81b949a..885c92f 100644
--- a/doc/README.standalone
+++ b/doc/README.standalone
@@ -21,7 +21,7 @@ Design Notes on Exporting U-Boot Functions to Standalone Applications:
2. The pointer to the jump table is passed to the application in a
machine-dependent way. PowerPC, ARM, MIPS and Blackfin architectures
use a dedicated register to hold the pointer to the 'global_data'
- structure: r2 on PowerPC, r8 on ARM, k0 on MIPS, and P5 on Blackfin.
+ structure: r2 on PowerPC, r8 on ARM, k0 on MIPS, and P3 on Blackfin.
The x86 architecture does not use such a register; instead, the
pointer to the 'global_data' structure is passed as 'argv[-1]'
pointer.
diff --git a/examples/standalone/stubs.c b/examples/standalone/stubs.c
index a8cb954..339bbf9 100644
--- a/examples/standalone/stubs.c
+++ b/examples/standalone/stubs.c
@@ -127,14 +127,14 @@ gd_t *global_data;
: : "i"(offsetof(gd_t, jt)), "i"(XF_ ## x * sizeof(void *)) : "r5");
#elif defined(CONFIG_BLACKFIN)
/*
- * P5 holds the pointer to the global_data, P0 is a call-clobbered
+ * P3 holds the pointer to the global_data, P0 is a call-clobbered
* register
*/
#define EXPORT_FUNC(x) \
asm volatile ( \
" .globl _" #x "\n_" \
#x ":\n" \
-" P0 = [P5 + %0]\n" \
+" P0 = [P3 + %0]\n" \
" P0 = [P0 + %1]\n" \
" JUMP (P0)\n" \
: : "i"(offsetof(gd_t, jt)), "i"(XF_ ## x * sizeof(void *)) : "P0");
diff --git a/include/asm-blackfin/global_data.h b/include/asm-blackfin/global_data.h
index 5c9903b..3194b72 100644
--- a/include/asm-blackfin/global_data.h
+++ b/include/asm-blackfin/global_data.h
@@ -66,6 +66,6 @@ typedef struct global_data {
#define GD_FLG_LOGINIT 0x00020 /* Log Buf has been initialized */
#define GD_FLG_DISABLE_CONSOLE 0x00040 /* Disable console (in & out) */
-#define DECLARE_GLOBAL_DATA_PTR register gd_t * volatile gd asm ("P5")
+#define DECLARE_GLOBAL_DATA_PTR register gd_t * volatile gd asm ("P3")
#endif
diff --git a/lib_blackfin/config.mk b/lib_blackfin/config.mk
index a7e3658..34b53e6 100644
--- a/lib_blackfin/config.mk
+++ b/lib_blackfin/config.mk
@@ -28,7 +28,7 @@ CONFIG_BFIN_BOOT_MODE := $(strip $(subst ",,$(CONFIG_BFIN_BOOT_MODE)))
CONFIG_ENV_OFFSET := $(strip $(subst ",,$(CONFIG_ENV_OFFSET)))
CONFIG_ENV_SIZE := $(strip $(subst ",,$(CONFIG_ENV_SIZE)))
-PLATFORM_RELFLAGS += -ffixed-P5 -fomit-frame-pointer -mno-fdpic
+PLATFORM_RELFLAGS += -ffixed-P3 -fomit-frame-pointer -mno-fdpic
PLATFORM_CPPFLAGS += -DCONFIG_BLACKFIN
LDFLAGS += --gc-sections