1 /* See COPYRIGHT for copyright information. */
4 #include <inc/string.h>
5 #include <inc/assert.h>
7 #include <kern/monitor.h>
8 #include <kern/console.h>
10 #include <kern/kclock.h>
12 #include <kern/trap.h>
17 extern char edata
[], end
[];
19 // Before doing anything else, complete the ELF loading process.
20 // Clear the uninitialized global data (BSS) section of our program.
21 // This ensures that all static/global variables start out zero.
22 memset(edata
, 0, end
- edata
);
24 // Initialize the console.
25 // Can't call cprintf until after we do this!
28 cprintf("6828 decimal is %o octal!\n", 6828);
30 // Lab 2 memory management initialization functions
34 // Lab 3 user environment initialization functions
38 // Temporary test code specific to LAB 3
40 // Don't touch -- used by grading script!
41 ENV_CREATE2(TEST
, TESTSIZE
);
43 // Touch all you want.
44 ENV_CREATE(user_hello
);
47 // We only have one user environment for now, so just run it.
53 * Variable panicstr contains argument to first call to panic; used as flag
54 * to indicate that the kernel has already called panic.
56 static const char *panicstr
;
59 * Panic is called on unresolvable fatal errors.
60 * It prints "panic: mesg", and then enters the kernel monitor.
63 _panic(const char *file
, int line
, const char *fmt
,...)
72 cprintf("kernel panic at %s:%d: ", file
, line
);
78 /* break into the kernel monitor */
83 /* like panic, but don't */
85 _warn(const char *file
, int line
, const char *fmt
,...)
90 cprintf("kernel warning at %s:%d: ", file
, line
);