Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge master.kernel.org:/home/rmk/linux-2.6-arm

* master.kernel.org:/home/rmk/linux-2.6-arm:
[ARM] Fix alignment fault handling for ARMv6 and later CPUs
[ARM] 5340/1: fix stack placement after noexecstack changes
[ARM] 5339/1: fix __fls() on ARM
[ARM] Orion: fix bug in pcie configuration cycle function field mask
[ARM] omap: fix a pile of issues

+43 -19
+10 -6
arch/arm/include/asm/bitops.h
··· 237 237 #if __LINUX_ARM_ARCH__ < 5 238 238 239 239 #include <asm-generic/bitops/ffz.h> 240 + #include <asm-generic/bitops/__fls.h> 240 241 #include <asm-generic/bitops/__ffs.h> 241 242 #include <asm-generic/bitops/fls.h> 242 243 #include <asm-generic/bitops/ffs.h> ··· 278 277 * the clz instruction for much better code efficiency. 279 278 */ 280 279 281 - #define __fls(x) \ 282 - ( __builtin_constant_p(x) ? constant_fls(x) : \ 283 - ({ int __r; asm("clz\t%0, %1" : "=r"(__r) : "r"(x) : "cc"); 32-__r; }) ) 284 - 285 - /* Implement fls() in C so that 64-bit args are suitably truncated */ 286 280 static inline int fls(int x) 287 281 { 288 - return __fls(x); 282 + int ret; 283 + 284 + if (__builtin_constant_p(x)) 285 + return constant_fls(x); 286 + 287 + asm("clz\t%0, %1" : "=r" (ret) : "r" (x) : "cc"); 288 + ret = 32 - ret; 289 + return ret; 289 290 } 290 291 292 + #define __fls(x) (fls(x) - 1) 291 293 #define ffs(x) ({ unsigned long __t = (x); fls(__t & -__t); }) 292 294 #define __ffs(x) (ffs(x) - 1) 293 295 #define ffz(x) __ffs( ~(x) )
+1 -1
arch/arm/include/asm/processor.h
··· 23 23 #include <asm/types.h> 24 24 25 25 #ifdef __KERNEL__ 26 - #define STACK_TOP ((current->personality == PER_LINUX_32BIT) ? \ 26 + #define STACK_TOP ((current->personality & ADDR_LIMIT_32BIT) ? \ 27 27 TASK_SIZE : TASK_SIZE_26) 28 28 #define STACK_TOP_MAX TASK_SIZE 29 29 #endif
+1 -1
arch/arm/mach-omap1/io.c
··· 128 128 * Common low-level hardware init for omap1. This should only get called from 129 129 * board specific init. 130 130 */ 131 - void __init omap1_init_common_hw() 131 + void __init omap1_init_common_hw(void) 132 132 { 133 133 /* REVISIT: Refer to OMAP5910 Errata, Advisory SYS_1: "Timeout Abort 134 134 * on a Posted Write in the TIPB Bridge".
+23 -3
arch/arm/mm/alignment.c
··· 70 70 static unsigned long ai_multi; 71 71 static int ai_usermode; 72 72 73 + #define UM_WARN (1 << 0) 74 + #define UM_FIXUP (1 << 1) 75 + #define UM_SIGNAL (1 << 2) 76 + 73 77 #ifdef CONFIG_PROC_FS 74 78 static const char *usermode_action[] = { 75 79 "ignored", ··· 758 754 user: 759 755 ai_user += 1; 760 756 761 - if (ai_usermode & 1) 757 + if (ai_usermode & UM_WARN) 762 758 printk("Alignment trap: %s (%d) PC=0x%08lx Instr=0x%0*lx " 763 759 "Address=0x%08lx FSR 0x%03x\n", current->comm, 764 760 task_pid_nr(current), instrptr, ··· 766 762 thumb_mode(regs) ? tinstr : instr, 767 763 addr, fsr); 768 764 769 - if (ai_usermode & 2) 765 + if (ai_usermode & UM_FIXUP) 770 766 goto fixup; 771 767 772 - if (ai_usermode & 4) 768 + if (ai_usermode & UM_SIGNAL) 773 769 force_sig(SIGBUS, current); 774 770 else 775 771 set_cr(cr_no_alignment); ··· 799 795 res->read_proc = proc_alignment_read; 800 796 res->write_proc = proc_alignment_write; 801 797 #endif 798 + 799 + /* 800 + * ARMv6 and later CPUs can perform unaligned accesses for 801 + * most single load and store instructions up to word size. 802 + * LDM, STM, LDRD and STRD still need to be handled. 803 + * 804 + * Ignoring the alignment fault is not an option on these 805 + * CPUs since we spin re-faulting the instruction without 806 + * making any progress. 807 + */ 808 + if (cpu_architecture() >= CPU_ARCH_ARMv6 && (cr_alignment & CR_U)) { 809 + cr_alignment &= ~CR_A; 810 + cr_no_alignment &= ~CR_A; 811 + set_cr(cr_alignment); 812 + ai_usermode = UM_FIXUP; 813 + } 802 814 803 815 hook_fault_code(1, do_alignment, SIGILL, "alignment exception"); 804 816 hook_fault_code(3, do_alignment, SIGILL, "alignment exception");
+2 -2
arch/arm/plat-omap/include/mach/omapfb.h
··· 353 353 u32 pseudo_palette[17]; 354 354 355 355 struct lcd_panel *panel; /* LCD panel */ 356 - struct lcd_ctrl *ctrl; /* LCD controller */ 357 - struct lcd_ctrl *int_ctrl; /* internal LCD ctrl */ 356 + const struct lcd_ctrl *ctrl; /* LCD controller */ 357 + const struct lcd_ctrl *int_ctrl; /* internal LCD ctrl */ 358 358 struct lcd_ctrl_extif *ext_if; /* LCD ctrl external 359 359 interface */ 360 360 struct device *dev;
+4 -4
arch/arm/plat-omap/sram.c
··· 255 255 if (!_omap_sram_reprogram_clock) 256 256 omap_sram_error(); 257 257 258 - return _omap_sram_reprogram_clock(dpllctl, ckctl); 258 + _omap_sram_reprogram_clock(dpllctl, ckctl); 259 259 } 260 260 261 261 int __init omap1_sram_init(void) ··· 282 282 if (!_omap2_sram_ddr_init) 283 283 omap_sram_error(); 284 284 285 - return _omap2_sram_ddr_init(slow_dll_ctrl, fast_dll_ctrl, 286 - base_cs, force_unlock); 285 + _omap2_sram_ddr_init(slow_dll_ctrl, fast_dll_ctrl, 286 + base_cs, force_unlock); 287 287 } 288 288 289 289 static void (*_omap2_sram_reprogram_sdrc)(u32 perf_level, u32 dll_val, ··· 294 294 if (!_omap2_sram_reprogram_sdrc) 295 295 omap_sram_error(); 296 296 297 - return _omap2_sram_reprogram_sdrc(perf_level, dll_val, mem_type); 297 + _omap2_sram_reprogram_sdrc(perf_level, dll_val, mem_type); 298 298 } 299 299 300 300 static u32 (*_omap2_set_prcm)(u32 dpll_ctrl_val, u32 sdrc_rfr_val, int bypass);
+1 -1
arch/arm/plat-orion/pcie.c
··· 35 35 #define PCIE_CONF_REG(r) ((((r) & 0xf00) << 16) | ((r) & 0xfc)) 36 36 #define PCIE_CONF_BUS(b) (((b) & 0xff) << 16) 37 37 #define PCIE_CONF_DEV(d) (((d) & 0x1f) << 11) 38 - #define PCIE_CONF_FUNC(f) (((f) & 0x3) << 8) 38 + #define PCIE_CONF_FUNC(f) (((f) & 0x7) << 8) 39 39 #define PCIE_CONF_DATA_OFF 0x18fc 40 40 #define PCIE_MASK_OFF 0x1910 41 41 #define PCIE_CTRL_OFF 0x1a00
+1 -1
drivers/video/omap/omapfb_main.c
··· 392 392 int bpp; 393 393 394 394 rg = &plane->fbdev->mem_desc.region[plane->idx]; 395 - fbi->screen_base = (char __iomem *)rg->vaddr; 395 + fbi->screen_base = rg->vaddr; 396 396 fix->smem_start = rg->paddr; 397 397 fix->smem_len = rg->size; 398 398