//
// Copyright (C) 2008 Kevin O'Connor <kevin@koconnor.net>
//
-// This file may be distributed under the terms of the GNU GPLv3 license.
+// This file may be distributed under the terms of the GNU LGPLv3 license.
#include "util.h" // dprintf
#include "ioport.h" // outb
debug_serial_setup();
dprintf(1, "In resume (status=%d)\n", status);
+ struct bios_data_area_s *bda = MAKE_FARPTR(SEG_BDA, 0);
switch (status) {
case 0xfe:
- // S3 resume request. Jump to 32bit mode to handle the resume.
- asm volatile(
- "movw %%ax, %%ss\n"
- "movl %0, %%esp\n"
- "pushl $_code32_s3_resume\n"
- "jmp transition32\n"
- : : "i"(BUILD_S3RESUME_STACK_ADDR), "a"(0)
- );
- break;
-
+ if (CONFIG_S3_RESUME) {
+ // S3 resume request. Jump to 32bit mode to handle the resume.
+ asm volatile(
+ "movw %%ax, %%ss\n"
+ "movl %0, %%esp\n"
+ "pushl $_code32_s3_resume\n"
+ "jmp transition32\n"
+ : : "i"(BUILD_S3RESUME_STACK_ADDR), "a"(0)
+ );
+ break;
+ }
+ // NO BREAK
case 0x00:
case 0x09:
case 0x0d ... 0xfd:
// NO BREAK
case 0x0a:
// resume execution by jump via 40h:0067h
-#define bda ((struct bios_data_area_s *)MAKE_FARPTR(SEG_BDA, 0))
asm volatile(
"movw %%ax, %%ds\n"
"ljmpw *%0\n"
void VISIBLE32
s3_resume()
{
+ if (!CONFIG_S3_RESUME)
+ BX_PANIC("S3 resume support not compiled in.\n");
+
dprintf(1, "In 32bit resume\n");
smm_init();