diff --git a/common/startup.c b/common/startup.c index 0f67ca4..f0448e6 100644 --- a/common/startup.c +++ b/common/startup.c @@ -86,18 +86,26 @@ .platform_data = &default_env_platform_data, }; -static void register_default_env(void) +static int register_default_env(void) { default_env_dev.map_base = (unsigned long)default_environment; default_env_dev.size = sizeof(default_environment); register_device(&default_env_dev); + return 0; } -#else -static void register_default_env(void) -{ -} + +device_initcall(register_default_env); #endif +static int mount_root(void) +{ + mount("none", "ramfs", "/"); + mkdir("/dev", 0); + mount("none", "devfs", "/dev"); + return 0; +} +fs_initcall(mount_root); + void start_uboot (void) { initcall_t *initcall; @@ -125,12 +133,6 @@ display_meminfo(); - register_default_env(); - - mount("none", "ramfs", "/"); - mkdir("/dev", 0); - mount("none", "devfs", "/dev"); - #ifdef CONFIG_ENV_HANDLING if (envfs_load("/dev/env0", "/env")) { #ifdef CONFIG_DEFAULT_ENVIRONMENT diff --git a/include/init.h b/include/init.h index 6ddca92..eb606f3 100644 --- a/include/init.h +++ b/include/init.h @@ -12,8 +12,9 @@ #define postcore_initcall(fn) __define_initcall("1",fn,1) #define console_initcall(fn) __define_initcall("2",fn,2) #define coredevice_initcall(fn) __define_initcall("4",fn,4) -#define device_initcall(fn) __define_initcall("5",fn,5) -#define late_initcall(fn) __define_initcall("6",fn,6) +#define fs_initcall(fn) __define_initcall("5",fn,5) +#define device_initcall(fn) __define_initcall("6",fn,6) +#define late_initcall(fn) __define_initcall("7",fn,7) /* section for code used very early when * - we're not running from where we linked at