diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2008-03-27 12:14:07 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-03-27 12:14:07 -0400 |
commit | 074fcab574a36edec35d2e74955250f2e17d6000 (patch) | |
tree | 390ae7918c13494108f3c59ea137efb0647ee4e5 | |
parent | c94b4321ebde51a80a805f7a5e102ac083ae2ac9 (diff) | |
parent | a2a395256134a24d906d5e67e03e853c580b37ed (diff) |
Merge branch 'avr32-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/hskinnemoen/avr32-2.6
* 'avr32-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/hskinnemoen/avr32-2.6:
avr32: Fix bug in early resource allocation code
avr32: Build fix for CONFIG_BUG=n
avr32: Work around byteswap bug in gcc < 4.2
-rw-r--r-- | arch/avr32/kernel/setup.c | 1 | ||||
-rw-r--r-- | arch/avr32/kernel/traps.c | 4 | ||||
-rw-r--r-- | include/asm-avr32/byteorder.h | 6 |
3 files changed, 11 insertions, 0 deletions
diff --git a/arch/avr32/kernel/setup.c b/arch/avr32/kernel/setup.c index e66a07a928cd..2687b730e2d0 100644 --- a/arch/avr32/kernel/setup.c +++ b/arch/avr32/kernel/setup.c | |||
@@ -163,6 +163,7 @@ add_reserved_region(resource_size_t start, resource_size_t end, | |||
163 | new->start = start; | 163 | new->start = start; |
164 | new->end = end; | 164 | new->end = end; |
165 | new->name = name; | 165 | new->name = name; |
166 | new->sibling = next; | ||
166 | new->flags = IORESOURCE_MEM; | 167 | new->flags = IORESOURCE_MEM; |
167 | 168 | ||
168 | *pprev = new; | 169 | *pprev = new; |
diff --git a/arch/avr32/kernel/traps.c b/arch/avr32/kernel/traps.c index cf6f686d9b0b..b835c4c01368 100644 --- a/arch/avr32/kernel/traps.c +++ b/arch/avr32/kernel/traps.c | |||
@@ -178,6 +178,7 @@ static int do_cop_absent(u32 insn) | |||
178 | return 0; | 178 | return 0; |
179 | } | 179 | } |
180 | 180 | ||
181 | #ifdef CONFIG_BUG | ||
181 | int is_valid_bugaddr(unsigned long pc) | 182 | int is_valid_bugaddr(unsigned long pc) |
182 | { | 183 | { |
183 | unsigned short opcode; | 184 | unsigned short opcode; |
@@ -189,6 +190,7 @@ int is_valid_bugaddr(unsigned long pc) | |||
189 | 190 | ||
190 | return opcode == AVR32_BUG_OPCODE; | 191 | return opcode == AVR32_BUG_OPCODE; |
191 | } | 192 | } |
193 | #endif | ||
192 | 194 | ||
193 | asmlinkage void do_illegal_opcode(unsigned long ecr, struct pt_regs *regs) | 195 | asmlinkage void do_illegal_opcode(unsigned long ecr, struct pt_regs *regs) |
194 | { | 196 | { |
@@ -197,6 +199,7 @@ asmlinkage void do_illegal_opcode(unsigned long ecr, struct pt_regs *regs) | |||
197 | void __user *pc; | 199 | void __user *pc; |
198 | long code; | 200 | long code; |
199 | 201 | ||
202 | #ifdef CONFIG_BUG | ||
200 | if (!user_mode(regs) && (ecr == ECR_ILLEGAL_OPCODE)) { | 203 | if (!user_mode(regs) && (ecr == ECR_ILLEGAL_OPCODE)) { |
201 | enum bug_trap_type type; | 204 | enum bug_trap_type type; |
202 | 205 | ||
@@ -211,6 +214,7 @@ asmlinkage void do_illegal_opcode(unsigned long ecr, struct pt_regs *regs) | |||
211 | die("Kernel BUG", regs, SIGKILL); | 214 | die("Kernel BUG", regs, SIGKILL); |
212 | } | 215 | } |
213 | } | 216 | } |
217 | #endif | ||
214 | 218 | ||
215 | local_irq_enable(); | 219 | local_irq_enable(); |
216 | 220 | ||
diff --git a/include/asm-avr32/byteorder.h b/include/asm-avr32/byteorder.h index 402ff4125cdc..d77b48ba7338 100644 --- a/include/asm-avr32/byteorder.h +++ b/include/asm-avr32/byteorder.h | |||
@@ -12,8 +12,14 @@ extern unsigned long __builtin_bswap_32(unsigned long x); | |||
12 | extern unsigned short __builtin_bswap_16(unsigned short x); | 12 | extern unsigned short __builtin_bswap_16(unsigned short x); |
13 | #endif | 13 | #endif |
14 | 14 | ||
15 | /* | ||
16 | * avr32-linux-gcc versions earlier than 4.2 improperly sign-extends | ||
17 | * the result. | ||
18 | */ | ||
19 | #if !(__GNUC__ == 4 && __GNUC_MINOR__ < 2) | ||
15 | #define __arch__swab32(x) __builtin_bswap_32(x) | 20 | #define __arch__swab32(x) __builtin_bswap_32(x) |
16 | #define __arch__swab16(x) __builtin_bswap_16(x) | 21 | #define __arch__swab16(x) __builtin_bswap_16(x) |
22 | #endif | ||
17 | 23 | ||
18 | #if !defined(__STRICT_ANSI__) || defined(__KERNEL__) | 24 | #if !defined(__STRICT_ANSI__) || defined(__KERNEL__) |
19 | # define __BYTEORDER_HAS_U64__ | 25 | # define __BYTEORDER_HAS_U64__ |