19,21 → 19,57 |
* For legalese, check out the included GPL license. |
*/ |
|
#include <ll/i386/hw-func.h> |
|
#include <ll/i386/stdlib.h> |
#include <ll/unistd.h> |
|
FILE(stdlib); |
|
int ll_exit_mode = EXIT_MODE_REAL; |
|
unsigned abs(int x) |
{ |
if (x < 0) return(-x); |
else return(x); |
if (x < 0) return(-x); |
else return(x); |
} |
|
int ll_set_reboot(int mode) |
{ |
switch(mode) { |
case EXIT_MODE_HALT: |
ll_exit_mode = EXIT_MODE_HALT; |
break; |
case EXIT_MODE_COLD: |
ll_exit_mode = EXIT_MODE_COLD; |
break; |
case EXIT_MODE_WARM: |
ll_exit_mode = EXIT_MODE_WARM; |
break; |
default: |
ll_exit_mode = EXIT_MODE_REAL; |
break; |
} |
return ll_exit_mode; |
} |
|
void l1_exit(int code) |
{ |
extern void bios_restore(void); |
extern void bios_restore(void); |
|
bios_restore(); |
__exit(code); |
bios_restore(); |
switch (ll_exit_mode) { |
case EXIT_MODE_HALT: |
halt(); |
break; |
case EXIT_MODE_COLD: |
cold_reboot(); |
break; |
case EXIT_MODE_WARM: |
warm_reboot(); |
break; |
default: |
__exit(code); |
break; |
} |
} |