aboutsummaryrefslogtreecommitdiffstats
path: root/disk
diff options
context:
space:
mode:
authorHeiko Schocher2010-09-17 06:10:36 -0500
committerWolfgang Denk2010-09-19 12:29:52 -0500
commit23090dacd2806b71fe536a5f618f37afb23d5407 (patch)
tree1bd5027a82daab0d6fc0cec9399f858bd8f3ae88 /disk
parent4444b221f2682a3377eecfecdef66ddfa9355cf3 (diff)
downloadu-boot-23090dacd2806b71fe536a5f618f37afb23d5407.tar.gz
u-boot-23090dacd2806b71fe536a5f618f37afb23d5407.tar.xz
u-boot-23090dacd2806b71fe536a5f618f37afb23d5407.zip
disk/part.c: fix relocation fixup
Portions of this work were supported by funding from the CE Linux Forum. Signed-off-by: Heiko Schocher <hs@denx.de>
Diffstat (limited to 'disk')
-rw-r--r--disk/part.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/disk/part.c b/disk/part.c
index 1806fe6e18..2b63db6c75 100644
--- a/disk/part.c
+++ b/disk/part.c
@@ -78,13 +78,20 @@ block_dev_desc_t *get_dev(char* ifname, int dev)
78{ 78{
79 const struct block_drvr *drvr = block_drvr; 79 const struct block_drvr *drvr = block_drvr;
80 block_dev_desc_t* (*reloc_get_dev)(int dev); 80 block_dev_desc_t* (*reloc_get_dev)(int dev);
81 char *name;
81 82
82 while (drvr->name) { 83 name = drvr->name;
84#ifndef CONFIG_RELOC_FIXUP_WORKS
85 name += gd->reloc_off;
86#endif
87 while (name) {
88 name = drvr->name;
83 reloc_get_dev = drvr->get_dev; 89 reloc_get_dev = drvr->get_dev;
84#ifndef CONFIG_RELOC_FIXUP_WORKS 90#ifndef CONFIG_RELOC_FIXUP_WORKS
91 name += gd->reloc_off;
85 reloc_get_dev += gd->reloc_off; 92 reloc_get_dev += gd->reloc_off;
86#endif 93#endif
87 if (strncmp(ifname, drvr->name, strlen(drvr->name)) == 0) 94 if (strncmp(ifname, name, strlen(name)) == 0)
88 return reloc_get_dev(dev); 95 return reloc_get_dev(dev);
89 drvr++; 96 drvr++;
90 } 97 }