diff options
author | Heiko Schocher | 2010-09-17 06:10:36 -0500 |
---|---|---|
committer | Wolfgang Denk | 2010-09-19 12:29:52 -0500 |
commit | 23090dacd2806b71fe536a5f618f37afb23d5407 (patch) | |
tree | 1bd5027a82daab0d6fc0cec9399f858bd8f3ae88 /disk | |
parent | 4444b221f2682a3377eecfecdef66ddfa9355cf3 (diff) | |
download | u-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.c | 11 |
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 | } |