haiku/headers/private/kernel/arch/x86/apm.h
Alex Smith 65ad1ba320 Made it possible to build the bootloader when targetting x86_64.
* x86_64 is using the existing *_ia32 boot platforms.
* Special flags are required when compiling the loader to get GCC to compile
  32-bit code. This adds a new set of rules for compiling boot code rather
  than using the kernel rules, which compile using the necessary flags.
* Some x86_64 private headers have been stubbed by #include'ing the x86
  versions. These will be replaced later.
2012-05-26 21:47:27 +01:00

66 lines
1.4 KiB
C

/*
* Copyright 2006, Axel Dörfler, axeld@pinc-software.de. All rights reserved.
* Distributed under the terms of the MIT License.
*/
#ifndef KERNEL_APM_H
#define KERNEL_APM_H
#include <SupportDefs.h>
#include <arch/x86/apm_defs.h>
struct kernel_args;
// int 0x15 APM definitions
#define BIOS_APM_CHECK 0x5300
#define BIOS_APM_CONNECT_32_BIT 0x5303
#define BIOS_APM_DISCONNECT 0x5304
#define BIOS_APM_CPU_IDLE 0x5305
#define BIOS_APM_CPU_BUSY 0x5306
#define BIOS_APM_SET_STATE 0x5307
#define BIOS_APM_ENABLE 0x5308
#define BIOS_APM_GET_POWER_STATUS 0x530a
#define BIOS_APM_GET_EVENT 0x530b
#define BIOS_APM_GET_STATE 0x530c
#define BIOS_APM_VERSION 0x530e
#define BIOS_APM_ENGAGE 0x530f
// APM devices
#define APM_ALL_DEVICES 0x0001
// APM power states
#define APM_POWER_STATE_ENABLED 0x0000
#define APM_POWER_STATE_STANDBY 0x0001
#define APM_POWER_STATE_SUSPEND 0x0002
#define APM_POWER_STATE_OFF 0x0003
typedef struct apm_info {
uint16 version;
uint16 flags;
uint16 code32_segment_base;
uint32 code32_segment_offset;
uint16 code32_segment_length;
uint16 code16_segment_base;
uint16 code16_segment_length;
uint16 data_segment_base;
uint16 data_segment_length;
} apm_info;
#ifndef _BOOT_MODE
#ifdef __cplusplus
extern "C" {
#endif
status_t apm_shutdown(void);
status_t apm_init(struct kernel_args *args);
#ifdef __cplusplus
}
#endif
#endif // !_BOOT_MODE
#endif /* KERNEL_APM_H */