#include <asm/processor.h>
-void __cpuinit identify_cpu(struct cpuinfo_arm *c)
+void identify_cpu(struct cpuinfo_arm *c)
{
c->midr.bits = READ_SYSREG32(MIDR_EL1);
c->mpidr.bits = READ_SYSREG(MPIDR_EL1);
writel_gicd(GICD_CTL_ENABLE, GICD_CTLR);
}
-static void __cpuinit hip04gic_cpu_init(void)
+static void hip04gic_cpu_init(void)
{
int i;
writel_gicc(0x0, GICC_CTLR);
}
-static void __cpuinit hip04gic_hyp_init(void)
+static void hip04gic_hyp_init(void)
{
uint32_t vtr;
uint8_t nr_lrs;
gicv2_info.nr_lrs = nr_lrs;
}
-static void __cpuinit hip04gic_hyp_disable(void)
+static void hip04gic_hyp_disable(void)
{
writel_gich(0, GICH_HCR);
}
writel_gicd(GICD_CTL_ENABLE, GICD_CTLR);
}
-static void __cpuinit gicv2_cpu_init(void)
+static void gicv2_cpu_init(void)
{
int i;
writel_gicc(0x0, GICC_CTLR);
}
-static void __cpuinit gicv2_hyp_init(void)
+static void gicv2_hyp_init(void)
{
uint32_t vtr;
uint8_t nr_lrs;
gicv2_info.nr_lrs = nr_lrs;
}
-static void __cpuinit gicv2_hyp_disable(void)
+static void gicv2_hyp_disable(void)
{
writel_gich(0, GICH_HCR);
}
return -ENODEV;
}
-static int __cpuinit gicv3_cpu_init(void)
+static int gicv3_cpu_init(void)
{
int i;
uint32_t priority;
isb();
}
-static void __cpuinit gicv3_hyp_init(void)
+static void gicv3_hyp_init(void)
{
uint32_t vtr;
return res;
}
-static void __cpuinit gicv3_hyp_disable(void)
+static void gicv3_hyp_disable(void)
{
uint32_t hcr;
}
/* Set up the per-CPU parts of the GIC for a secondary CPU */
-void __cpuinit gic_init_secondary_cpu(void)
+void gic_init_secondary_cpu(void)
{
gic_hw_ops->secondary_init();
/* Clear LR mask for secondary cpus */
}
}
-void __cpuinit init_maintenance_interrupt(void)
+void init_maintenance_interrupt(void)
{
request_irq(gic_hw_ops->info->maintenance_irq, 0, maintenance_interrupt,
"irq-maintenance", NULL);
return 0;
}
-static int __cpuinit init_local_irq_data(void)
+static int init_local_irq_data(void)
{
int irq;
BUG_ON(init_irq_data() < 0);
}
-void __cpuinit init_secondary_IRQ(void)
+void init_secondary_IRQ(void)
{
BUG_ON(init_local_irq_data() < 0);
}
#endif
/* MMU setup for secondary CPUS (which already have paging enabled) */
-void __cpuinit mmu_init_secondary_cpu(void)
+void mmu_init_secondary_cpu(void)
{
/* From now on, no mapping may be both writable and executable. */
WRITE_SYSREG32(READ_SYSREG32(SCTLR_EL2) | SCTLR_WXN, SCTLR_EL2);
}
/* Boot the current CPU */
-void __cpuinit start_secondary(unsigned long boot_phys_offset,
- unsigned long fdt_paddr,
- unsigned long hwid)
+void start_secondary(unsigned long boot_phys_offset,
+ unsigned long fdt_paddr,
+ unsigned long hwid)
{
unsigned int cpuid = init_data.cpuid;
}
/* Set up the timer interrupt on this CPU */
-void __cpuinit init_timer_interrupt(void)
+void init_timer_interrupt(void)
{
/* Sensible defaults */
WRITE_SYSREG64(0, CNTVOFF_EL2); /* No VM-specific offset */
integer_param("debug_stack_lines", debug_stack_lines);
-void __cpuinit init_traps(void)
+void init_traps(void)
{
/* Setup Hyp vector base */
WRITE_SYSREG((vaddr_t)hyp_traps_vector, VBAR_EL2);
bool_t opt_cpu_info;
boolean_param("cpuinfo", opt_cpu_info);
-int __cpuinit get_model_name(struct cpuinfo_x86 *c)
+int get_model_name(struct cpuinfo_x86 *c)
{
unsigned int *v;
char *p, *q;
}
-void __cpuinit display_cacheinfo(struct cpuinfo_x86 *c)
+void display_cacheinfo(struct cpuinfo_x86 *c)
{
unsigned int dummy, ecx, edx, l2size;
paddr_bits = cpuid_eax(0x80000008) & 0xff;
}
-static void __cpuinit generic_identify(struct cpuinfo_x86 *c)
+static void generic_identify(struct cpuinfo_x86 *c)
{
u32 eax, ebx, ecx, edx, tmp;
/*
* This does the hard work of actually picking apart the CPU stuff...
*/
-void __cpuinit identify_cpu(struct cpuinfo_x86 *c)
+void identify_cpu(struct cpuinfo_x86 *c)
{
int i;
* Check for extended topology enumeration cpuid leaf 0xb and if it
* exists, use it for cpu topology detection.
*/
-void __cpuinit detect_extended_topology(struct cpuinfo_x86 *c)
+void detect_extended_topology(struct cpuinfo_x86 *c)
{
unsigned int eax, ebx, ecx, edx, sub_index;
unsigned int ht_mask_width, core_plus_mask_width;
}
}
-void __cpuinit detect_ht(struct cpuinfo_x86 *c)
+void detect_ht(struct cpuinfo_x86 *c)
{
u32 eax, ebx, ecx, edx;
int index_msb, core_bits;
return apicid;
}
-void __cpuinit print_cpu_info(unsigned int cpu)
+void print_cpu_info(unsigned int cpu)
{
const struct cpuinfo_x86 *c = cpu_data + cpu;
const char *vendor = NULL;
* - Inserts TSS selector into regular and compat GDTs
* - Loads GDT, IDT, TR then null LDT
*/
-void __cpuinit load_system_tables(void)
+void load_system_tables(void)
{
unsigned int cpu = smp_processor_id();
unsigned long stack_bottom = get_stack_bottom(),
* and IDT. We reload them nevertheless, this function acts as a
* 'CPU state barrier', nothing should get across.
*/
-void __cpuinit cpu_init(void)
+void cpu_init(void)
{
int cpu = smp_processor_id();
return 0;
}
-static int __cpuinit find_num_cache_leaves(void)
+static int find_num_cache_leaves(void)
{
unsigned int eax, ebx, ecx, edx;
union _cpuid4_leaf_eax cache_eax;
return i;
}
-unsigned int __cpuinit init_intel_cacheinfo(struct cpuinfo_x86 *c)
+unsigned int init_intel_cacheinfo(struct cpuinfo_x86 *c)
{
unsigned int trace = 0, l1i = 0, l1d = 0, l2 = 0, l3 = 0; /* Cache sizes */
unsigned int new_l1d = 0, new_l1i = 0; /* Cache sizes from cpuid(4) */
(u64)end_pfn << PAGE_SHIFT);
}
-__cpuinit void numa_add_cpu(int cpu)
+void numa_add_cpu(int cpu)
{
cpumask_set_cpu(cpu, &node_to_cpumask[cpu_to_node(cpu)]);
}
-void __cpuinit numa_set_node(int cpu, nodeid_t node)
+void numa_set_node(int cpu, nodeid_t node)
{
cpu_to_node[cpu] = node;
}
fam10h_pci_mmconf_base = start;
}
-void __cpuinit fam10h_check_enable_mmcfg(void)
+void fam10h_check_enable_mmcfg(void)
{
u64 val;
bool_t print = opt_cpu_info;
extern void gic_clear_pending_irqs(struct vcpu *v);
extern int gic_events_need_delivery(void);
-extern void __cpuinit init_maintenance_interrupt(void);
+extern void init_maintenance_interrupt(void);
extern void gic_raise_guest_irq(struct vcpu *v, unsigned int irq,
unsigned int priority);
extern void gic_raise_inflight_irq(struct vcpu *v, unsigned int virtual_irq);
extern void remove_early_mappings(void);
/* Allocate and initialise pagetables for a secondary CPU. Sets init_ttbr to the
* new page table */
-extern int __cpuinit init_secondary_pagetables(int cpu);
+extern int init_secondary_pagetables(int cpu);
/* Switch secondary CPUS to its own pagetables and finalise MMU setup */
-extern void __cpuinit mmu_init_secondary_cpu(void);
+extern void mmu_init_secondary_cpu(void);
/* Set up the xenheap: up to 1GB of contiguous, always-mapped memory.
* Base must be 32MB aligned and size a multiple of 32MB. */
extern void setup_xenheap_mappings(unsigned long base_mfn, unsigned long nr_mfns);
void p2m_vmid_allocator_init(void);
/* Second stage paging setup, to be called on all CPUs */
-void __cpuinit setup_virt_paging(void);
+void setup_virt_paging(void);
/* Init the datastructures for later use by the p2m code */
int p2m_init(struct domain *d);
unsigned int timer_get_irq(enum timer_ppi ppi);
/* Set up the timer interrupt on this CPU */
-extern void __cpuinit init_timer_interrupt(void);
+extern void init_timer_interrupt(void);
/* Counter value at boot time */
extern uint64_t boot_count;
#define mk_unsigned_long(x) x
#endif /* !__ASSEMBLY__ */
-#define __cpuinit
-
#ifdef FLASK_ENABLE
#define XSM_MAGIC 0xf97cff8c
/* Maintain statistics on the access vector cache */