x86_init.h 2.3 KB
Newer Older
1 2 3
#ifndef _ASM_X86_PLATFORM_H
#define _ASM_X86_PLATFORM_H

4
struct mpc_bus;
5
struct mpc_cpu;
6
struct mpc_table;
7

8 9 10
/**
 * struct x86_init_mpparse - platform specific mpparse ops
 * @mpc_record:			platform specific mpc record accounting
11
 * @setup_ioapic_ids:		platform specific ioapic id override
12
 * @mpc_apic_id:		platform specific mpc apic id assignment
13
 * @smp_read_mpc_oem:		platform specific oem mpc table setup
14
 * @mpc_oem_pci_bus:		platform specific pci bus setup (default NULL)
15
 * @mpc_oem_bus_info:		platform specific mpc bus info
16 17
 * @find_smp_config:		find the smp configuration
 * @get_smp_config:		get the smp configuration
18 19 20
 */
struct x86_init_mpparse {
	void (*mpc_record)(unsigned int mode);
21
	void (*setup_ioapic_ids)(void);
22
	int (*mpc_apic_id)(struct mpc_cpu *m);
23
	void (*smp_read_mpc_oem)(struct mpc_table *mpc);
24
	void (*mpc_oem_pci_bus)(struct mpc_bus *m);
25
	void (*mpc_oem_bus_info)(struct mpc_bus *m, char *name);
26 27
	void (*find_smp_config)(unsigned int reserve);
	void (*get_smp_config)(unsigned int early);
28 29
};

30 31 32
/**
 * struct x86_init_resources - platform specific resource related ops
 * @probe_roms:			probe BIOS roms
33 34
 * @reserve_resources:		reserve the standard resources for the
 *				platform
35
 * @reserve_ebda_region:	reserve the extended bios data area
36
 * @memory_setup:		platform specific memory setup
37 38 39 40
 *
 */
struct x86_init_resources {
	void (*probe_roms)(void);
41
	void (*reserve_resources)(void);
42
	void (*reserve_ebda_region)(void);
43
	char *(*memory_setup)(void);
44 45
};

46 47 48 49
/**
 * struct x86_init_irqs - platform specific interrupt setup
 * @pre_vector_init:		init code to run before interrupt vectors
 *				are set up.
50
 * @intr_init:			interrupt init code
51
 * @trap_init:			platform specific trap setup
52 53 54
 */
struct x86_init_irqs {
	void (*pre_vector_init)(void);
55
	void (*intr_init)(void);
56
	void (*trap_init)(void);
57 58
};

59 60 61 62 63 64 65 66
/**
 * struct x86_init_oem - oem platform specific customizing functions
 * @arch_setup:			platform specific architecure setup
 */
struct x86_init_oem {
	void (*arch_setup)(void);
};

67 68 69 70 71
/**
 * struct x86_init_ops - functions for platform specific setup
 *
 */
struct x86_init_ops {
72 73
	struct x86_init_resources	resources;
	struct x86_init_mpparse		mpparse;
74
	struct x86_init_irqs		irqs;
75
	struct x86_init_oem		oem;
76 77 78 79 80
};

extern struct x86_init_ops x86_init;

extern void x86_init_noop(void);
81
extern void x86_init_uint_noop(unsigned int unused);
82 83

#endif