diff options
author | Thomas Gleixner <tglx@linutronix.de> | 2010-02-21 14:17:22 -0500 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2010-02-21 14:17:22 -0500 |
commit | 5f854cfc024622e4aae14d7cf422f6ff86278688 (patch) | |
tree | 426e77c6f6e4939c80440bf1fabcb020e3ee145b /arch/xtensa | |
parent | cc24da0742870f152ddf1002aa39dfcd83f7cf9c (diff) | |
parent | 4ec62b2b2e6bd7ddef7b6cea6e5db7b5578a6532 (diff) |
Forward to 2.6.33-rc8
Merge branch 'linus' into rt/head with a pile of conflicts.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'arch/xtensa')
-rw-r--r-- | arch/xtensa/include/asm/asm-offsets.h | 1 | ||||
-rw-r--r-- | arch/xtensa/include/asm/cacheflush.h | 1 | ||||
-rw-r--r-- | arch/xtensa/include/asm/elf.h | 1 | ||||
-rw-r--r-- | arch/xtensa/include/asm/mman.h | 5 | ||||
-rw-r--r-- | arch/xtensa/include/asm/socket.h | 5 | ||||
-rw-r--r-- | arch/xtensa/include/asm/syscall.h | 3 | ||||
-rw-r--r-- | arch/xtensa/include/asm/unistd.h | 8 | ||||
-rw-r--r-- | arch/xtensa/kernel/Makefile | 3 | ||||
-rw-r--r-- | arch/xtensa/kernel/head.S | 2 | ||||
-rw-r--r-- | arch/xtensa/kernel/init_task.c | 5 | ||||
-rw-r--r-- | arch/xtensa/kernel/irq.c | 4 | ||||
-rw-r--r-- | arch/xtensa/kernel/syscall.c | 43 | ||||
-rw-r--r-- | arch/xtensa/kernel/time.c | 10 | ||||
-rw-r--r-- | arch/xtensa/kernel/vmlinux.lds.S | 88 | ||||
-rw-r--r-- | arch/xtensa/mm/init.c | 2 | ||||
-rw-r--r-- | arch/xtensa/platforms/iss/console.c | 2 | ||||
-rw-r--r-- | arch/xtensa/platforms/iss/network.c | 2 |
17 files changed, 50 insertions, 135 deletions
diff --git a/arch/xtensa/include/asm/asm-offsets.h b/arch/xtensa/include/asm/asm-offsets.h new file mode 100644 index 000000000000..d370ee36a182 --- /dev/null +++ b/arch/xtensa/include/asm/asm-offsets.h | |||
@@ -0,0 +1 @@ | |||
#include <generated/asm-offsets.h> | |||
diff --git a/arch/xtensa/include/asm/cacheflush.h b/arch/xtensa/include/asm/cacheflush.h index b7b8fbe47c77..a508f2f73bd7 100644 --- a/arch/xtensa/include/asm/cacheflush.h +++ b/arch/xtensa/include/asm/cacheflush.h | |||
@@ -101,6 +101,7 @@ static inline void __invalidate_icache_page_alias(unsigned long virt, | |||
101 | #define flush_cache_vmap(start,end) flush_cache_all() | 101 | #define flush_cache_vmap(start,end) flush_cache_all() |
102 | #define flush_cache_vunmap(start,end) flush_cache_all() | 102 | #define flush_cache_vunmap(start,end) flush_cache_all() |
103 | 103 | ||
104 | #define ARCH_IMPLEMENTS_FLUSH_DCACHE_PAGE 1 | ||
104 | extern void flush_dcache_page(struct page*); | 105 | extern void flush_dcache_page(struct page*); |
105 | extern void flush_cache_range(struct vm_area_struct*, ulong, ulong); | 106 | extern void flush_cache_range(struct vm_area_struct*, ulong, ulong); |
106 | extern void flush_cache_page(struct vm_area_struct*, unsigned long, unsigned long); | 107 | extern void flush_cache_page(struct vm_area_struct*, unsigned long, unsigned long); |
diff --git a/arch/xtensa/include/asm/elf.h b/arch/xtensa/include/asm/elf.h index c3f53e755ca5..5eb6d695e987 100644 --- a/arch/xtensa/include/asm/elf.h +++ b/arch/xtensa/include/asm/elf.h | |||
@@ -123,7 +123,6 @@ extern void xtensa_elf_core_copy_regs (xtensa_gregset_t *, struct pt_regs *); | |||
123 | #define ELF_CLASS ELFCLASS32 | 123 | #define ELF_CLASS ELFCLASS32 |
124 | #define ELF_ARCH EM_XTENSA | 124 | #define ELF_ARCH EM_XTENSA |
125 | 125 | ||
126 | #define USE_ELF_CORE_DUMP | ||
127 | #define ELF_EXEC_PAGESIZE PAGE_SIZE | 126 | #define ELF_EXEC_PAGESIZE PAGE_SIZE |
128 | 127 | ||
129 | /* | 128 | /* |
diff --git a/arch/xtensa/include/asm/mman.h b/arch/xtensa/include/asm/mman.h index 9b92620c8a1e..fca4db425f6e 100644 --- a/arch/xtensa/include/asm/mman.h +++ b/arch/xtensa/include/asm/mman.h | |||
@@ -53,6 +53,8 @@ | |||
53 | #define MAP_LOCKED 0x8000 /* pages are locked */ | 53 | #define MAP_LOCKED 0x8000 /* pages are locked */ |
54 | #define MAP_POPULATE 0x10000 /* populate (prefault) pagetables */ | 54 | #define MAP_POPULATE 0x10000 /* populate (prefault) pagetables */ |
55 | #define MAP_NONBLOCK 0x20000 /* do not block on IO */ | 55 | #define MAP_NONBLOCK 0x20000 /* do not block on IO */ |
56 | #define MAP_STACK 0x40000 /* give out an address that is best suited for process/thread stacks */ | ||
57 | #define MAP_HUGETLB 0x80000 /* create a huge page mapping */ | ||
56 | 58 | ||
57 | /* | 59 | /* |
58 | * Flags for msync | 60 | * Flags for msync |
@@ -78,6 +80,9 @@ | |||
78 | #define MADV_DONTFORK 10 /* don't inherit across fork */ | 80 | #define MADV_DONTFORK 10 /* don't inherit across fork */ |
79 | #define MADV_DOFORK 11 /* do inherit across fork */ | 81 | #define MADV_DOFORK 11 /* do inherit across fork */ |
80 | 82 | ||
83 | #define MADV_MERGEABLE 12 /* KSM may merge identical pages */ | ||
84 | #define MADV_UNMERGEABLE 13 /* KSM may not merge identical pages */ | ||
85 | |||
81 | /* compatibility flags */ | 86 | /* compatibility flags */ |
82 | #define MAP_FILE 0 | 87 | #define MAP_FILE 0 |
83 | 88 | ||
diff --git a/arch/xtensa/include/asm/socket.h b/arch/xtensa/include/asm/socket.h index dd1a7a4a1cea..cbdf2ffaacff 100644 --- a/arch/xtensa/include/asm/socket.h +++ b/arch/xtensa/include/asm/socket.h | |||
@@ -68,4 +68,9 @@ | |||
68 | #define SO_TIMESTAMPING 37 | 68 | #define SO_TIMESTAMPING 37 |
69 | #define SCM_TIMESTAMPING SO_TIMESTAMPING | 69 | #define SCM_TIMESTAMPING SO_TIMESTAMPING |
70 | 70 | ||
71 | #define SO_PROTOCOL 38 | ||
72 | #define SO_DOMAIN 39 | ||
73 | |||
74 | #define SO_RXQ_OVFL 40 | ||
75 | |||
71 | #endif /* _XTENSA_SOCKET_H */ | 76 | #endif /* _XTENSA_SOCKET_H */ |
diff --git a/arch/xtensa/include/asm/syscall.h b/arch/xtensa/include/asm/syscall.h index 05cebf8f62b1..efcf33b92e4c 100644 --- a/arch/xtensa/include/asm/syscall.h +++ b/arch/xtensa/include/asm/syscall.h | |||
@@ -12,9 +12,6 @@ struct pt_regs; | |||
12 | struct sigaction; | 12 | struct sigaction; |
13 | asmlinkage long xtensa_execve(char*, char**, char**, struct pt_regs*); | 13 | asmlinkage long xtensa_execve(char*, char**, char**, struct pt_regs*); |
14 | asmlinkage long xtensa_clone(unsigned long, unsigned long, struct pt_regs*); | 14 | asmlinkage long xtensa_clone(unsigned long, unsigned long, struct pt_regs*); |
15 | asmlinkage long xtensa_pipe(int __user *); | ||
16 | asmlinkage long xtensa_mmap2(unsigned long, unsigned long, unsigned long, | ||
17 | unsigned long, unsigned long, unsigned long); | ||
18 | asmlinkage long xtensa_ptrace(long, long, long, long); | 15 | asmlinkage long xtensa_ptrace(long, long, long, long); |
19 | asmlinkage long xtensa_sigreturn(struct pt_regs*); | 16 | asmlinkage long xtensa_sigreturn(struct pt_regs*); |
20 | asmlinkage long xtensa_rt_sigreturn(struct pt_regs*); | 17 | asmlinkage long xtensa_rt_sigreturn(struct pt_regs*); |
diff --git a/arch/xtensa/include/asm/unistd.h b/arch/xtensa/include/asm/unistd.h index c092c8fbb2cf..528042c2951e 100644 --- a/arch/xtensa/include/asm/unistd.h +++ b/arch/xtensa/include/asm/unistd.h | |||
@@ -94,7 +94,7 @@ __SYSCALL( 35, sys_readlink, 3) | |||
94 | #define __NR_mknod 36 | 94 | #define __NR_mknod 36 |
95 | __SYSCALL( 36, sys_mknod, 3) | 95 | __SYSCALL( 36, sys_mknod, 3) |
96 | #define __NR_pipe 37 | 96 | #define __NR_pipe 37 |
97 | __SYSCALL( 37, xtensa_pipe, 1) | 97 | __SYSCALL( 37, sys_pipe, 1) |
98 | #define __NR_unlink 38 | 98 | #define __NR_unlink 38 |
99 | __SYSCALL( 38, sys_unlink, 1) | 99 | __SYSCALL( 38, sys_unlink, 1) |
100 | #define __NR_rmdir 39 | 100 | #define __NR_rmdir 39 |
@@ -189,7 +189,7 @@ __SYSCALL( 79, sys_fremovexattr, 2) | |||
189 | /* File Map / Shared Memory Operations */ | 189 | /* File Map / Shared Memory Operations */ |
190 | 190 | ||
191 | #define __NR_mmap2 80 | 191 | #define __NR_mmap2 80 |
192 | __SYSCALL( 80, xtensa_mmap2, 6) | 192 | __SYSCALL( 80, sys_mmap_pgoff, 6) |
193 | #define __NR_munmap 81 | 193 | #define __NR_munmap 81 |
194 | __SYSCALL( 81, sys_munmap, 2) | 194 | __SYSCALL( 81, sys_munmap, 2) |
195 | #define __NR_mprotect 82 | 195 | #define __NR_mprotect 82 |
@@ -681,8 +681,10 @@ __SYSCALL(304, sys_signalfd, 3) | |||
681 | __SYSCALL(305, sys_ni_syscall, 0) | 681 | __SYSCALL(305, sys_ni_syscall, 0) |
682 | #define __NR_eventfd 306 | 682 | #define __NR_eventfd 306 |
683 | __SYSCALL(306, sys_eventfd, 1) | 683 | __SYSCALL(306, sys_eventfd, 1) |
684 | #define __NR_recvmmsg 307 | ||
685 | __SYSCALL(307, sys_recvmmsg, 5) | ||
684 | 686 | ||
685 | #define __NR_syscall_count 307 | 687 | #define __NR_syscall_count 308 |
686 | 688 | ||
687 | /* | 689 | /* |
688 | * sysxtensa syscall handler | 690 | * sysxtensa syscall handler |
diff --git a/arch/xtensa/kernel/Makefile b/arch/xtensa/kernel/Makefile index fe3186de6a33..6f56d95f2c1e 100644 --- a/arch/xtensa/kernel/Makefile +++ b/arch/xtensa/kernel/Makefile | |||
@@ -27,7 +27,8 @@ sed-y = -e 's/(\(\.[a-z]*it\|\.ref\|\)\.text)/(\1.literal \1.text)/g' \ | |||
27 | -e 's/(\(\.text\.[a-z]*\))/(\1.literal \1)/g' | 27 | -e 's/(\(\.text\.[a-z]*\))/(\1.literal \1)/g' |
28 | 28 | ||
29 | quiet_cmd__cpp_lds_S = LDS $@ | 29 | quiet_cmd__cpp_lds_S = LDS $@ |
30 | cmd__cpp_lds_S = $(CPP) $(cpp_flags) -D__ASSEMBLY__ $< | sed $(sed-y) >$@ | 30 | cmd__cpp_lds_S = $(CPP) $(cpp_flags) -P -C -Uxtensa -D__ASSEMBLY__ $< \ |
31 | | sed $(sed-y) >$@ | ||
31 | 32 | ||
32 | $(obj)/vmlinux.lds: $(src)/vmlinux.lds.S FORCE | 33 | $(obj)/vmlinux.lds: $(src)/vmlinux.lds.S FORCE |
33 | $(call if_changed_dep,_cpp_lds_S) | 34 | $(call if_changed_dep,_cpp_lds_S) |
diff --git a/arch/xtensa/kernel/head.S b/arch/xtensa/kernel/head.S index d9ddc1ba761c..d215adcfd4ea 100644 --- a/arch/xtensa/kernel/head.S +++ b/arch/xtensa/kernel/head.S | |||
@@ -235,7 +235,7 @@ should_never_return: | |||
235 | * BSS section | 235 | * BSS section |
236 | */ | 236 | */ |
237 | 237 | ||
238 | .section ".bss.page_aligned", "w" | 238 | __PAGE_ALIGNED_BSS |
239 | #ifdef CONFIG_MMU | 239 | #ifdef CONFIG_MMU |
240 | ENTRY(swapper_pg_dir) | 240 | ENTRY(swapper_pg_dir) |
241 | .fill PAGE_SIZE, 1, 0 | 241 | .fill PAGE_SIZE, 1, 0 |
diff --git a/arch/xtensa/kernel/init_task.c b/arch/xtensa/kernel/init_task.c index c4302f0e4ba0..cd122fb7e48a 100644 --- a/arch/xtensa/kernel/init_task.c +++ b/arch/xtensa/kernel/init_task.c | |||
@@ -23,9 +23,8 @@ | |||
23 | 23 | ||
24 | static struct signal_struct init_signals = INIT_SIGNALS(init_signals); | 24 | static struct signal_struct init_signals = INIT_SIGNALS(init_signals); |
25 | static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); | 25 | static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); |
26 | union thread_union init_thread_union | 26 | union thread_union init_thread_union __init_task_data = |
27 | __attribute__((__section__(".data.init_task"))) = | 27 | { INIT_THREAD_INFO(init_task) }; |
28 | { INIT_THREAD_INFO(init_task) }; | ||
29 | 28 | ||
30 | struct task_struct init_task = INIT_TASK(init_task); | 29 | struct task_struct init_task = INIT_TASK(init_task); |
31 | 30 | ||
diff --git a/arch/xtensa/kernel/irq.c b/arch/xtensa/kernel/irq.c index bb599c305033..8cd38484e130 100644 --- a/arch/xtensa/kernel/irq.c +++ b/arch/xtensa/kernel/irq.c | |||
@@ -90,7 +90,7 @@ int show_interrupts(struct seq_file *p, void *v) | |||
90 | } | 90 | } |
91 | 91 | ||
92 | if (i < NR_IRQS) { | 92 | if (i < NR_IRQS) { |
93 | atomic_spin_lock_irqsave(&irq_desc[i].lock, flags); | 93 | raw_spin_lock_irqsave(&irq_desc[i].lock, flags); |
94 | action = irq_desc[i].action; | 94 | action = irq_desc[i].action; |
95 | if (!action) | 95 | if (!action) |
96 | goto skip; | 96 | goto skip; |
@@ -109,7 +109,7 @@ int show_interrupts(struct seq_file *p, void *v) | |||
109 | 109 | ||
110 | seq_putc(p, '\n'); | 110 | seq_putc(p, '\n'); |
111 | skip: | 111 | skip: |
112 | atomic_spin_unlock_irqrestore(&irq_desc[i].lock, flags); | 112 | raw_spin_unlock_irqrestore(&irq_desc[i].lock, flags); |
113 | } else if (i == NR_IRQS) { | 113 | } else if (i == NR_IRQS) { |
114 | seq_printf(p, "NMI: "); | 114 | seq_printf(p, "NMI: "); |
115 | for_each_online_cpu(j) | 115 | for_each_online_cpu(j) |
diff --git a/arch/xtensa/kernel/syscall.c b/arch/xtensa/kernel/syscall.c index ac15ecbdf919..816e6d0d686c 100644 --- a/arch/xtensa/kernel/syscall.c +++ b/arch/xtensa/kernel/syscall.c | |||
@@ -39,49 +39,6 @@ syscall_t sys_call_table[__NR_syscall_count] /* FIXME __cacheline_aligned */= { | |||
39 | #include <asm/unistd.h> | 39 | #include <asm/unistd.h> |
40 | }; | 40 | }; |
41 | 41 | ||
42 | /* | ||
43 | * xtensa_pipe() is the normal C calling standard for creating a pipe. It's not | ||
44 | * the way unix traditional does this, though. | ||
45 | */ | ||
46 | |||
47 | asmlinkage long xtensa_pipe(int __user *userfds) | ||
48 | { | ||
49 | int fd[2]; | ||
50 | int error; | ||
51 | |||
52 | error = do_pipe_flags(fd, 0); | ||
53 | if (!error) { | ||
54 | if (copy_to_user(userfds, fd, 2 * sizeof(int))) | ||
55 | error = -EFAULT; | ||
56 | } | ||
57 | return error; | ||
58 | } | ||
59 | |||
60 | |||
61 | asmlinkage long xtensa_mmap2(unsigned long addr, unsigned long len, | ||
62 | unsigned long prot, unsigned long flags, | ||
63 | unsigned long fd, unsigned long pgoff) | ||
64 | { | ||
65 | int error = -EBADF; | ||
66 | struct file * file = NULL; | ||
67 | |||
68 | flags &= ~(MAP_EXECUTABLE | MAP_DENYWRITE); | ||
69 | if (!(flags & MAP_ANONYMOUS)) { | ||
70 | file = fget(fd); | ||
71 | if (!file) | ||
72 | goto out; | ||
73 | } | ||
74 | |||
75 | down_write(¤t->mm->mmap_sem); | ||
76 | error = do_mmap_pgoff(file, addr, len, prot, flags, pgoff); | ||
77 | up_write(¤t->mm->mmap_sem); | ||
78 | |||
79 | if (file) | ||
80 | fput(file); | ||
81 | out: | ||
82 | return error; | ||
83 | } | ||
84 | |||
85 | asmlinkage long xtensa_shmat(int shmid, char __user *shmaddr, int shmflg) | 42 | asmlinkage long xtensa_shmat(int shmid, char __user *shmaddr, int shmflg) |
86 | { | 43 | { |
87 | unsigned long ret; | 44 | unsigned long ret; |
diff --git a/arch/xtensa/kernel/time.c b/arch/xtensa/kernel/time.c index 8848120d291b..e8184d5aeedb 100644 --- a/arch/xtensa/kernel/time.c +++ b/arch/xtensa/kernel/time.c | |||
@@ -13,6 +13,7 @@ | |||
13 | */ | 13 | */ |
14 | 14 | ||
15 | #include <linux/errno.h> | 15 | #include <linux/errno.h> |
16 | #include <linux/sched.h> | ||
16 | #include <linux/time.h> | 17 | #include <linux/time.h> |
17 | #include <linux/clocksource.h> | 18 | #include <linux/clocksource.h> |
18 | #include <linux/interrupt.h> | 19 | #include <linux/interrupt.h> |
@@ -59,9 +60,8 @@ static struct irqaction timer_irqaction = { | |||
59 | 60 | ||
60 | void __init time_init(void) | 61 | void __init time_init(void) |
61 | { | 62 | { |
62 | xtime.tv_nsec = 0; | 63 | /* FIXME: xtime&wall_to_monotonic are set in timekeeping_init. */ |
63 | xtime.tv_sec = read_persistent_clock(); | 64 | read_persistent_clock(&xtime); |
64 | |||
65 | set_normalized_timespec(&wall_to_monotonic, | 65 | set_normalized_timespec(&wall_to_monotonic, |
66 | -xtime.tv_sec, -xtime.tv_nsec); | 66 | -xtime.tv_sec, -xtime.tv_nsec); |
67 | 67 | ||
@@ -101,7 +101,7 @@ again: | |||
101 | update_process_times(user_mode(get_irq_regs())); | 101 | update_process_times(user_mode(get_irq_regs())); |
102 | #endif | 102 | #endif |
103 | 103 | ||
104 | write_seqlock(&xtime_lock); | 104 | write_raw_seqlock(&xtime_lock); |
105 | 105 | ||
106 | do_timer(1); /* Linux handler in kernel/timer.c */ | 106 | do_timer(1); /* Linux handler in kernel/timer.c */ |
107 | 107 | ||
@@ -110,7 +110,7 @@ again: | |||
110 | next += CCOUNT_PER_JIFFY; | 110 | next += CCOUNT_PER_JIFFY; |
111 | set_linux_timer(next); | 111 | set_linux_timer(next); |
112 | 112 | ||
113 | write_sequnlock(&xtime_lock); | 113 | write_raw_sequnlock(&xtime_lock); |
114 | } | 114 | } |
115 | 115 | ||
116 | /* Allow platform to do something useful (Wdog). */ | 116 | /* Allow platform to do something useful (Wdog). */ |
diff --git a/arch/xtensa/kernel/vmlinux.lds.S b/arch/xtensa/kernel/vmlinux.lds.S index 41c159cd872f..9b526154c9ba 100644 --- a/arch/xtensa/kernel/vmlinux.lds.S +++ b/arch/xtensa/kernel/vmlinux.lds.S | |||
@@ -15,6 +15,8 @@ | |||
15 | */ | 15 | */ |
16 | 16 | ||
17 | #include <asm-generic/vmlinux.lds.h> | 17 | #include <asm-generic/vmlinux.lds.h> |
18 | #include <asm/page.h> | ||
19 | #include <asm/thread_info.h> | ||
18 | 20 | ||
19 | #include <variant/core.h> | 21 | #include <variant/core.h> |
20 | #include <platform/hardware.h> | 22 | #include <platform/hardware.h> |
@@ -107,41 +109,18 @@ SECTIONS | |||
107 | 109 | ||
108 | .fixup : { *(.fixup) } | 110 | .fixup : { *(.fixup) } |
109 | 111 | ||
110 | . = ALIGN(16); | 112 | EXCEPTION_TABLE(16) |
111 | |||
112 | __ex_table : { | ||
113 | __start___ex_table = .; | ||
114 | *(__ex_table) | ||
115 | __stop___ex_table = .; | ||
116 | } | ||
117 | |||
118 | /* Data section */ | 113 | /* Data section */ |
119 | 114 | ||
120 | . = ALIGN(XCHAL_ICACHE_LINESIZE); | ||
121 | _fdata = .; | 115 | _fdata = .; |
122 | .data : | 116 | RW_DATA_SECTION(XCHAL_ICACHE_LINESIZE, PAGE_SIZE, THREAD_SIZE) |
123 | { | ||
124 | DATA_DATA | ||
125 | CONSTRUCTORS | ||
126 | . = ALIGN(XCHAL_ICACHE_LINESIZE); | ||
127 | *(.data.cacheline_aligned) | ||
128 | } | ||
129 | |||
130 | _edata = .; | 117 | _edata = .; |
131 | 118 | ||
132 | /* The initial task */ | ||
133 | . = ALIGN(8192); | ||
134 | .data.init_task : { *(.data.init_task) } | ||
135 | |||
136 | /* Initialization code and data: */ | 119 | /* Initialization code and data: */ |
137 | 120 | ||
138 | . = ALIGN(1 << 12); | 121 | . = ALIGN(PAGE_SIZE); |
139 | __init_begin = .; | 122 | __init_begin = .; |
140 | .init.text : { | 123 | INIT_TEXT_SECTION(PAGE_SIZE) |
141 | _sinittext = .; | ||
142 | INIT_TEXT | ||
143 | _einittext = .; | ||
144 | } | ||
145 | 124 | ||
146 | .init.data : | 125 | .init.data : |
147 | { | 126 | { |
@@ -168,36 +147,15 @@ SECTIONS | |||
168 | .DebugInterruptVector.text); | 147 | .DebugInterruptVector.text); |
169 | 148 | ||
170 | __boot_reloc_table_end = ABSOLUTE(.) ; | 149 | __boot_reloc_table_end = ABSOLUTE(.) ; |
171 | } | ||
172 | 150 | ||
173 | . = ALIGN(XCHAL_ICACHE_LINESIZE); | 151 | INIT_SETUP(XCHAL_ICACHE_LINESIZE) |
174 | 152 | INIT_CALLS | |
175 | __setup_start = .; | 153 | CON_INITCALL |
176 | .init.setup : { *(.init.setup) } | 154 | SECURITY_INITCALL |
177 | __setup_end = .; | 155 | INIT_RAM_FS |
178 | |||
179 | __initcall_start = .; | ||
180 | .initcall.init : { | ||
181 | INITCALLS | ||
182 | } | 156 | } |
183 | __initcall_end = .; | ||
184 | |||
185 | __con_initcall_start = .; | ||
186 | .con_initcall.init : { *(.con_initcall.init) } | ||
187 | __con_initcall_end = .; | ||
188 | |||
189 | SECURITY_INIT | ||
190 | |||
191 | |||
192 | #ifdef CONFIG_BLK_DEV_INITRD | ||
193 | . = ALIGN(4096); | ||
194 | __initramfs_start =.; | ||
195 | .init.ramfs : { *(.init.ramfs) } | ||
196 | __initramfs_end = .; | ||
197 | #endif | ||
198 | |||
199 | PERCPU(4096) | ||
200 | 157 | ||
158 | PERCPU(PAGE_SIZE) | ||
201 | 159 | ||
202 | /* We need this dummy segment here */ | 160 | /* We need this dummy segment here */ |
203 | 161 | ||
@@ -252,16 +210,11 @@ SECTIONS | |||
252 | .DoubleExceptionVector.literal) | 210 | .DoubleExceptionVector.literal) |
253 | 211 | ||
254 | . = (LOADADDR( .DoubleExceptionVector.text ) + SIZEOF( .DoubleExceptionVector.text ) + 3) & ~ 3; | 212 | . = (LOADADDR( .DoubleExceptionVector.text ) + SIZEOF( .DoubleExceptionVector.text ) + 3) & ~ 3; |
255 | . = ALIGN(1 << 12); | 213 | . = ALIGN(PAGE_SIZE); |
256 | 214 | ||
257 | __init_end = .; | 215 | __init_end = .; |
258 | 216 | ||
259 | . = ALIGN(8192); | 217 | BSS_SECTION(0, 8192, 0) |
260 | |||
261 | /* BSS section */ | ||
262 | _bss_start = .; | ||
263 | .bss : { *(.bss.page_aligned) *(.bss) } | ||
264 | _bss_end = .; | ||
265 | 218 | ||
266 | _end = .; | 219 | _end = .; |
267 | 220 | ||
@@ -280,15 +233,6 @@ SECTIONS | |||
280 | *(.ResetVector.text) | 233 | *(.ResetVector.text) |
281 | } | 234 | } |
282 | 235 | ||
283 | /* Sections to be discarded */ | ||
284 | /DISCARD/ : | ||
285 | { | ||
286 | *(.exit.literal) | ||
287 | EXIT_TEXT | ||
288 | EXIT_DATA | ||
289 | *(.exitcall.exit) | ||
290 | } | ||
291 | |||
292 | .xt.lit : { *(.xt.lit) } | 236 | .xt.lit : { *(.xt.lit) } |
293 | .xt.prop : { *(.xt.prop) } | 237 | .xt.prop : { *(.xt.prop) } |
294 | 238 | ||
@@ -321,4 +265,8 @@ SECTIONS | |||
321 | *(.xt.lit) | 265 | *(.xt.lit) |
322 | *(.gnu.linkonce.p*) | 266 | *(.gnu.linkonce.p*) |
323 | } | 267 | } |
268 | |||
269 | /* Sections to be discarded */ | ||
270 | DISCARDS | ||
271 | /DISCARD/ : { *(.exit.literal) } | ||
324 | } | 272 | } |
diff --git a/arch/xtensa/mm/init.c b/arch/xtensa/mm/init.c index 427e14fa43c5..cdbc27ca9665 100644 --- a/arch/xtensa/mm/init.c +++ b/arch/xtensa/mm/init.c | |||
@@ -203,7 +203,7 @@ void __init mem_init(void) | |||
203 | 203 | ||
204 | printk("Memory: %luk/%luk available (%ldk kernel code, %ldk reserved, " | 204 | printk("Memory: %luk/%luk available (%ldk kernel code, %ldk reserved, " |
205 | "%ldk data, %ldk init %ldk highmem)\n", | 205 | "%ldk data, %ldk init %ldk highmem)\n", |
206 | (unsigned long) nr_free_pages() << (PAGE_SHIFT-10), | 206 | nr_free_pages() << (PAGE_SHIFT-10), |
207 | ram << (PAGE_SHIFT-10), | 207 | ram << (PAGE_SHIFT-10), |
208 | codesize >> 10, | 208 | codesize >> 10, |
209 | reservedpages << (PAGE_SHIFT-10), | 209 | reservedpages << (PAGE_SHIFT-10), |
diff --git a/arch/xtensa/platforms/iss/console.c b/arch/xtensa/platforms/iss/console.c index 4c559cf7da2d..e60a1f57022f 100644 --- a/arch/xtensa/platforms/iss/console.c +++ b/arch/xtensa/platforms/iss/console.c | |||
@@ -196,7 +196,7 @@ static const struct file_operations rs_proc_fops = { | |||
196 | .release = single_release, | 196 | .release = single_release, |
197 | }; | 197 | }; |
198 | 198 | ||
199 | static struct tty_operations serial_ops = { | 199 | static const struct tty_operations serial_ops = { |
200 | .open = rs_open, | 200 | .open = rs_open, |
201 | .close = rs_close, | 201 | .close = rs_close, |
202 | .write = rs_write, | 202 | .write = rs_write, |
diff --git a/arch/xtensa/platforms/iss/network.c b/arch/xtensa/platforms/iss/network.c index edad4156d89a..2f0b86b37cf9 100644 --- a/arch/xtensa/platforms/iss/network.c +++ b/arch/xtensa/platforms/iss/network.c | |||
@@ -545,7 +545,7 @@ static int iss_net_start_xmit(struct sk_buff *skb, struct net_device *dev) | |||
545 | spin_unlock_irqrestore(&lp->lock, flags); | 545 | spin_unlock_irqrestore(&lp->lock, flags); |
546 | 546 | ||
547 | dev_kfree_skb(skb); | 547 | dev_kfree_skb(skb); |
548 | return 0; | 548 | return NETDEV_TX_OK; |
549 | } | 549 | } |
550 | 550 | ||
551 | 551 | ||