diff options
author | Isaku Yamahata <yamahata@valinux.co.jp> | 2008-05-19 09:13:41 -0400 |
---|---|---|
committer | Tony Luck <tony.luck@intel.com> | 2008-05-27 18:10:06 -0400 |
commit | e51835d58a5abdf82211f36f500f666ca7ef9aee (patch) | |
tree | 84a90efb1f0a5e3ac2b0e8fa64d29cf2e8942315 /include/asm-ia64 | |
parent | 213060a4d6991a95d0b9344406d195be3464accf (diff) |
[IA64] pvops: define initialization hooks, pv_init_ops, for paravirtualized environment.
define pv_init_ops hooks which represents various initialization
hooks for paravirtualized environment. and add hooks.
Signed-off-by: Alex Williamson <alex.williamson@hp.com>
Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
Signed-off-by: Tony Luck <tony.luck@intel.com>
Diffstat (limited to 'include/asm-ia64')
-rw-r--r-- | include/asm-ia64/paravirt.h | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/include/asm-ia64/paravirt.h b/include/asm-ia64/paravirt.h index 1032b216aea6..84d74c32eb98 100644 --- a/include/asm-ia64/paravirt.h +++ b/include/asm-ia64/paravirt.h | |||
@@ -55,11 +55,81 @@ static inline unsigned int get_kernel_rpl(void) | |||
55 | return pv_info.kernel_rpl; | 55 | return pv_info.kernel_rpl; |
56 | } | 56 | } |
57 | 57 | ||
58 | /****************************************************************************** | ||
59 | * initialization hooks. | ||
60 | */ | ||
61 | struct rsvd_region; | ||
62 | |||
63 | struct pv_init_ops { | ||
64 | void (*banner)(void); | ||
65 | |||
66 | int (*reserve_memory)(struct rsvd_region *region); | ||
67 | |||
68 | void (*arch_setup_early)(void); | ||
69 | void (*arch_setup_console)(char **cmdline_p); | ||
70 | int (*arch_setup_nomca)(void); | ||
71 | |||
72 | void (*post_smp_prepare_boot_cpu)(void); | ||
73 | }; | ||
74 | |||
75 | extern struct pv_init_ops pv_init_ops; | ||
76 | |||
77 | static inline void paravirt_banner(void) | ||
78 | { | ||
79 | if (pv_init_ops.banner) | ||
80 | pv_init_ops.banner(); | ||
81 | } | ||
82 | |||
83 | static inline int paravirt_reserve_memory(struct rsvd_region *region) | ||
84 | { | ||
85 | if (pv_init_ops.reserve_memory) | ||
86 | return pv_init_ops.reserve_memory(region); | ||
87 | return 0; | ||
88 | } | ||
89 | |||
90 | static inline void paravirt_arch_setup_early(void) | ||
91 | { | ||
92 | if (pv_init_ops.arch_setup_early) | ||
93 | pv_init_ops.arch_setup_early(); | ||
94 | } | ||
95 | |||
96 | static inline void paravirt_arch_setup_console(char **cmdline_p) | ||
97 | { | ||
98 | if (pv_init_ops.arch_setup_console) | ||
99 | pv_init_ops.arch_setup_console(cmdline_p); | ||
100 | } | ||
101 | |||
102 | static inline int paravirt_arch_setup_nomca(void) | ||
103 | { | ||
104 | if (pv_init_ops.arch_setup_nomca) | ||
105 | return pv_init_ops.arch_setup_nomca(); | ||
106 | return 0; | ||
107 | } | ||
108 | |||
109 | static inline void paravirt_post_smp_prepare_boot_cpu(void) | ||
110 | { | ||
111 | if (pv_init_ops.post_smp_prepare_boot_cpu) | ||
112 | pv_init_ops.post_smp_prepare_boot_cpu(); | ||
113 | } | ||
114 | |||
58 | #endif /* !__ASSEMBLY__ */ | 115 | #endif /* !__ASSEMBLY__ */ |
59 | 116 | ||
60 | #else | 117 | #else |
61 | /* fallback for native case */ | 118 | /* fallback for native case */ |
62 | 119 | ||
120 | #ifndef __ASSEMBLY__ | ||
121 | |||
122 | #define paravirt_banner() do { } while (0) | ||
123 | #define paravirt_reserve_memory(region) 0 | ||
124 | |||
125 | #define paravirt_arch_setup_early() do { } while (0) | ||
126 | #define paravirt_arch_setup_console(cmdline_p) do { } while (0) | ||
127 | #define paravirt_arch_setup_nomca() 0 | ||
128 | #define paravirt_post_smp_prepare_boot_cpu() do { } while (0) | ||
129 | |||
130 | #endif /* __ASSEMBLY__ */ | ||
131 | |||
132 | |||
63 | #endif /* CONFIG_PARAVIRT_GUEST */ | 133 | #endif /* CONFIG_PARAVIRT_GUEST */ |
64 | 134 | ||
65 | #endif /* __ASM_PARAVIRT_H */ | 135 | #endif /* __ASM_PARAVIRT_H */ |