x86, reboot: Move the real-mode reboot code to an assembly file
Move the real-mode reboot code out to an assembly file (reboot_32.S) which is allocated using the common lowmem trampoline allocator. Signed-off-by: H. Peter Anvin <hpa@linux.intel.com> LKML-Reference: <4D5DFBE4.7090104@intel.com> Cc: Stephen Rothwell <sfr@canb.auug.org.au> Cc: Rafael J. Wysocki <rjw@sisk.pl> Cc: Matthieu Castet <castet.matthieu@free.fr>
This commit is contained in:
@@ -975,20 +975,10 @@ recalc:
|
||||
|
||||
static void apm_power_off(void)
|
||||
{
|
||||
unsigned char po_bios_call[] = {
|
||||
0xb8, 0x00, 0x10, /* movw $0x1000,ax */
|
||||
0x8e, 0xd0, /* movw ax,ss */
|
||||
0xbc, 0x00, 0xf0, /* movw $0xf000,sp */
|
||||
0xb8, 0x07, 0x53, /* movw $0x5307,ax */
|
||||
0xbb, 0x01, 0x00, /* movw $0x0001,bx */
|
||||
0xb9, 0x03, 0x00, /* movw $0x0003,cx */
|
||||
0xcd, 0x15 /* int $0x15 */
|
||||
};
|
||||
|
||||
/* Some bioses don't like being called from CPU != 0 */
|
||||
if (apm_info.realmode_power_off) {
|
||||
set_cpus_allowed_ptr(current, cpumask_of(0));
|
||||
machine_real_restart(po_bios_call, sizeof(po_bios_call));
|
||||
machine_real_restart(MRR_APM);
|
||||
} else {
|
||||
(void)set_system_power_state(APM_STATE_OFF);
|
||||
}
|
||||
|
Reference in New Issue
Block a user