mirror of
https://github.com/ipxe/ipxe
synced 2025-12-16 17:41:18 +03:00
[reboot] Generalise warm reboot indicator to a flags bitmask
Allow for the possibility of additional reboot types by extending the reboot() function to use a flags bitmask rather than a single flag. Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
@@ -37,13 +37,15 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
|
||||
/**
|
||||
* Reboot system
|
||||
*
|
||||
* @v warm Perform a warm reboot
|
||||
* @v flags Reboot flags
|
||||
*/
|
||||
static void sbi_reboot ( int warm ) {
|
||||
static void sbi_reboot ( int flags ) {
|
||||
struct sbi_return ret;
|
||||
int warm;
|
||||
int rc;
|
||||
|
||||
/* Reboot system */
|
||||
warm = ( flags & REBOOT_WARM );
|
||||
ret = sbi_ecall_2 ( SBI_SRST, SBI_SRST_SYSTEM_RESET,
|
||||
( warm ? SBI_RESET_WARM : SBI_RESET_COLD ), 0 );
|
||||
|
||||
|
||||
@@ -38,14 +38,14 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
|
||||
/**
|
||||
* Reboot system
|
||||
*
|
||||
* @v warm Perform a warm reboot
|
||||
* @v flags Reboot flags
|
||||
*/
|
||||
static void bios_reboot ( int warm ) {
|
||||
uint16_t flag;
|
||||
static void bios_reboot ( int flags ) {
|
||||
uint16_t type;
|
||||
|
||||
/* Configure BIOS for cold/warm reboot */
|
||||
flag = ( warm ? BDA_REBOOT_WARM : 0 );
|
||||
put_real ( flag, BDA_SEG, BDA_REBOOT );
|
||||
type = ( ( flags & REBOOT_WARM ) ? BDA_REBOOT_WARM : 0 );
|
||||
put_real ( type, BDA_SEG, BDA_REBOOT );
|
||||
|
||||
/* Jump to system reset vector */
|
||||
__asm__ __volatile__ ( REAL_CODE ( "ljmp $0xf000, $0xfff0" ) : );
|
||||
|
||||
Reference in New Issue
Block a user