1/*
2 * Copyright 2013-2016 Haiku, Inc. All rights reserved.
3 * Distributed under the terms of the MIT License.
4 */
5#ifndef KERNEL_BOOT_PLATFORM_EFI_KERNEL_ARGS_H
6#define KERNEL_BOOT_PLATFORM_EFI_KERNEL_ARGS_H
7
8
9#ifndef KERNEL_BOOT_KERNEL_ARGS_H
10#	error This file is included from <boot/kernel_args.h> only
11#endif
12
13// currently the EFI loader pretends to be the bios_ia32 platform.
14// not quite right, as the kernel needs to be aware of efi runtime services
15
16#include <arch/x86/apm.h>
17#include <boot/disk_identifier.h>
18#include <util/FixedWidthPointer.h>
19
20
21#define SMP_MAX_CPUS 64
22
23#define MAX_PHYSICAL_MEMORY_RANGE 32
24#define MAX_PHYSICAL_ALLOCATED_RANGE 32
25#define MAX_VIRTUAL_ALLOCATED_RANGE 32
26
27#define MAX_SERIAL_PORTS 4
28
29typedef struct bios_drive {
30	struct bios_drive	*next;
31	uint16				drive_number;
32	disk_identifier		identifier;
33} bios_drive;
34
35typedef struct {
36	uint16		serial_base_ports[MAX_SERIAL_PORTS];
37
38	FixedWidthPointer<bios_drive> drives;
39		// this does not contain the boot drive
40	// seems to be ignored entirely?
41
42	apm_info	apm;
43} _PACKED platform_kernel_args;
44
45
46#endif	/* KERNEL_BOOT_PLATFORM_BIOS_IA32_KERNEL_ARGS_H */
47