vserver 1.9.5.x5
[linux-2.6.git] / include / asm-ppc64 / machdep.h
index bb961a0..476d218 100644 (file)
 
 #include <linux/config.h>
 #include <linux/seq_file.h>
+#include <linux/init.h>
 #include <linux/dma-mapping.h>
 
+#include <asm/setup.h>
+
 struct pt_regs;
 struct pci_bus;        
 struct device_node;
@@ -27,6 +30,8 @@ struct smp_ops_t {
        void  (*setup_cpu)(int nr);
        void  (*take_timebase)(void);
        void  (*give_timebase)(void);
+       int   (*cpu_disable)(void);
+       void  (*cpu_die)(unsigned int nr);
 };
 #endif
 
@@ -53,6 +58,9 @@ struct machdep_calls {
        void            (*flush_hash_range)(unsigned long context,
                                            unsigned long number,
                                            int local);
+       /* special for kexec, to be called in real mode, linar mapping is
+        * destroyed as well */
+       void            (*hpte_clear_all)(void);
 
        void            (*tce_build)(struct iommu_table * tbl,
                                     long index,
@@ -63,8 +71,12 @@ struct machdep_calls {
                                    long index,
                                    long npages);
        void            (*tce_flush)(struct iommu_table *tbl);
+       void            (*iommu_dev_setup)(struct pci_dev *dev);
+       void            (*iommu_bus_setup)(struct pci_bus *bus);
 
+       int             (*probe)(int platform);
        void            (*setup_arch)(void);
+       void            (*init_early)(void);
        /* Optional, may be NULL. */
        void            (*get_cpuinfo)(struct seq_file *m);
 
@@ -74,13 +86,11 @@ struct machdep_calls {
        /* PCI stuff */
        void            (*pcibios_fixup)(void);
 
-       /* Optional, may be NULL. */
-       void            (*init)(void);
-
        void            (*restart)(char *cmd);
        void            (*power_off)(void);
        void            (*halt)(void);
        void            (*panic)(char *str);
+       void            (*cpu_die)(void);
 
        int             (*set_rtc_time)(struct rtc_time *);
        void            (*get_rtc_time)(struct rtc_time *);
@@ -103,18 +113,26 @@ struct machdep_calls {
        ssize_t         (*nvram_size)(void);            
        int             (*nvram_sync)(void);
 
+       /* Exception handlers */
+       void            (*system_reset_exception)(struct pt_regs *regs);
+       int             (*machine_check_exception)(struct pt_regs *regs);
+
        /* 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, ...);
 
+       /* Check availability of legacy devices like i8042 */
+       int             (*check_legacy_ioport)(unsigned int baseport);
+
+       /* Get legacy PCI/IDE interrupt mapping */ 
+       int             (*pci_get_legacy_ide_irq)(struct pci_dev *dev, int channel);
+       
 };
 
 extern struct machdep_calls ppc_md;
-#define COMMAND_LINE_SIZE 512
 extern char cmd_line[COMMAND_LINE_SIZE];
-extern char saved_command_line[COMMAND_LINE_SIZE];
 
 /* Functions to produce codes on the leds.
  * The SRC code should be unique for the message category and should