aboutsummaryrefslogtreecommitdiffstats
path: root/arch/hexagon/kernel
diff options
context:
space:
mode:
Diffstat (limited to 'arch/hexagon/kernel')
-rw-r--r--arch/hexagon/kernel/Makefile2
-rw-r--r--arch/hexagon/kernel/hexagon_ksyms.c24
-rw-r--r--arch/hexagon/kernel/kgdb.c2
-rw-r--r--arch/hexagon/kernel/ptrace.c1
-rw-r--r--arch/hexagon/kernel/reset.c5
-rw-r--r--arch/hexagon/kernel/screen_info.c3
-rw-r--r--arch/hexagon/kernel/smp.c6
-rw-r--r--arch/hexagon/kernel/time.c12
8 files changed, 40 insertions, 15 deletions
diff --git a/arch/hexagon/kernel/Makefile b/arch/hexagon/kernel/Makefile
index 29fc933a7722..009228b8611c 100644
--- a/arch/hexagon/kernel/Makefile
+++ b/arch/hexagon/kernel/Makefile
@@ -15,3 +15,5 @@ obj-y += vm_vectors.o
15obj-$(CONFIG_HAS_DMA) += dma.o 15obj-$(CONFIG_HAS_DMA) += dma.o
16 16
17obj-$(CONFIG_STACKTRACE) += stacktrace.o 17obj-$(CONFIG_STACKTRACE) += stacktrace.o
18
19obj-$(CONFIG_VGA_CONSOLE) += screen_info.o
diff --git a/arch/hexagon/kernel/hexagon_ksyms.c b/arch/hexagon/kernel/hexagon_ksyms.c
index 32b1379d6877..c041d8ecb1e2 100644
--- a/arch/hexagon/kernel/hexagon_ksyms.c
+++ b/arch/hexagon/kernel/hexagon_ksyms.c
@@ -18,23 +18,39 @@
18 * 02110-1301, USA. 18 * 02110-1301, USA.
19 */ 19 */
20 20
21#include <linux/dma-mapping.h>
21#include <asm/hexagon_vm.h> 22#include <asm/hexagon_vm.h>
23#include <asm/io.h>
22#include <asm/uaccess.h> 24#include <asm/uaccess.h>
23 25
26/* Additional functions */
27EXPORT_SYMBOL(__clear_user_hexagon);
24EXPORT_SYMBOL(__copy_from_user_hexagon); 28EXPORT_SYMBOL(__copy_from_user_hexagon);
25EXPORT_SYMBOL(__copy_to_user_hexagon); 29EXPORT_SYMBOL(__copy_to_user_hexagon);
30EXPORT_SYMBOL(__iounmap);
31EXPORT_SYMBOL(__strnlen_user);
26EXPORT_SYMBOL(__vmgetie); 32EXPORT_SYMBOL(__vmgetie);
27EXPORT_SYMBOL(__vmsetie); 33EXPORT_SYMBOL(__vmsetie);
34EXPORT_SYMBOL(__vmyield);
35EXPORT_SYMBOL(empty_zero_page);
36EXPORT_SYMBOL(ioremap_nocache);
28EXPORT_SYMBOL(memcpy); 37EXPORT_SYMBOL(memcpy);
29EXPORT_SYMBOL(memset); 38EXPORT_SYMBOL(memset);
30 39
40/* Additional variables */
41EXPORT_SYMBOL(__phys_offset);
42EXPORT_SYMBOL(_dflt_cache_att);
43EXPORT_SYMBOL(bad_dma_address);
44
31#define DECLARE_EXPORT(name) \ 45#define DECLARE_EXPORT(name) \
32 extern void name(void); EXPORT_SYMBOL(name) 46 extern void name(void); EXPORT_SYMBOL(name)
33 47
34/* Symbols found in libgcc that assorted kernel modules need */ 48/* Symbols found in libgcc that assorted kernel modules need */
35DECLARE_EXPORT(__hexagon_memcpy_likely_aligned_min32bytes_mult8bytes); 49DECLARE_EXPORT(__hexagon_memcpy_likely_aligned_min32bytes_mult8bytes);
36 50
37DECLARE_EXPORT(__hexagon_divsi3); 51/* Additional functions */
38DECLARE_EXPORT(__hexagon_modsi3); 52DECLARE_EXPORT(__divsi3);
39DECLARE_EXPORT(__hexagon_udivsi3); 53DECLARE_EXPORT(__modsi3);
40DECLARE_EXPORT(__hexagon_umodsi3); 54DECLARE_EXPORT(__udivsi3);
55DECLARE_EXPORT(__umodsi3);
56DECLARE_EXPORT(csum_tcpudp_magic);
diff --git a/arch/hexagon/kernel/kgdb.c b/arch/hexagon/kernel/kgdb.c
index 82d5c2593323..038580cc5abf 100644
--- a/arch/hexagon/kernel/kgdb.c
+++ b/arch/hexagon/kernel/kgdb.c
@@ -18,6 +18,8 @@
18 * 02110-1301, USA. 18 * 02110-1301, USA.
19 */ 19 */
20 20
21#include <linux/irq.h>
22#include <linux/sched.h>
21#include <linux/kdebug.h> 23#include <linux/kdebug.h>
22#include <linux/kgdb.h> 24#include <linux/kgdb.h>
23 25
diff --git a/arch/hexagon/kernel/ptrace.c b/arch/hexagon/kernel/ptrace.c
index de829eb7f185..390a9ad14ca1 100644
--- a/arch/hexagon/kernel/ptrace.c
+++ b/arch/hexagon/kernel/ptrace.c
@@ -183,6 +183,7 @@ static const struct user_regset_view hexagon_user_view = {
183 .e_machine = ELF_ARCH, 183 .e_machine = ELF_ARCH,
184 .ei_osabi = ELF_OSABI, 184 .ei_osabi = ELF_OSABI,
185 .regsets = hexagon_regsets, 185 .regsets = hexagon_regsets,
186 .e_flags = ELF_CORE_EFLAGS,
186 .n = ARRAY_SIZE(hexagon_regsets) 187 .n = ARRAY_SIZE(hexagon_regsets)
187}; 188};
188 189
diff --git a/arch/hexagon/kernel/reset.c b/arch/hexagon/kernel/reset.c
index 6aeabc962b3b..76483c10130d 100644
--- a/arch/hexagon/kernel/reset.c
+++ b/arch/hexagon/kernel/reset.c
@@ -33,6 +33,5 @@ void machine_restart(char *cmd)
33{ 33{
34} 34}
35 35
36void pm_power_off(void) 36void (*pm_power_off)(void) = NULL;
37{ 37EXPORT_SYMBOL(pm_power_off);
38}
diff --git a/arch/hexagon/kernel/screen_info.c b/arch/hexagon/kernel/screen_info.c
new file mode 100644
index 000000000000..1e1ceb18bafe
--- /dev/null
+++ b/arch/hexagon/kernel/screen_info.c
@@ -0,0 +1,3 @@
1#include <linux/screen_info.h>
2
3struct screen_info screen_info;
diff --git a/arch/hexagon/kernel/smp.c b/arch/hexagon/kernel/smp.c
index 9faaa940452b..ff759f26b96a 100644
--- a/arch/hexagon/kernel/smp.c
+++ b/arch/hexagon/kernel/smp.c
@@ -64,10 +64,6 @@ static inline void __handle_ipi(unsigned long *ops, struct ipi_data *ipi,
64 generic_smp_call_function_interrupt(); 64 generic_smp_call_function_interrupt();
65 break; 65 break;
66 66
67 case IPI_CALL_FUNC_SINGLE:
68 generic_smp_call_function_single_interrupt();
69 break;
70
71 case IPI_CPU_STOP: 67 case IPI_CPU_STOP:
72 /* 68 /*
73 * call vmstop() 69 * call vmstop()
@@ -248,7 +244,7 @@ void smp_send_stop(void)
248 244
249void arch_send_call_function_single_ipi(int cpu) 245void arch_send_call_function_single_ipi(int cpu)
250{ 246{
251 send_ipi(cpumask_of(cpu), IPI_CALL_FUNC_SINGLE); 247 send_ipi(cpumask_of(cpu), IPI_CALL_FUNC);
252} 248}
253 249
254void arch_send_call_function_ipi_mask(const struct cpumask *mask) 250void arch_send_call_function_ipi_mask(const struct cpumask *mask)
diff --git a/arch/hexagon/kernel/time.c b/arch/hexagon/kernel/time.c
index 9903fad997f3..17fbf45bf150 100644
--- a/arch/hexagon/kernel/time.c
+++ b/arch/hexagon/kernel/time.c
@@ -191,9 +191,6 @@ void __init time_init_deferred(void)
191{ 191{
192 struct resource *resource = NULL; 192 struct resource *resource = NULL;
193 struct clock_event_device *ce_dev = &hexagon_clockevent_dev; 193 struct clock_event_device *ce_dev = &hexagon_clockevent_dev;
194 struct device_node *dn;
195 struct resource r;
196 int err;
197 194
198 ce_dev->cpumask = cpu_all_mask; 195 ce_dev->cpumask = cpu_all_mask;
199 196
@@ -232,6 +229,15 @@ void __init time_init(void)
232 late_time_init = time_init_deferred; 229 late_time_init = time_init_deferred;
233} 230}
234 231
232void __delay(unsigned long cycles)
233{
234 unsigned long long start = __vmgettime();
235
236 while ((__vmgettime() - start) < cycles)
237 cpu_relax();
238}
239EXPORT_SYMBOL(__delay);
240
235/* 241/*
236 * This could become parametric or perhaps even computed at run-time, 242 * This could become parametric or perhaps even computed at run-time,
237 * but for now we take the observed simulator jitter. 243 * but for now we take the observed simulator jitter.