diff options
Diffstat (limited to 'arch/ia64/kernel')
-rw-r--r-- | arch/ia64/kernel/acpi.c | 19 | ||||
-rw-r--r-- | arch/ia64/kernel/cyclone.c | 14 | ||||
-rw-r--r-- | arch/ia64/kernel/head.S | 4 | ||||
-rw-r--r-- | arch/ia64/kernel/irq_ia64.c | 26 | ||||
-rw-r--r-- | arch/ia64/kernel/machvec.c | 27 | ||||
-rw-r--r-- | arch/ia64/kernel/process.c | 7 | ||||
-rw-r--r-- | arch/ia64/kernel/setup.c | 11 | ||||
-rw-r--r-- | arch/ia64/kernel/smp.c | 2 | ||||
-rw-r--r-- | arch/ia64/kernel/smpboot.c | 6 | ||||
-rw-r--r-- | arch/ia64/kernel/time.c | 4 | ||||
-rw-r--r-- | arch/ia64/kernel/vmlinux.lds.S | 2 |
11 files changed, 79 insertions, 43 deletions
diff --git a/arch/ia64/kernel/acpi.c b/arch/ia64/kernel/acpi.c index 103dd8edda71..c6ede8780ded 100644 --- a/arch/ia64/kernel/acpi.c +++ b/arch/ia64/kernel/acpi.c | |||
@@ -67,6 +67,8 @@ EXPORT_SYMBOL(pm_power_off); | |||
67 | unsigned int acpi_cpei_override; | 67 | unsigned int acpi_cpei_override; |
68 | unsigned int acpi_cpei_phys_cpuid; | 68 | unsigned int acpi_cpei_phys_cpuid; |
69 | 69 | ||
70 | unsigned long acpi_wakeup_address = 0; | ||
71 | |||
70 | const char __init * | 72 | const char __init * |
71 | acpi_get_sysname(void) | 73 | acpi_get_sysname(void) |
72 | { | 74 | { |
@@ -986,4 +988,21 @@ int acpi_unregister_ioapic(acpi_handle handle, u32 gsi_base) | |||
986 | 988 | ||
987 | EXPORT_SYMBOL(acpi_unregister_ioapic); | 989 | EXPORT_SYMBOL(acpi_unregister_ioapic); |
988 | 990 | ||
991 | /* | ||
992 | * acpi_save_state_mem() - save kernel state | ||
993 | * | ||
994 | * TBD when when IA64 starts to support suspend... | ||
995 | */ | ||
996 | int acpi_save_state_mem(void) { return 0; } | ||
997 | |||
998 | /* | ||
999 | * acpi_restore_state() | ||
1000 | */ | ||
1001 | void acpi_restore_state_mem(void) {} | ||
1002 | |||
1003 | /* | ||
1004 | * do_suspend_lowlevel() | ||
1005 | */ | ||
1006 | void do_suspend_lowlevel(void) {} | ||
1007 | |||
989 | #endif /* CONFIG_ACPI */ | 1008 | #endif /* CONFIG_ACPI */ |
diff --git a/arch/ia64/kernel/cyclone.c b/arch/ia64/kernel/cyclone.c index 2fd96d9062a1..790ef0d87e12 100644 --- a/arch/ia64/kernel/cyclone.c +++ b/arch/ia64/kernel/cyclone.c | |||
@@ -38,11 +38,11 @@ static struct clocksource clocksource_cyclone = { | |||
38 | 38 | ||
39 | int __init init_cyclone_clock(void) | 39 | int __init init_cyclone_clock(void) |
40 | { | 40 | { |
41 | u64* reg; | 41 | u64 __iomem *reg; |
42 | u64 base; /* saved cyclone base address */ | 42 | u64 base; /* saved cyclone base address */ |
43 | u64 offset; /* offset from pageaddr to cyclone_timer register */ | 43 | u64 offset; /* offset from pageaddr to cyclone_timer register */ |
44 | int i; | 44 | int i; |
45 | u32* volatile cyclone_timer; /* Cyclone MPMC0 register */ | 45 | u32 __iomem *cyclone_timer; /* Cyclone MPMC0 register */ |
46 | 46 | ||
47 | if (!use_cyclone) | 47 | if (!use_cyclone) |
48 | return 0; | 48 | return 0; |
@@ -51,7 +51,7 @@ int __init init_cyclone_clock(void) | |||
51 | 51 | ||
52 | /* find base address */ | 52 | /* find base address */ |
53 | offset = (CYCLONE_CBAR_ADDR); | 53 | offset = (CYCLONE_CBAR_ADDR); |
54 | reg = (u64*)ioremap_nocache(offset, sizeof(u64)); | 54 | reg = ioremap_nocache(offset, sizeof(u64)); |
55 | if(!reg){ | 55 | if(!reg){ |
56 | printk(KERN_ERR "Summit chipset: Could not find valid CBAR" | 56 | printk(KERN_ERR "Summit chipset: Could not find valid CBAR" |
57 | " register.\n"); | 57 | " register.\n"); |
@@ -69,7 +69,7 @@ int __init init_cyclone_clock(void) | |||
69 | 69 | ||
70 | /* setup PMCC */ | 70 | /* setup PMCC */ |
71 | offset = (base + CYCLONE_PMCC_OFFSET); | 71 | offset = (base + CYCLONE_PMCC_OFFSET); |
72 | reg = (u64*)ioremap_nocache(offset, sizeof(u64)); | 72 | reg = ioremap_nocache(offset, sizeof(u64)); |
73 | if(!reg){ | 73 | if(!reg){ |
74 | printk(KERN_ERR "Summit chipset: Could not find valid PMCC" | 74 | printk(KERN_ERR "Summit chipset: Could not find valid PMCC" |
75 | " register.\n"); | 75 | " register.\n"); |
@@ -81,7 +81,7 @@ int __init init_cyclone_clock(void) | |||
81 | 81 | ||
82 | /* setup MPCS */ | 82 | /* setup MPCS */ |
83 | offset = (base + CYCLONE_MPCS_OFFSET); | 83 | offset = (base + CYCLONE_MPCS_OFFSET); |
84 | reg = (u64*)ioremap_nocache(offset, sizeof(u64)); | 84 | reg = ioremap_nocache(offset, sizeof(u64)); |
85 | if(!reg){ | 85 | if(!reg){ |
86 | printk(KERN_ERR "Summit chipset: Could not find valid MPCS" | 86 | printk(KERN_ERR "Summit chipset: Could not find valid MPCS" |
87 | " register.\n"); | 87 | " register.\n"); |
@@ -93,7 +93,7 @@ int __init init_cyclone_clock(void) | |||
93 | 93 | ||
94 | /* map in cyclone_timer */ | 94 | /* map in cyclone_timer */ |
95 | offset = (base + CYCLONE_MPMC_OFFSET); | 95 | offset = (base + CYCLONE_MPMC_OFFSET); |
96 | cyclone_timer = (u32*)ioremap_nocache(offset, sizeof(u32)); | 96 | cyclone_timer = ioremap_nocache(offset, sizeof(u32)); |
97 | if(!cyclone_timer){ | 97 | if(!cyclone_timer){ |
98 | printk(KERN_ERR "Summit chipset: Could not find valid MPMC" | 98 | printk(KERN_ERR "Summit chipset: Could not find valid MPMC" |
99 | " register.\n"); | 99 | " register.\n"); |
@@ -110,7 +110,7 @@ int __init init_cyclone_clock(void) | |||
110 | printk(KERN_ERR "Summit chipset: Counter not counting!" | 110 | printk(KERN_ERR "Summit chipset: Counter not counting!" |
111 | " DISABLED\n"); | 111 | " DISABLED\n"); |
112 | iounmap(cyclone_timer); | 112 | iounmap(cyclone_timer); |
113 | cyclone_timer = 0; | 113 | cyclone_timer = NULL; |
114 | use_cyclone = 0; | 114 | use_cyclone = 0; |
115 | return -ENODEV; | 115 | return -ENODEV; |
116 | } | 116 | } |
diff --git a/arch/ia64/kernel/head.S b/arch/ia64/kernel/head.S index 44d540efa6d1..4e5e27540e27 100644 --- a/arch/ia64/kernel/head.S +++ b/arch/ia64/kernel/head.S | |||
@@ -178,7 +178,7 @@ swapper_pg_dir: | |||
178 | halt_msg: | 178 | halt_msg: |
179 | stringz "Halting kernel\n" | 179 | stringz "Halting kernel\n" |
180 | 180 | ||
181 | .text | 181 | .section .text.head,"ax" |
182 | 182 | ||
183 | .global start_ap | 183 | .global start_ap |
184 | 184 | ||
@@ -392,6 +392,8 @@ self: hint @pause | |||
392 | br.sptk.many self // endless loop | 392 | br.sptk.many self // endless loop |
393 | END(_start) | 393 | END(_start) |
394 | 394 | ||
395 | .text | ||
396 | |||
395 | GLOBAL_ENTRY(ia64_save_debug_regs) | 397 | GLOBAL_ENTRY(ia64_save_debug_regs) |
396 | alloc r16=ar.pfs,1,0,0,0 | 398 | alloc r16=ar.pfs,1,0,0,0 |
397 | mov r20=ar.lc // preserve ar.lc | 399 | mov r20=ar.lc // preserve ar.lc |
diff --git a/arch/ia64/kernel/irq_ia64.c b/arch/ia64/kernel/irq_ia64.c index 91797c111162..fcb77338cc09 100644 --- a/arch/ia64/kernel/irq_ia64.c +++ b/arch/ia64/kernel/irq_ia64.c | |||
@@ -85,8 +85,8 @@ DEFINE_PER_CPU(int[IA64_NUM_VECTORS], vector_irq) = { | |||
85 | [0 ... IA64_NUM_VECTORS - 1] = IA64_SPURIOUS_INT_VECTOR | 85 | [0 ... IA64_NUM_VECTORS - 1] = IA64_SPURIOUS_INT_VECTOR |
86 | }; | 86 | }; |
87 | 87 | ||
88 | static cpumask_t vector_table[IA64_MAX_DEVICE_VECTORS] = { | 88 | static cpumask_t vector_table[IA64_NUM_VECTORS] = { |
89 | [0 ... IA64_MAX_DEVICE_VECTORS - 1] = CPU_MASK_NONE | 89 | [0 ... IA64_NUM_VECTORS - 1] = CPU_MASK_NONE |
90 | }; | 90 | }; |
91 | 91 | ||
92 | static int irq_status[NR_IRQS] = { | 92 | static int irq_status[NR_IRQS] = { |
@@ -123,17 +123,18 @@ static inline int find_unassigned_irq(void) | |||
123 | static inline int find_unassigned_vector(cpumask_t domain) | 123 | static inline int find_unassigned_vector(cpumask_t domain) |
124 | { | 124 | { |
125 | cpumask_t mask; | 125 | cpumask_t mask; |
126 | int pos; | 126 | int pos, vector; |
127 | 127 | ||
128 | cpus_and(mask, domain, cpu_online_map); | 128 | cpus_and(mask, domain, cpu_online_map); |
129 | if (cpus_empty(mask)) | 129 | if (cpus_empty(mask)) |
130 | return -EINVAL; | 130 | return -EINVAL; |
131 | 131 | ||
132 | for (pos = 0; pos < IA64_NUM_DEVICE_VECTORS; pos++) { | 132 | for (pos = 0; pos < IA64_NUM_DEVICE_VECTORS; pos++) { |
133 | cpus_and(mask, domain, vector_table[pos]); | 133 | vector = IA64_FIRST_DEVICE_VECTOR + pos; |
134 | cpus_and(mask, domain, vector_table[vector]); | ||
134 | if (!cpus_empty(mask)) | 135 | if (!cpus_empty(mask)) |
135 | continue; | 136 | continue; |
136 | return IA64_FIRST_DEVICE_VECTOR + pos; | 137 | return vector; |
137 | } | 138 | } |
138 | return -ENOSPC; | 139 | return -ENOSPC; |
139 | } | 140 | } |
@@ -141,7 +142,7 @@ static inline int find_unassigned_vector(cpumask_t domain) | |||
141 | static int __bind_irq_vector(int irq, int vector, cpumask_t domain) | 142 | static int __bind_irq_vector(int irq, int vector, cpumask_t domain) |
142 | { | 143 | { |
143 | cpumask_t mask; | 144 | cpumask_t mask; |
144 | int cpu, pos; | 145 | int cpu; |
145 | struct irq_cfg *cfg = &irq_cfg[irq]; | 146 | struct irq_cfg *cfg = &irq_cfg[irq]; |
146 | 147 | ||
147 | cpus_and(mask, domain, cpu_online_map); | 148 | cpus_and(mask, domain, cpu_online_map); |
@@ -156,8 +157,7 @@ static int __bind_irq_vector(int irq, int vector, cpumask_t domain) | |||
156 | cfg->vector = vector; | 157 | cfg->vector = vector; |
157 | cfg->domain = domain; | 158 | cfg->domain = domain; |
158 | irq_status[irq] = IRQ_USED; | 159 | irq_status[irq] = IRQ_USED; |
159 | pos = vector - IA64_FIRST_DEVICE_VECTOR; | 160 | cpus_or(vector_table[vector], vector_table[vector], domain); |
160 | cpus_or(vector_table[pos], vector_table[pos], domain); | ||
161 | return 0; | 161 | return 0; |
162 | } | 162 | } |
163 | 163 | ||
@@ -174,7 +174,7 @@ int bind_irq_vector(int irq, int vector, cpumask_t domain) | |||
174 | 174 | ||
175 | static void __clear_irq_vector(int irq) | 175 | static void __clear_irq_vector(int irq) |
176 | { | 176 | { |
177 | int vector, cpu, pos; | 177 | int vector, cpu; |
178 | cpumask_t mask; | 178 | cpumask_t mask; |
179 | cpumask_t domain; | 179 | cpumask_t domain; |
180 | struct irq_cfg *cfg = &irq_cfg[irq]; | 180 | struct irq_cfg *cfg = &irq_cfg[irq]; |
@@ -189,8 +189,7 @@ static void __clear_irq_vector(int irq) | |||
189 | cfg->vector = IRQ_VECTOR_UNASSIGNED; | 189 | cfg->vector = IRQ_VECTOR_UNASSIGNED; |
190 | cfg->domain = CPU_MASK_NONE; | 190 | cfg->domain = CPU_MASK_NONE; |
191 | irq_status[irq] = IRQ_UNUSED; | 191 | irq_status[irq] = IRQ_UNUSED; |
192 | pos = vector - IA64_FIRST_DEVICE_VECTOR; | 192 | cpus_andnot(vector_table[vector], vector_table[vector], domain); |
193 | cpus_andnot(vector_table[pos], vector_table[pos], domain); | ||
194 | } | 193 | } |
195 | 194 | ||
196 | static void clear_irq_vector(int irq) | 195 | static void clear_irq_vector(int irq) |
@@ -212,9 +211,6 @@ assign_irq_vector (int irq) | |||
212 | vector = -ENOSPC; | 211 | vector = -ENOSPC; |
213 | 212 | ||
214 | spin_lock_irqsave(&vector_lock, flags); | 213 | spin_lock_irqsave(&vector_lock, flags); |
215 | if (irq < 0) { | ||
216 | goto out; | ||
217 | } | ||
218 | for_each_online_cpu(cpu) { | 214 | for_each_online_cpu(cpu) { |
219 | domain = vector_allocation_domain(cpu); | 215 | domain = vector_allocation_domain(cpu); |
220 | vector = find_unassigned_vector(domain); | 216 | vector = find_unassigned_vector(domain); |
@@ -223,6 +219,8 @@ assign_irq_vector (int irq) | |||
223 | } | 219 | } |
224 | if (vector < 0) | 220 | if (vector < 0) |
225 | goto out; | 221 | goto out; |
222 | if (irq == AUTO_ASSIGN) | ||
223 | irq = vector; | ||
226 | BUG_ON(__bind_irq_vector(irq, vector, domain)); | 224 | BUG_ON(__bind_irq_vector(irq, vector, domain)); |
227 | out: | 225 | out: |
228 | spin_unlock_irqrestore(&vector_lock, flags); | 226 | spin_unlock_irqrestore(&vector_lock, flags); |
diff --git a/arch/ia64/kernel/machvec.c b/arch/ia64/kernel/machvec.c index 13df337508e7..7ccb228ceedc 100644 --- a/arch/ia64/kernel/machvec.c +++ b/arch/ia64/kernel/machvec.c | |||
@@ -13,14 +13,6 @@ | |||
13 | struct ia64_machine_vector ia64_mv; | 13 | struct ia64_machine_vector ia64_mv; |
14 | EXPORT_SYMBOL(ia64_mv); | 14 | EXPORT_SYMBOL(ia64_mv); |
15 | 15 | ||
16 | static __initdata const char *mvec_name; | ||
17 | static __init int setup_mvec(char *s) | ||
18 | { | ||
19 | mvec_name = s; | ||
20 | return 0; | ||
21 | } | ||
22 | early_param("machvec", setup_mvec); | ||
23 | |||
24 | static struct ia64_machine_vector * __init | 16 | static struct ia64_machine_vector * __init |
25 | lookup_machvec (const char *name) | 17 | lookup_machvec (const char *name) |
26 | { | 18 | { |
@@ -41,7 +33,7 @@ machvec_init (const char *name) | |||
41 | struct ia64_machine_vector *mv; | 33 | struct ia64_machine_vector *mv; |
42 | 34 | ||
43 | if (!name) | 35 | if (!name) |
44 | name = mvec_name ? mvec_name : acpi_get_sysname(); | 36 | name = acpi_get_sysname(); |
45 | mv = lookup_machvec(name); | 37 | mv = lookup_machvec(name); |
46 | if (!mv) | 38 | if (!mv) |
47 | panic("generic kernel failed to find machine vector for" | 39 | panic("generic kernel failed to find machine vector for" |
@@ -51,6 +43,23 @@ machvec_init (const char *name) | |||
51 | printk(KERN_INFO "booting generic kernel on platform %s\n", name); | 43 | printk(KERN_INFO "booting generic kernel on platform %s\n", name); |
52 | } | 44 | } |
53 | 45 | ||
46 | void __init | ||
47 | machvec_init_from_cmdline(const char *cmdline) | ||
48 | { | ||
49 | char str[64]; | ||
50 | const char *start; | ||
51 | char *end; | ||
52 | |||
53 | if (! (start = strstr(cmdline, "machvec=")) ) | ||
54 | return machvec_init(NULL); | ||
55 | |||
56 | strlcpy(str, start + strlen("machvec="), sizeof(str)); | ||
57 | if ( (end = strchr(str, ' ')) ) | ||
58 | *end = '\0'; | ||
59 | |||
60 | return machvec_init(str); | ||
61 | } | ||
62 | |||
54 | #endif /* CONFIG_IA64_GENERIC */ | 63 | #endif /* CONFIG_IA64_GENERIC */ |
55 | 64 | ||
56 | void | 65 | void |
diff --git a/arch/ia64/kernel/process.c b/arch/ia64/kernel/process.c index fa40cba43350..4158906c45aa 100644 --- a/arch/ia64/kernel/process.c +++ b/arch/ia64/kernel/process.c | |||
@@ -499,7 +499,8 @@ copy_thread (int nr, unsigned long clone_flags, | |||
499 | 499 | ||
500 | /* Copy partially mapped page list */ | 500 | /* Copy partially mapped page list */ |
501 | if (!retval) | 501 | if (!retval) |
502 | retval = ia32_copy_partial_page_list(p, clone_flags); | 502 | retval = ia32_copy_ia64_partial_page_list(p, |
503 | clone_flags); | ||
503 | } | 504 | } |
504 | #endif | 505 | #endif |
505 | 506 | ||
@@ -728,7 +729,7 @@ flush_thread (void) | |||
728 | ia64_drop_fpu(current); | 729 | ia64_drop_fpu(current); |
729 | #ifdef CONFIG_IA32_SUPPORT | 730 | #ifdef CONFIG_IA32_SUPPORT |
730 | if (IS_IA32_PROCESS(task_pt_regs(current))) { | 731 | if (IS_IA32_PROCESS(task_pt_regs(current))) { |
731 | ia32_drop_partial_page_list(current); | 732 | ia32_drop_ia64_partial_page_list(current); |
732 | current->thread.task_size = IA32_PAGE_OFFSET; | 733 | current->thread.task_size = IA32_PAGE_OFFSET; |
733 | set_fs(USER_DS); | 734 | set_fs(USER_DS); |
734 | } | 735 | } |
@@ -754,7 +755,7 @@ exit_thread (void) | |||
754 | pfm_release_debug_registers(current); | 755 | pfm_release_debug_registers(current); |
755 | #endif | 756 | #endif |
756 | if (IS_IA32_PROCESS(task_pt_regs(current))) | 757 | if (IS_IA32_PROCESS(task_pt_regs(current))) |
757 | ia32_drop_partial_page_list(current); | 758 | ia32_drop_ia64_partial_page_list(current); |
758 | } | 759 | } |
759 | 760 | ||
760 | unsigned long | 761 | unsigned long |
diff --git a/arch/ia64/kernel/setup.c b/arch/ia64/kernel/setup.c index cf06fe799041..7cecd2964200 100644 --- a/arch/ia64/kernel/setup.c +++ b/arch/ia64/kernel/setup.c | |||
@@ -491,12 +491,17 @@ setup_arch (char **cmdline_p) | |||
491 | efi_init(); | 491 | efi_init(); |
492 | io_port_init(); | 492 | io_port_init(); |
493 | 493 | ||
494 | parse_early_param(); | ||
495 | |||
496 | #ifdef CONFIG_IA64_GENERIC | 494 | #ifdef CONFIG_IA64_GENERIC |
497 | machvec_init(NULL); | 495 | /* machvec needs to be parsed from the command line |
496 | * before parse_early_param() is called to ensure | ||
497 | * that ia64_mv is initialised before any command line | ||
498 | * settings may cause console setup to occur | ||
499 | */ | ||
500 | machvec_init_from_cmdline(*cmdline_p); | ||
498 | #endif | 501 | #endif |
499 | 502 | ||
503 | parse_early_param(); | ||
504 | |||
500 | if (early_console_setup(*cmdline_p) == 0) | 505 | if (early_console_setup(*cmdline_p) == 0) |
501 | mark_bsp_online(); | 506 | mark_bsp_online(); |
502 | 507 | ||
diff --git a/arch/ia64/kernel/smp.c b/arch/ia64/kernel/smp.c index 9f72838db26e..0982882bfb80 100644 --- a/arch/ia64/kernel/smp.c +++ b/arch/ia64/kernel/smp.c | |||
@@ -468,7 +468,7 @@ smp_send_stop (void) | |||
468 | send_IPI_allbutself(IPI_CPU_STOP); | 468 | send_IPI_allbutself(IPI_CPU_STOP); |
469 | } | 469 | } |
470 | 470 | ||
471 | int __init | 471 | int |
472 | setup_profiling_timer (unsigned int multiplier) | 472 | setup_profiling_timer (unsigned int multiplier) |
473 | { | 473 | { |
474 | return -EINVAL; | 474 | return -EINVAL; |
diff --git a/arch/ia64/kernel/smpboot.c b/arch/ia64/kernel/smpboot.c index 9f5c90b594b9..62209dcf06d3 100644 --- a/arch/ia64/kernel/smpboot.c +++ b/arch/ia64/kernel/smpboot.c | |||
@@ -487,7 +487,7 @@ struct create_idle { | |||
487 | int cpu; | 487 | int cpu; |
488 | }; | 488 | }; |
489 | 489 | ||
490 | void | 490 | void __cpuinit |
491 | do_fork_idle(struct work_struct *work) | 491 | do_fork_idle(struct work_struct *work) |
492 | { | 492 | { |
493 | struct create_idle *c_idle = | 493 | struct create_idle *c_idle = |
@@ -497,7 +497,7 @@ do_fork_idle(struct work_struct *work) | |||
497 | complete(&c_idle->done); | 497 | complete(&c_idle->done); |
498 | } | 498 | } |
499 | 499 | ||
500 | static int __devinit | 500 | static int __cpuinit |
501 | do_boot_cpu (int sapicid, int cpu) | 501 | do_boot_cpu (int sapicid, int cpu) |
502 | { | 502 | { |
503 | int timeout; | 503 | int timeout; |
@@ -808,7 +808,7 @@ set_cpu_sibling_map(int cpu) | |||
808 | } | 808 | } |
809 | } | 809 | } |
810 | 810 | ||
811 | int __devinit | 811 | int __cpuinit |
812 | __cpu_up (unsigned int cpu) | 812 | __cpu_up (unsigned int cpu) |
813 | { | 813 | { |
814 | int ret; | 814 | int ret; |
diff --git a/arch/ia64/kernel/time.c b/arch/ia64/kernel/time.c index 627785c48ea9..6c0e9e2e1b82 100644 --- a/arch/ia64/kernel/time.c +++ b/arch/ia64/kernel/time.c | |||
@@ -52,7 +52,7 @@ static struct clocksource clocksource_itc = { | |||
52 | .name = "itc", | 52 | .name = "itc", |
53 | .rating = 350, | 53 | .rating = 350, |
54 | .read = itc_get_cycles, | 54 | .read = itc_get_cycles, |
55 | .mask = 0xffffffffffffffff, | 55 | .mask = CLOCKSOURCE_MASK(64), |
56 | .mult = 0, /*to be caluclated*/ | 56 | .mult = 0, /*to be caluclated*/ |
57 | .shift = 16, | 57 | .shift = 16, |
58 | .flags = CLOCK_SOURCE_IS_CONTINUOUS, | 58 | .flags = CLOCK_SOURCE_IS_CONTINUOUS, |
@@ -255,7 +255,7 @@ ia64_init_itm (void) | |||
255 | } | 255 | } |
256 | } | 256 | } |
257 | 257 | ||
258 | static cycle_t itc_get_cycles() | 258 | static cycle_t itc_get_cycles(void) |
259 | { | 259 | { |
260 | u64 lcycle, now, ret; | 260 | u64 lcycle, now, ret; |
261 | 261 | ||
diff --git a/arch/ia64/kernel/vmlinux.lds.S b/arch/ia64/kernel/vmlinux.lds.S index 860f251d2fc2..83e80677de70 100644 --- a/arch/ia64/kernel/vmlinux.lds.S +++ b/arch/ia64/kernel/vmlinux.lds.S | |||
@@ -50,6 +50,8 @@ SECTIONS | |||
50 | KPROBES_TEXT | 50 | KPROBES_TEXT |
51 | *(.gnu.linkonce.t*) | 51 | *(.gnu.linkonce.t*) |
52 | } | 52 | } |
53 | .text.head : AT(ADDR(.text.head) - LOAD_OFFSET) | ||
54 | { *(.text.head) } | ||
53 | .text2 : AT(ADDR(.text2) - LOAD_OFFSET) | 55 | .text2 : AT(ADDR(.text2) - LOAD_OFFSET) |
54 | { *(.text2) } | 56 | { *(.text2) } |
55 | #ifdef CONFIG_SMP | 57 | #ifdef CONFIG_SMP |