summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/core/main.c27
1 files changed, 13 insertions, 14 deletions
diff --git a/src/core/main.c b/src/core/main.c
index 7d411d6a5..aac27e9ba 100644
--- a/src/core/main.c
+++ b/src/core/main.c
@@ -78,24 +78,23 @@ __asmcall int main ( void ) {
printf ( " %s", feature->name );
printf ( "\n" );
- /* Prompt for shell */
- if ( shell_banner() ) {
- /* User wants shell; just give them a shell */
- shell();
+ /* Boot system */
+ if ( ( image = first_image() ) != NULL ) {
+ /* We have an embedded image; execute it */
+ image_exec ( image );
} else {
- /* User doesn't want shell; load and execute the first
- * image, or autoboot() if we have no images. If
- * booting fails for any reason, offer a second chance
- * to enter the shell for diagnostics.
- */
- if ( ( image = first_image() ) != NULL ) {
- image_exec ( image );
+ /* Prompt for shell */
+ if ( shell_banner() ) {
+ /* User wants shell; just give them a shell */
+ shell();
} else {
+ /* Try booting. If booting fails, offer the
+ * user another chance to enter the shell.
+ */
autoboot();
+ if ( shell_banner() )
+ shell();
}
-
- if ( shell_banner() )
- shell();
}
shutdown_exit();