|
@@ -10,6 +10,27 @@
|
|
|
|
|
|
DECLARE_GLOBAL_DATA_PTR;
|
|
|
|
|
|
+#if defined(CONFIG_NEEDS_MANUAL_RELOC)
|
|
|
+void env_fix_drivers(void)
|
|
|
+{
|
|
|
+ struct env_driver *drv;
|
|
|
+ const int n_ents = ll_entry_count(struct env_driver, env_driver);
|
|
|
+ struct env_driver *entry;
|
|
|
+
|
|
|
+ drv = ll_entry_start(struct env_driver, env_driver);
|
|
|
+ for (entry = drv; entry != drv + n_ents; entry++) {
|
|
|
+ if (entry->name)
|
|
|
+ entry->name += gd->reloc_off;
|
|
|
+ if (entry->load)
|
|
|
+ entry->load += gd->reloc_off;
|
|
|
+ if (entry->save)
|
|
|
+ entry->save += gd->reloc_off;
|
|
|
+ if (entry->init)
|
|
|
+ entry->init += gd->reloc_off;
|
|
|
+ }
|
|
|
+}
|
|
|
+#endif
|
|
|
+
|
|
|
static struct env_driver *_env_driver_lookup(enum env_location loc)
|
|
|
{
|
|
|
struct env_driver *drv;
|