diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2013-03-03 15:06:09 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-03-03 15:06:09 -0500 |
commit | 8fd5e7a2d9574b3cac1c9264ad1aed3b613ed6fe (patch) | |
tree | 5696f5d31c6c75b71bfc4852fb234b773e266cfe /include | |
parent | 529e5fbcd8d3cb48cf824ac8fde91cc80a9e985f (diff) | |
parent | c60ac31542e93499b58dcfc1e3f6550ba5b5728e (diff) |
Merge tag 'metag-v3.9-rc1-v4' of git://git.kernel.org/pub/scm/linux/kernel/git/jhogan/metag
Pull new ImgTec Meta architecture from James Hogan:
"This adds core architecture support for Imagination's Meta processor
cores, followed by some later miscellaneous arch/metag cleanups and
fixes which I kept separate to ease review:
- Support for basic Meta 1 (ATP) and Meta 2 (HTP) core architecture
- A few fixes all over, particularly for symbol prefixes
- A few privilege protection fixes
- Several cleanups (setup.c includes, split out a lot of
metag_ksyms.c)
- Fix some missing exports
- Convert hugetlb to use vm_unmapped_area()
- Copy device tree to non-init memory
- Provide dma_get_sgtable()"
* tag 'metag-v3.9-rc1-v4' of git://git.kernel.org/pub/scm/linux/kernel/git/jhogan/metag: (61 commits)
metag: Provide dma_get_sgtable()
metag: prom.h: remove declaration of metag_dt_memblock_reserve()
metag: copy devicetree to non-init memory
metag: cleanup metag_ksyms.c includes
metag: move mm/init.c exports out of metag_ksyms.c
metag: move usercopy.c exports out of metag_ksyms.c
metag: move setup.c exports out of metag_ksyms.c
metag: move kick.c exports out of metag_ksyms.c
metag: move traps.c exports out of metag_ksyms.c
metag: move irq enable out of irqflags.h on SMP
genksyms: fix metag symbol prefix on crc symbols
metag: hugetlb: convert to vm_unmapped_area()
metag: export clear_page and copy_page
metag: export metag_code_cache_flush_all
metag: protect more non-MMU memory regions
metag: make TXPRIVEXT bits explicit
metag: kernel/setup.c: sort includes
perf: Enable building perf tools for Meta
metag: add boot time LNKGET/LNKSET check
metag: add __init to metag_cache_probe()
...
Diffstat (limited to 'include')
-rw-r--r-- | include/asm-generic/io.h | 2 | ||||
-rw-r--r-- | include/asm-generic/unistd.h | 9 | ||||
-rw-r--r-- | include/clocksource/metag_generic.h | 21 | ||||
-rw-r--r-- | include/linux/irqchip/metag-ext.h | 33 | ||||
-rw-r--r-- | include/linux/irqchip/metag.h | 24 | ||||
-rw-r--r-- | include/linux/mm.h | 2 | ||||
-rw-r--r-- | include/uapi/linux/elf.h | 2 |
7 files changed, 92 insertions, 1 deletions
diff --git a/include/asm-generic/io.h b/include/asm-generic/io.h index aba53083297d..ac9da00e9f2c 100644 --- a/include/asm-generic/io.h +++ b/include/asm-generic/io.h | |||
@@ -346,6 +346,7 @@ extern void ioport_unmap(void __iomem *p); | |||
346 | #define xlate_dev_kmem_ptr(p) p | 346 | #define xlate_dev_kmem_ptr(p) p |
347 | #define xlate_dev_mem_ptr(p) __va(p) | 347 | #define xlate_dev_mem_ptr(p) __va(p) |
348 | 348 | ||
349 | #ifdef CONFIG_VIRT_TO_BUS | ||
349 | #ifndef virt_to_bus | 350 | #ifndef virt_to_bus |
350 | static inline unsigned long virt_to_bus(volatile void *address) | 351 | static inline unsigned long virt_to_bus(volatile void *address) |
351 | { | 352 | { |
@@ -357,6 +358,7 @@ static inline void *bus_to_virt(unsigned long address) | |||
357 | return (void *) address; | 358 | return (void *) address; |
358 | } | 359 | } |
359 | #endif | 360 | #endif |
361 | #endif | ||
360 | 362 | ||
361 | #ifndef memset_io | 363 | #ifndef memset_io |
362 | #define memset_io(a, b, c) memset(__io_virt(a), (b), (c)) | 364 | #define memset_io(a, b, c) memset(__io_virt(a), (b), (c)) |
diff --git a/include/asm-generic/unistd.h b/include/asm-generic/unistd.h index 257c55ec4f77..4077b5d9ff81 100644 --- a/include/asm-generic/unistd.h +++ b/include/asm-generic/unistd.h | |||
@@ -17,5 +17,12 @@ | |||
17 | * but it doesn't work on all toolchains, so we just do it by hand | 17 | * but it doesn't work on all toolchains, so we just do it by hand |
18 | */ | 18 | */ |
19 | #ifndef cond_syscall | 19 | #ifndef cond_syscall |
20 | #define cond_syscall(x) asm(".weak\t" #x "\n\t.set\t" #x ",sys_ni_syscall") | 20 | #ifdef CONFIG_SYMBOL_PREFIX |
21 | #define __SYMBOL_PREFIX CONFIG_SYMBOL_PREFIX | ||
22 | #else | ||
23 | #define __SYMBOL_PREFIX | ||
24 | #endif | ||
25 | #define cond_syscall(x) asm(".weak\t" __SYMBOL_PREFIX #x "\n\t" \ | ||
26 | ".set\t" __SYMBOL_PREFIX #x "," \ | ||
27 | __SYMBOL_PREFIX "sys_ni_syscall") | ||
21 | #endif | 28 | #endif |
diff --git a/include/clocksource/metag_generic.h b/include/clocksource/metag_generic.h new file mode 100644 index 000000000000..ac17e7d06cfb --- /dev/null +++ b/include/clocksource/metag_generic.h | |||
@@ -0,0 +1,21 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2013 Imaginaton Technologies Ltd. | ||
3 | * | ||
4 | * This program is free software; you can redistribute it and/or modify | ||
5 | * it under the terms of the GNU General Public License version 2 as | ||
6 | * published by the Free Software Foundation. | ||
7 | * | ||
8 | * This program is distributed in the hope that it will be useful, | ||
9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
11 | * GNU General Public License for more details. | ||
12 | * | ||
13 | * You should have received a copy of the GNU General Public License | ||
14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
15 | */ | ||
16 | #ifndef __CLKSOURCE_METAG_GENERIC_H | ||
17 | #define __CLKSOURCE_METAG_GENERIC_H | ||
18 | |||
19 | extern int metag_generic_timer_init(void); | ||
20 | |||
21 | #endif /* __CLKSOURCE_METAG_GENERIC_H */ | ||
diff --git a/include/linux/irqchip/metag-ext.h b/include/linux/irqchip/metag-ext.h new file mode 100644 index 000000000000..697af0fe7c5a --- /dev/null +++ b/include/linux/irqchip/metag-ext.h | |||
@@ -0,0 +1,33 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2012 Imagination Technologies | ||
3 | */ | ||
4 | |||
5 | #ifndef _LINUX_IRQCHIP_METAG_EXT_H_ | ||
6 | #define _LINUX_IRQCHIP_METAG_EXT_H_ | ||
7 | |||
8 | struct irq_data; | ||
9 | struct platform_device; | ||
10 | |||
11 | /* called from core irq code at init */ | ||
12 | int init_external_IRQ(void); | ||
13 | |||
14 | /* | ||
15 | * called from SoC init_irq() callback to dynamically indicate the lack of | ||
16 | * HWMASKEXT registers. | ||
17 | */ | ||
18 | void meta_intc_no_mask(void); | ||
19 | |||
20 | /* | ||
21 | * These allow SoCs to specialise the interrupt controller from their init_irq | ||
22 | * callbacks. | ||
23 | */ | ||
24 | |||
25 | extern struct irq_chip meta_intc_edge_chip; | ||
26 | extern struct irq_chip meta_intc_level_chip; | ||
27 | |||
28 | /* this should be called in the mask callback */ | ||
29 | void meta_intc_mask_irq_simple(struct irq_data *data); | ||
30 | /* this should be called in the unmask callback */ | ||
31 | void meta_intc_unmask_irq_simple(struct irq_data *data); | ||
32 | |||
33 | #endif /* _LINUX_IRQCHIP_METAG_EXT_H_ */ | ||
diff --git a/include/linux/irqchip/metag.h b/include/linux/irqchip/metag.h new file mode 100644 index 000000000000..4ebdfb3101ab --- /dev/null +++ b/include/linux/irqchip/metag.h | |||
@@ -0,0 +1,24 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2011 Imagination Technologies | ||
3 | */ | ||
4 | |||
5 | #ifndef _LINUX_IRQCHIP_METAG_H_ | ||
6 | #define _LINUX_IRQCHIP_METAG_H_ | ||
7 | |||
8 | #include <linux/errno.h> | ||
9 | |||
10 | #ifdef CONFIG_METAG_PERFCOUNTER_IRQS | ||
11 | extern int init_internal_IRQ(void); | ||
12 | extern int internal_irq_map(unsigned int hw); | ||
13 | #else | ||
14 | static inline int init_internal_IRQ(void) | ||
15 | { | ||
16 | return 0; | ||
17 | } | ||
18 | static inline int internal_irq_map(unsigned int hw) | ||
19 | { | ||
20 | return -EINVAL; | ||
21 | } | ||
22 | #endif | ||
23 | |||
24 | #endif /* _LINUX_IRQCHIP_METAG_H_ */ | ||
diff --git a/include/linux/mm.h b/include/linux/mm.h index 1ede55f292c2..7acc9dc73c9f 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h | |||
@@ -115,6 +115,8 @@ extern unsigned int kobjsize(const void *objp); | |||
115 | # define VM_SAO VM_ARCH_1 /* Strong Access Ordering (powerpc) */ | 115 | # define VM_SAO VM_ARCH_1 /* Strong Access Ordering (powerpc) */ |
116 | #elif defined(CONFIG_PARISC) | 116 | #elif defined(CONFIG_PARISC) |
117 | # define VM_GROWSUP VM_ARCH_1 | 117 | # define VM_GROWSUP VM_ARCH_1 |
118 | #elif defined(CONFIG_METAG) | ||
119 | # define VM_GROWSUP VM_ARCH_1 | ||
118 | #elif defined(CONFIG_IA64) | 120 | #elif defined(CONFIG_IA64) |
119 | # define VM_GROWSUP VM_ARCH_1 | 121 | # define VM_GROWSUP VM_ARCH_1 |
120 | #elif !defined(CONFIG_MMU) | 122 | #elif !defined(CONFIG_MMU) |
diff --git a/include/uapi/linux/elf.h b/include/uapi/linux/elf.h index 900b9484445b..8072d352b98f 100644 --- a/include/uapi/linux/elf.h +++ b/include/uapi/linux/elf.h | |||
@@ -395,6 +395,8 @@ typedef struct elf64_shdr { | |||
395 | #define NT_ARM_TLS 0x401 /* ARM TLS register */ | 395 | #define NT_ARM_TLS 0x401 /* ARM TLS register */ |
396 | #define NT_ARM_HW_BREAK 0x402 /* ARM hardware breakpoint registers */ | 396 | #define NT_ARM_HW_BREAK 0x402 /* ARM hardware breakpoint registers */ |
397 | #define NT_ARM_HW_WATCH 0x403 /* ARM hardware watchpoint registers */ | 397 | #define NT_ARM_HW_WATCH 0x403 /* ARM hardware watchpoint registers */ |
398 | #define NT_METAG_CBUF 0x500 /* Metag catch buffer registers */ | ||
399 | #define NT_METAG_RPIPE 0x501 /* Metag read pipeline state */ | ||
398 | 400 | ||
399 | 401 | ||
400 | /* Note header in a PT_NOTE section */ | 402 | /* Note header in a PT_NOTE section */ |