aboutsummaryrefslogtreecommitdiffstats
path: root/arch/hexagon/include
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2014-04-05 16:19:32 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2014-04-05 16:19:32 -0400
commit2f997759dffe5458446075a58734df39d8035e6e (patch)
treeb799fbec4b57fa8e1408f3b8b43638bbcc5d7a50 /arch/hexagon/include
parent472e374161bc00d392e1755fe9915f42b11e310f (diff)
parenta9a44fdf329668125042055c569656aa83d8cccb (diff)
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rkuo/linux-hexagon-kernel
Pull Hexagon updates from Richard Kuo: "Mostly cleanups for compilation with allmodconfig and some other miscellaneous fixes" * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rkuo/linux-hexagon-kernel: Hexagon: update CR year for elf.h Hexagon: remove SP macro Hexagon: set ELF_EXEC_PAGESIZE to PAGE_SIZE Hexagon: set the e_flags in user regset view for core dumps Hexagon: fix atomic_set Hexagon: add screen_info for VGA_CONSOLE hexagon: correct type on pgd copy smp, hexagon: kill SMP single function call interrupt arch: hexagon: include: asm: add generic macro 'mmiowb' in "io.h" arch: hexagon: kernel: hexagon_ksyms.c: export related symbols which various modules need arch: hexagon: kernel: reset.c: use function pointer instead of function for pm_power_off and export it arch: hexagon: include: asm: add "vga.h" in Kbuild arch: hexagon: include: asm: Kbuild: add generic "serial.h" in Kbuild arch: hexagon: include: uapi: asm: setup.h add swith macro __KERNEL__ arch: hexagon: include: asm: add prefix "hvm[ci]_" for all enum members in "hexagon_vm.h" arch: hexagon: Kconfig: add HAVE_DMA_ATTR in Kconfig and remove "linux/dma-mapping.h" from "asm/dma-mapping.h" arch: hexagon: kernel: add export symbol function __delay() hexagon: include: asm: kgdb: extend DBG_MAX_REG_NUM for "cs0/1" hexagon: kernel: kgdb: include related header for pass compiling. hexagon: kernel: remove useless variables 'dn', 'r' and 'err' in time_init_deferred() in "time.c"
Diffstat (limited to 'arch/hexagon/include')
-rw-r--r--arch/hexagon/include/asm/Kbuild2
-rw-r--r--arch/hexagon/include/asm/atomic.h15
-rw-r--r--arch/hexagon/include/asm/delay.h1
-rw-r--r--arch/hexagon/include/asm/dma-mapping.h1
-rw-r--r--arch/hexagon/include/asm/elf.h4
-rw-r--r--arch/hexagon/include/asm/hexagon_vm.h72
-rw-r--r--arch/hexagon/include/asm/io.h2
-rw-r--r--arch/hexagon/include/asm/kgdb.h5
-rw-r--r--arch/hexagon/include/asm/pgalloc.h2
-rw-r--r--arch/hexagon/include/asm/smp.h1
-rw-r--r--arch/hexagon/include/uapi/asm/registers.h4
-rw-r--r--arch/hexagon/include/uapi/asm/setup.h5
12 files changed, 67 insertions, 47 deletions
diff --git a/arch/hexagon/include/asm/Kbuild b/arch/hexagon/include/asm/Kbuild
index eadcc118f950..0e69796b58c7 100644
--- a/arch/hexagon/include/asm/Kbuild
+++ b/arch/hexagon/include/asm/Kbuild
@@ -41,6 +41,7 @@ generic-y += scatterlist.h
41generic-y += sections.h 41generic-y += sections.h
42generic-y += segment.h 42generic-y += segment.h
43generic-y += sembuf.h 43generic-y += sembuf.h
44generic-y += serial.h
44generic-y += shmbuf.h 45generic-y += shmbuf.h
45generic-y += shmparam.h 46generic-y += shmparam.h
46generic-y += siginfo.h 47generic-y += siginfo.h
@@ -56,4 +57,5 @@ generic-y += trace_clock.h
56generic-y += types.h 57generic-y += types.h
57generic-y += ucontext.h 58generic-y += ucontext.h
58generic-y += unaligned.h 59generic-y += unaligned.h
60generic-y += vga.h
59generic-y += xor.h 61generic-y += xor.h
diff --git a/arch/hexagon/include/asm/atomic.h b/arch/hexagon/include/asm/atomic.h
index 7aae4cb2a29a..17dc63780c06 100644
--- a/arch/hexagon/include/asm/atomic.h
+++ b/arch/hexagon/include/asm/atomic.h
@@ -26,7 +26,20 @@
26#include <asm/cmpxchg.h> 26#include <asm/cmpxchg.h>
27 27
28#define ATOMIC_INIT(i) { (i) } 28#define ATOMIC_INIT(i) { (i) }
29#define atomic_set(v, i) ((v)->counter = (i)) 29
30/* Normal writes in our arch don't clear lock reservations */
31
32static inline void atomic_set(atomic_t *v, int new)
33{
34 asm volatile(
35 "1: r6 = memw_locked(%0);\n"
36 " memw_locked(%0,p0) = %1;\n"
37 " if (!P0) jump 1b;\n"
38 :
39 : "r" (&v->counter), "r" (new)
40 : "memory", "p0", "r6"
41 );
42}
30 43
31/** 44/**
32 * atomic_read - reads a word, atomically 45 * atomic_read - reads a word, atomically
diff --git a/arch/hexagon/include/asm/delay.h b/arch/hexagon/include/asm/delay.h
index 53079719d667..8933b9b1a3bf 100644
--- a/arch/hexagon/include/asm/delay.h
+++ b/arch/hexagon/include/asm/delay.h
@@ -21,6 +21,7 @@
21 21
22#include <asm/param.h> 22#include <asm/param.h>
23 23
24extern void __delay(unsigned long cycles);
24extern void __udelay(unsigned long usecs); 25extern void __udelay(unsigned long usecs);
25 26
26#define udelay(usecs) __udelay((usecs)) 27#define udelay(usecs) __udelay((usecs))
diff --git a/arch/hexagon/include/asm/dma-mapping.h b/arch/hexagon/include/asm/dma-mapping.h
index 85e9935660cb..16965427f6b4 100644
--- a/arch/hexagon/include/asm/dma-mapping.h
+++ b/arch/hexagon/include/asm/dma-mapping.h
@@ -25,7 +25,6 @@
25#include <linux/cache.h> 25#include <linux/cache.h>
26#include <linux/mm.h> 26#include <linux/mm.h>
27#include <linux/scatterlist.h> 27#include <linux/scatterlist.h>
28#include <linux/dma-mapping.h>
29#include <linux/dma-debug.h> 28#include <linux/dma-debug.h>
30#include <linux/dma-attrs.h> 29#include <linux/dma-attrs.h>
31#include <asm/io.h> 30#include <asm/io.h>
diff --git a/arch/hexagon/include/asm/elf.h b/arch/hexagon/include/asm/elf.h
index e1b933a0e121..80311e7b8ca6 100644
--- a/arch/hexagon/include/asm/elf.h
+++ b/arch/hexagon/include/asm/elf.h
@@ -1,7 +1,7 @@
1/* 1/*
2 * ELF definitions for the Hexagon architecture 2 * ELF definitions for the Hexagon architecture
3 * 3 *
4 * Copyright (c) 2010-2012, The Linux Foundation. All rights reserved. 4 * Copyright (c) 2010-2013, The Linux Foundation. All rights reserved.
5 * 5 *
6 * This program is free software; you can redistribute it and/or modify 6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License version 2 and 7 * it under the terms of the GNU General Public License version 2 and
@@ -202,7 +202,7 @@ do { \
202#define CORE_DUMP_USE_REGSET 202#define CORE_DUMP_USE_REGSET
203 203
204/* Hrm is this going to cause problems for changing PAGE_SIZE? */ 204/* Hrm is this going to cause problems for changing PAGE_SIZE? */
205#define ELF_EXEC_PAGESIZE 4096 205#define ELF_EXEC_PAGESIZE PAGE_SIZE
206 206
207/* 207/*
208 * This is the location that an ET_DYN program is loaded if exec'ed. Typical 208 * This is the location that an ET_DYN program is loaded if exec'ed. Typical
diff --git a/arch/hexagon/include/asm/hexagon_vm.h b/arch/hexagon/include/asm/hexagon_vm.h
index 67bb6d6f3337..1f6918b428de 100644
--- a/arch/hexagon/include/asm/hexagon_vm.h
+++ b/arch/hexagon/include/asm/hexagon_vm.h
@@ -55,27 +55,27 @@
55#ifndef __ASSEMBLY__ 55#ifndef __ASSEMBLY__
56 56
57enum VM_CACHE_OPS { 57enum VM_CACHE_OPS {
58 ickill, 58 hvmc_ickill,
59 dckill, 59 hvmc_dckill,
60 l2kill, 60 hvmc_l2kill,
61 dccleaninva, 61 hvmc_dccleaninva,
62 icinva, 62 hvmc_icinva,
63 idsync, 63 hvmc_idsync,
64 fetch_cfg 64 hvmc_fetch_cfg
65}; 65};
66 66
67enum VM_INT_OPS { 67enum VM_INT_OPS {
68 nop, 68 hvmi_nop,
69 globen, 69 hvmi_globen,
70 globdis, 70 hvmi_globdis,
71 locen, 71 hvmi_locen,
72 locdis, 72 hvmi_locdis,
73 affinity, 73 hvmi_affinity,
74 get, 74 hvmi_get,
75 peek, 75 hvmi_peek,
76 status, 76 hvmi_status,
77 post, 77 hvmi_post,
78 clear 78 hvmi_clear
79}; 79};
80 80
81extern void _K_VM_event_vector(void); 81extern void _K_VM_event_vector(void);
@@ -98,95 +98,95 @@ long __vmvpid(void);
98 98
99static inline long __vmcache_ickill(void) 99static inline long __vmcache_ickill(void)
100{ 100{
101 return __vmcache(ickill, 0, 0); 101 return __vmcache(hvmc_ickill, 0, 0);
102} 102}
103 103
104static inline long __vmcache_dckill(void) 104static inline long __vmcache_dckill(void)
105{ 105{
106 return __vmcache(dckill, 0, 0); 106 return __vmcache(hvmc_dckill, 0, 0);
107} 107}
108 108
109static inline long __vmcache_l2kill(void) 109static inline long __vmcache_l2kill(void)
110{ 110{
111 return __vmcache(l2kill, 0, 0); 111 return __vmcache(hvmc_l2kill, 0, 0);
112} 112}
113 113
114static inline long __vmcache_dccleaninva(unsigned long addr, unsigned long len) 114static inline long __vmcache_dccleaninva(unsigned long addr, unsigned long len)
115{ 115{
116 return __vmcache(dccleaninva, addr, len); 116 return __vmcache(hvmc_dccleaninva, addr, len);
117} 117}
118 118
119static inline long __vmcache_icinva(unsigned long addr, unsigned long len) 119static inline long __vmcache_icinva(unsigned long addr, unsigned long len)
120{ 120{
121 return __vmcache(icinva, addr, len); 121 return __vmcache(hvmc_icinva, addr, len);
122} 122}
123 123
124static inline long __vmcache_idsync(unsigned long addr, 124static inline long __vmcache_idsync(unsigned long addr,
125 unsigned long len) 125 unsigned long len)
126{ 126{
127 return __vmcache(idsync, addr, len); 127 return __vmcache(hvmc_idsync, addr, len);
128} 128}
129 129
130static inline long __vmcache_fetch_cfg(unsigned long val) 130static inline long __vmcache_fetch_cfg(unsigned long val)
131{ 131{
132 return __vmcache(fetch_cfg, val, 0); 132 return __vmcache(hvmc_fetch_cfg, val, 0);
133} 133}
134 134
135/* interrupt operations */ 135/* interrupt operations */
136 136
137static inline long __vmintop_nop(void) 137static inline long __vmintop_nop(void)
138{ 138{
139 return __vmintop(nop, 0, 0, 0, 0); 139 return __vmintop(hvmi_nop, 0, 0, 0, 0);
140} 140}
141 141
142static inline long __vmintop_globen(long i) 142static inline long __vmintop_globen(long i)
143{ 143{
144 return __vmintop(globen, i, 0, 0, 0); 144 return __vmintop(hvmi_globen, i, 0, 0, 0);
145} 145}
146 146
147static inline long __vmintop_globdis(long i) 147static inline long __vmintop_globdis(long i)
148{ 148{
149 return __vmintop(globdis, i, 0, 0, 0); 149 return __vmintop(hvmi_globdis, i, 0, 0, 0);
150} 150}
151 151
152static inline long __vmintop_locen(long i) 152static inline long __vmintop_locen(long i)
153{ 153{
154 return __vmintop(locen, i, 0, 0, 0); 154 return __vmintop(hvmi_locen, i, 0, 0, 0);
155} 155}
156 156
157static inline long __vmintop_locdis(long i) 157static inline long __vmintop_locdis(long i)
158{ 158{
159 return __vmintop(locdis, i, 0, 0, 0); 159 return __vmintop(hvmi_locdis, i, 0, 0, 0);
160} 160}
161 161
162static inline long __vmintop_affinity(long i, long cpu) 162static inline long __vmintop_affinity(long i, long cpu)
163{ 163{
164 return __vmintop(locdis, i, cpu, 0, 0); 164 return __vmintop(hvmi_affinity, i, cpu, 0, 0);
165} 165}
166 166
167static inline long __vmintop_get(void) 167static inline long __vmintop_get(void)
168{ 168{
169 return __vmintop(get, 0, 0, 0, 0); 169 return __vmintop(hvmi_get, 0, 0, 0, 0);
170} 170}
171 171
172static inline long __vmintop_peek(void) 172static inline long __vmintop_peek(void)
173{ 173{
174 return __vmintop(peek, 0, 0, 0, 0); 174 return __vmintop(hvmi_peek, 0, 0, 0, 0);
175} 175}
176 176
177static inline long __vmintop_status(long i) 177static inline long __vmintop_status(long i)
178{ 178{
179 return __vmintop(status, i, 0, 0, 0); 179 return __vmintop(hvmi_status, i, 0, 0, 0);
180} 180}
181 181
182static inline long __vmintop_post(long i) 182static inline long __vmintop_post(long i)
183{ 183{
184 return __vmintop(post, i, 0, 0, 0); 184 return __vmintop(hvmi_post, i, 0, 0, 0);
185} 185}
186 186
187static inline long __vmintop_clear(long i) 187static inline long __vmintop_clear(long i)
188{ 188{
189 return __vmintop(clear, i, 0, 0, 0); 189 return __vmintop(hvmi_clear, i, 0, 0, 0);
190} 190}
191 191
192#else /* Only assembly code should reference these */ 192#else /* Only assembly code should reference these */
diff --git a/arch/hexagon/include/asm/io.h b/arch/hexagon/include/asm/io.h
index 1b7698e19139..70298996e9b2 100644
--- a/arch/hexagon/include/asm/io.h
+++ b/arch/hexagon/include/asm/io.h
@@ -189,6 +189,8 @@ static inline void writel(u32 data, volatile void __iomem *addr)
189#define writew_relaxed __raw_writew 189#define writew_relaxed __raw_writew
190#define writel_relaxed __raw_writel 190#define writel_relaxed __raw_writel
191 191
192#define mmiowb()
193
192/* 194/*
193 * Need an mtype somewhere in here, for cache type deals? 195 * Need an mtype somewhere in here, for cache type deals?
194 * This is probably too long for an inline. 196 * This is probably too long for an inline.
diff --git a/arch/hexagon/include/asm/kgdb.h b/arch/hexagon/include/asm/kgdb.h
index 32a6fb66944a..ccd3ac336b24 100644
--- a/arch/hexagon/include/asm/kgdb.h
+++ b/arch/hexagon/include/asm/kgdb.h
@@ -34,10 +34,11 @@ static inline void arch_kgdb_breakpoint(void)
34 * 32 gpr + sa0/1 + lc0/1 + m0/1 + gp + ugp + pred + pc = 42 total. 34 * 32 gpr + sa0/1 + lc0/1 + m0/1 + gp + ugp + pred + pc = 42 total.
35 * vm regs = psp+elr+est+badva = 4 35 * vm regs = psp+elr+est+badva = 4
36 * syscall+restart = 2 more 36 * syscall+restart = 2 more
37 * so 48 = 42 +4 + 2 37 * also add cs0/1 = 2
38 * so 48 = 42 + 4 + 2 + 2
38 */ 39 */
39#define DBG_USER_REGS 42 40#define DBG_USER_REGS 42
40#define DBG_MAX_REG_NUM (DBG_USER_REGS + 6) 41#define DBG_MAX_REG_NUM (DBG_USER_REGS + 8)
41#define NUMREGBYTES (DBG_MAX_REG_NUM*4) 42#define NUMREGBYTES (DBG_MAX_REG_NUM*4)
42 43
43#endif /* __HEXAGON_KGDB_H__ */ 44#endif /* __HEXAGON_KGDB_H__ */
diff --git a/arch/hexagon/include/asm/pgalloc.h b/arch/hexagon/include/asm/pgalloc.h
index 4c9d382d7798..77da3b0ae3c2 100644
--- a/arch/hexagon/include/asm/pgalloc.h
+++ b/arch/hexagon/include/asm/pgalloc.h
@@ -45,7 +45,7 @@ static inline pgd_t *pgd_alloc(struct mm_struct *mm)
45 * map with a copy of the kernel's persistent map. 45 * map with a copy of the kernel's persistent map.
46 */ 46 */
47 47
48 memcpy(pgd, swapper_pg_dir, PTRS_PER_PGD*sizeof(pgd_t *)); 48 memcpy(pgd, swapper_pg_dir, PTRS_PER_PGD*sizeof(pgd_t));
49 mm->context.generation = kmap_generation; 49 mm->context.generation = kmap_generation;
50 50
51 /* Physical version is what is passed to virtual machine on switch */ 51 /* Physical version is what is passed to virtual machine on switch */
diff --git a/arch/hexagon/include/asm/smp.h b/arch/hexagon/include/asm/smp.h
index 2b9b974e0952..ca171c13891d 100644
--- a/arch/hexagon/include/asm/smp.h
+++ b/arch/hexagon/include/asm/smp.h
@@ -29,7 +29,6 @@ enum ipi_message_type {
29 IPI_NOP = 0, 29 IPI_NOP = 0,
30 IPI_RESCHEDULE = 1, 30 IPI_RESCHEDULE = 1,
31 IPI_CALL_FUNC, 31 IPI_CALL_FUNC,
32 IPI_CALL_FUNC_SINGLE,
33 IPI_CPU_STOP, 32 IPI_CPU_STOP,
34 IPI_TIMER, 33 IPI_TIMER,
35}; 34};
diff --git a/arch/hexagon/include/uapi/asm/registers.h b/arch/hexagon/include/uapi/asm/registers.h
index 487d6ceca5e7..e7be31840a90 100644
--- a/arch/hexagon/include/uapi/asm/registers.h
+++ b/arch/hexagon/include/uapi/asm/registers.h
@@ -6,8 +6,6 @@
6#ifndef _ASM_REGISTERS_H 6#ifndef _ASM_REGISTERS_H
7#define _ASM_REGISTERS_H 7#define _ASM_REGISTERS_H
8 8
9#define SP r29
10
11#ifndef __ASSEMBLY__ 9#ifndef __ASSEMBLY__
12 10
13/* See kernel/entry.S for further documentation. */ 11/* See kernel/entry.S for further documentation. */
@@ -215,7 +213,7 @@ struct pt_regs {
215#define pt_clr_singlestep(regs) ((regs)->hvmer.vmest &= ~(1<<HVM_VMEST_SS_SFT)) 213#define pt_clr_singlestep(regs) ((regs)->hvmer.vmest &= ~(1<<HVM_VMEST_SS_SFT))
216 214
217#define pt_set_rte_sp(regs, sp) do {\ 215#define pt_set_rte_sp(regs, sp) do {\
218 pt_psp(regs) = (regs)->SP = (sp);\ 216 pt_psp(regs) = (regs)->r29 = (sp);\
219 } while (0) 217 } while (0)
220 218
221#define pt_set_kmode(regs) \ 219#define pt_set_kmode(regs) \
diff --git a/arch/hexagon/include/uapi/asm/setup.h b/arch/hexagon/include/uapi/asm/setup.h
index e48285e4af96..7e3952d6221c 100644
--- a/arch/hexagon/include/uapi/asm/setup.h
+++ b/arch/hexagon/include/uapi/asm/setup.h
@@ -19,7 +19,12 @@
19#ifndef _ASM_SETUP_H 19#ifndef _ASM_SETUP_H
20#define _ASM_SETUP_H 20#define _ASM_SETUP_H
21 21
22#ifdef __KERNEL__
22#include <linux/init.h> 23#include <linux/init.h>
24#else
25#define __init
26#endif
27
23#include <asm-generic/setup.h> 28#include <asm-generic/setup.h>
24 29
25extern char external_cmdline_buffer; 30extern char external_cmdline_buffer;