machdep.h

来自「linux 内核源代码」· C头文件 代码 · 共 179 行

H
179
字号
#ifdef __KERNEL__#ifndef _PPC_MACHDEP_H#define _PPC_MACHDEP_H#include <linux/init.h>#include <linux/kexec.h>#include <asm/setup.h>#include <asm/page.h>struct pt_regs;struct pci_bus;	struct pci_dev;struct seq_file;struct file;/* * This is for compatibility with ARCH=powerpc. */#define machine_is(x)	__MACHINE_IS_##x#define __MACHINE_IS_powermac	0#define __MACHINE_IS_chrp	0#ifdef CONFIG_PPC_PREP#define __MACHINE_IS_prep	1#else#define __MACHINE_IS_prep	0#endif/* We export this macro for external modules like Alsa to know if * ppc_md.feature_call is implemented or not */#define CONFIG_PPC_HAS_FEATURE_CALLSstruct machdep_calls {	void		(*setup_arch)(void);	/* Optional, may be NULL. */	int		(*show_cpuinfo)(struct seq_file *m);	int		(*show_percpuinfo)(struct seq_file *m, int i);	/* Optional, may be NULL. */	unsigned int	(*irq_canonicalize)(unsigned int irq);	void		(*init_IRQ)(void);	int		(*get_irq)(void);		/* A general init function, called by ppc_init in init/main.c.	   May be NULL. DEPRECATED ! */	void		(*init)(void);	/* For compatibility with merged platforms */	void		(*init_early)(void);	void		(*restart)(char *cmd);	void		(*power_off)(void);	void		(*halt)(void);	void		(*idle_loop)(void);	void		(*power_save)(void);	long		(*time_init)(void); /* Optional, may be NULL */	int		(*set_rtc_time)(unsigned long nowtime);	unsigned long	(*get_rtc_time)(void);	unsigned char 	(*rtc_read_val)(int addr);	void		(*rtc_write_val)(int addr, unsigned char val);	void		(*calibrate_decr)(void);	void		(*heartbeat)(void);	unsigned long	heartbeat_reset;	unsigned long	heartbeat_count;	unsigned long	(*find_end_of_memory)(void);	void		(*setup_io_mappings)(void);	void		(*early_serial_map)(void);  	void		(*progress)(char *, unsigned short);	void		(*kgdb_map_scc)(void);	unsigned char 	(*nvram_read_val)(int addr);	void		(*nvram_write_val)(int addr, unsigned char val);	void		(*nvram_sync)(void);	/*	 * optional PCI "hooks"	 */	/* Called after scanning the bus, before allocating resources */	void (*pcibios_fixup)(void);	/* Called after PPC generic resource fixup to perform	   machine specific fixups */	void (*pcibios_fixup_resources)(struct pci_dev *);	/* Called for each PCI bus in the system when it's probed */	void (*pcibios_fixup_bus)(struct pci_bus *);	/* Called when pci_enable_device() is called (initial=0) or	 * when a device with no assigned resource is found (initial=1).	 * Returns 0 to allow assignment/enabling of the device. */	int  (*pcibios_enable_device_hook)(struct pci_dev *, int initial);	/* For interrupt routing */	unsigned char (*pci_swizzle)(struct pci_dev *, unsigned char *);	int (*pci_map_irq)(struct pci_dev *, unsigned char, unsigned char);	/* Called in indirect_* to avoid touching devices */	int (*pci_exclude_device)(unsigned char, unsigned char);	/* Called at then very end of pcibios_init() */	void (*pcibios_after_init)(void);	/* Get access protection for /dev/mem */	pgprot_t	(*phys_mem_access_prot)(struct file *file,						unsigned long pfn,						unsigned long size,						pgprot_t vma_prot);	/* Motherboard/chipset features. This is a kind of general purpose	 * hook used to control some machine specific features (like reset	 * lines, chip power control, etc...).	 */	long (*feature_call)(unsigned int feature, ...);#ifdef CONFIG_SMP	/* functions for dealing with other cpus */	struct smp_ops_t *smp_ops;#endif /* CONFIG_SMP */#ifdef CONFIG_KEXEC	/* Called to shutdown machine specific hardware not already controlled	 * by other drivers.	 * XXX Should we move this one out of kexec scope?	 */	void (*machine_shutdown)(void);	/* Called to do the minimal shutdown needed to run a kexec'd kernel	 * to run successfully.	 * XXX Should we move this one out of kexec scope?	 */	void (*machine_crash_shutdown)(void);	/* Called to do what every setup is needed on image and the	 * reboot code buffer. Returns 0 on success.	 * Provide your own (maybe dummy) implementation if your platform	 * claims to support kexec.	 */	int (*machine_kexec_prepare)(struct kimage *image);	/* Called to handle any machine specific cleanup on image */	void (*machine_kexec_cleanup)(struct kimage *image);	/* Called to perform the _real_ kexec.	 * Do NOT allocate memory or fail here. We are past the point of	 * no return.	 */	void (*machine_kexec)(struct kimage *image);#endif /* CONFIG_KEXEC */};extern struct machdep_calls ppc_md;extern char cmd_line[COMMAND_LINE_SIZE];extern void setup_pci_ptrs(void);#ifdef CONFIG_SMPstruct smp_ops_t {	void  (*message_pass)(int target, int msg);	int   (*probe)(void);	void  (*kick_cpu)(int nr);	void  (*setup_cpu)(int nr);	void  (*space_timers)(int nr);	void  (*take_timebase)(void);	void  (*give_timebase)(void);};/* Poor default implementations */extern void __devinit smp_generic_give_timebase(void);extern void __devinit smp_generic_take_timebase(void);#endif /* CONFIG_SMP */#endif /* _PPC_MACHDEP_H */#endif /* __KERNEL__ */

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?