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 branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux

Pull parisc fixes from Helge Deller:
"Improve the stability of the linux kernel on the parisc architecture"

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux:
parisc: sigaltstack doesn't round ss.ss_sp as required
parisc: improve ptrace support for gdb single-step
parisc: don't claim cpu irqs more than once
parisc: avoid undefined shift in cnv_float.h

+27 -16
+14 -6
arch/parisc/kernel/entry.S
··· 1865 1865 1866 1866 /* Are we being ptraced? */ 1867 1867 ldw TASK_FLAGS(%r1),%r19 1868 - ldi (_TIF_SINGLESTEP|_TIF_BLOCKSTEP),%r2 1868 + ldi _TIF_SYSCALL_TRACE_MASK,%r2 1869 1869 and,COND(=) %r19,%r2,%r0 1870 1870 b,n syscall_restore_rfi 1871 1871 ··· 1978 1978 /* sr2 should be set to zero for userspace syscalls */ 1979 1979 STREG %r0,TASK_PT_SR2(%r1) 1980 1980 1981 - pt_regs_ok: 1982 1981 LDREG TASK_PT_GR31(%r1),%r2 1983 - depi 3,31,2,%r2 /* ensure return to user mode. */ 1984 - STREG %r2,TASK_PT_IAOQ0(%r1) 1982 + depi 3,31,2,%r2 /* ensure return to user mode. */ 1983 + STREG %r2,TASK_PT_IAOQ0(%r1) 1985 1984 ldo 4(%r2),%r2 1986 1985 STREG %r2,TASK_PT_IAOQ1(%r1) 1987 - copy %r25,%r16 1988 1986 b intr_restore 1989 - nop 1987 + copy %r25,%r16 1988 + 1989 + pt_regs_ok: 1990 + LDREG TASK_PT_IAOQ0(%r1),%r2 1991 + depi 3,31,2,%r2 /* ensure return to user mode. */ 1992 + STREG %r2,TASK_PT_IAOQ0(%r1) 1993 + LDREG TASK_PT_IAOQ1(%r1),%r2 1994 + depi 3,31,2,%r2 1995 + STREG %r2,TASK_PT_IAOQ1(%r1) 1996 + b intr_restore 1997 + copy %r25,%r16 1990 1998 1991 1999 .import schedule,code 1992 2000 syscall_do_resched:
+4 -2
arch/parisc/kernel/irq.c
··· 410 410 { 411 411 local_irq_disable(); /* PARANOID - should already be disabled */ 412 412 mtctl(~0UL, 23); /* EIRR : clear all pending external intr */ 413 - claim_cpu_irqs(); 414 413 #ifdef CONFIG_SMP 415 - if (!cpu_eiem) 414 + if (!cpu_eiem) { 415 + claim_cpu_irqs(); 416 416 cpu_eiem = EIEM_MASK(IPI_IRQ) | EIEM_MASK(TIMER_IRQ); 417 + } 417 418 #else 419 + claim_cpu_irqs(); 418 420 cpu_eiem = EIEM_MASK(TIMER_IRQ); 419 421 #endif 420 422 set_eiem(cpu_eiem); /* EIEM : enable all external intr */
+1 -1
arch/parisc/kernel/ptrace.c
··· 26 26 #include <asm/asm-offsets.h> 27 27 28 28 /* PSW bits we allow the debugger to modify */ 29 - #define USER_PSW_BITS (PSW_N | PSW_V | PSW_CB) 29 + #define USER_PSW_BITS (PSW_N | PSW_B | PSW_V | PSW_CB) 30 30 31 31 /* 32 32 * Called by kernel/ptrace.c when detaching..
+3 -1
arch/parisc/kernel/signal.c
··· 190 190 DBG(1,"get_sigframe: ka = %#lx, sp = %#lx, frame_size = %#lx\n", 191 191 (unsigned long)ka, sp, frame_size); 192 192 193 + /* Align alternate stack and reserve 64 bytes for the signal 194 + handler's frame marker. */ 193 195 if ((ka->sa.sa_flags & SA_ONSTACK) != 0 && ! sas_ss_flags(sp)) 194 - sp = current->sas_ss_sp; /* Stacks grow up! */ 196 + sp = (current->sas_ss_sp + 0x7f) & ~0x3f; /* Stacks grow up! */ 195 197 196 198 DBG(1,"get_sigframe: Returning sp = %#lx\n", (unsigned long)sp); 197 199 return (void __user *) sp; /* Stacks grow up. Fun. */
+5 -6
arch/parisc/math-emu/cnv_float.h
··· 347 347 Sgl_isinexact_to_fix(sgl_value,exponent) 348 348 349 349 #define Duint_from_sgl_mantissa(sgl_value,exponent,dresultA,dresultB) \ 350 - {Sall(sgl_value) <<= SGL_EXP_LENGTH; /* left-justify */ \ 350 + {unsigned int val = Sall(sgl_value) << SGL_EXP_LENGTH; \ 351 351 if (exponent <= 31) { \ 352 - Dintp1(dresultA) = 0; \ 353 - Dintp2(dresultB) = (unsigned)Sall(sgl_value) >> (31 - exponent); \ 352 + Dintp1(dresultA) = 0; \ 353 + Dintp2(dresultB) = val >> (31 - exponent); \ 354 354 } \ 355 355 else { \ 356 - Dintp1(dresultA) = Sall(sgl_value) >> (63 - exponent); \ 357 - Dintp2(dresultB) = Sall(sgl_value) << (exponent - 31); \ 356 + Dintp1(dresultA) = val >> (63 - exponent); \ 357 + Dintp2(dresultB) = exponent <= 62 ? val << (exponent - 31) : 0; \ 358 358 } \ 359 - Sall(sgl_value) >>= SGL_EXP_LENGTH; /* return to original */ \ 360 359 } 361 360 362 361 #define Duint_setzero(dresultA,dresultB) \