Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2422084a authored by Linus Torvalds's avatar Linus Torvalds
Browse files
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mattst88/alpha-2.6:
  alpha: deal with multiple simultaneously pending signals
  alpha: fix a 14 years old bug in sigreturn tracing
  alpha: unb0rk sigsuspend() and rt_sigsuspend()
  alpha: belated ERESTART_RESTARTBLOCK race fix
  alpha: Shift perf event pending work earlier in timer interrupt
  alpha: wire up fanotify and prlimit64 syscalls
  alpha: kill big kernel lock
  alpha: fix build breakage in asm/cacheflush.h
  alpha: remove unnecessary cast from void* in assignment.
  alpha: Use static const char * const where possible
parents 81cef8e3 494486a1
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -43,6 +43,8 @@ extern void smp_imb(void);
/* ??? Ought to use this in arch/alpha/kernel/signal.c too.  */

#ifndef CONFIG_SMP
#include <linux/sched.h>

extern void __load_new_mm_context(struct mm_struct *);
static inline void
flush_icache_user_range(struct vm_area_struct *vma, struct page *page,
+5 −1
Original line number Diff line number Diff line
@@ -449,10 +449,13 @@
#define __NR_pwritev			491
#define __NR_rt_tgsigqueueinfo		492
#define __NR_perf_event_open		493
#define __NR_fanotify_init		494
#define __NR_fanotify_mark		495
#define __NR_prlimit64			496

#ifdef __KERNEL__

#define NR_SYSCALLS			494
#define NR_SYSCALLS			497

#define __ARCH_WANT_IPC_PARSE_VERSION
#define __ARCH_WANT_OLD_READDIR
@@ -463,6 +466,7 @@
#define __ARCH_WANT_SYS_OLD_GETRLIMIT
#define __ARCH_WANT_SYS_OLDUMOUNT
#define __ARCH_WANT_SYS_SIGPENDING
#define __ARCH_WANT_SYS_RT_SIGSUSPEND

/* "Conditional" syscalls.  What we want is

+22 −39
Original line number Diff line number Diff line
@@ -317,14 +317,14 @@ ret_from_sys_call:
	ldq	$0, SP_OFF($sp)
	and	$0, 8, $0
	beq	$0, restore_all
ret_from_reschedule:
ret_to_user:
	/* Make sure need_resched and sigpending don't change between
		sampling and the rti.  */
	lda	$16, 7
	call_pal PAL_swpipl
	ldl	$5, TI_FLAGS($8)
	and	$5, _TIF_WORK_MASK, $2
	bne	$5, work_pending
	bne	$2, work_pending
restore_all:
	RESTORE_ALL
	call_pal PAL_rti
@@ -363,7 +363,7 @@ $ret_success:
 *       $8: current.
 *      $19: The old syscall number, or zero if this is not a return
 *           from a syscall that errored and is possibly restartable.
 *      $20: Error indication.
 *      $20: The old a3 value
 */

	.align	4
@@ -392,12 +392,18 @@ $work_resched:

$work_notifysig:
	mov	$sp, $16
	br	$1, do_switch_stack
	bsr	$1, do_switch_stack
	mov	$sp, $17
	mov	$5, $18
	mov	$19, $9		/* save old syscall number */
	mov	$20, $10	/* save old a3 */
	and	$5, _TIF_SIGPENDING, $2
	cmovne	$2, 0, $9	/* we don't want double syscall restarts */
	jsr	$26, do_notify_resume
	mov	$9, $19
	mov	$10, $20
	bsr	$1, undo_switch_stack
	br	restore_all
	br	ret_to_user
.end work_pending

/*
@@ -430,6 +436,7 @@ strace:
	beq	$1, 1f
	ldq	$27, 0($2)
1:	jsr	$26, ($27), sys_gettimeofday
ret_from_straced:
	ldgp	$gp, 0($26)

	/* check return.. */
@@ -757,11 +764,15 @@ sys_vfork:
	.ent	sys_sigreturn
sys_sigreturn:
	.prologue 0
	lda	$9, ret_from_straced
	cmpult	$26, $9, $9
	mov	$sp, $17
	lda	$18, -SWITCH_STACK_SIZE($sp)
	lda	$sp, -SWITCH_STACK_SIZE($sp)
	jsr	$26, do_sigreturn
	br	$1, undo_switch_stack
	bne	$9, 1f
	jsr	$26, syscall_trace
1:	br	$1, undo_switch_stack
	br	ret_from_sys_call
.end sys_sigreturn

@@ -770,46 +781,18 @@ sys_sigreturn:
	.ent	sys_rt_sigreturn
sys_rt_sigreturn:
	.prologue 0
	lda	$9, ret_from_straced
	cmpult	$26, $9, $9
	mov	$sp, $17
	lda	$18, -SWITCH_STACK_SIZE($sp)
	lda	$sp, -SWITCH_STACK_SIZE($sp)
	jsr	$26, do_rt_sigreturn
	br	$1, undo_switch_stack
	bne	$9, 1f
	jsr	$26, syscall_trace
1:	br	$1, undo_switch_stack
	br	ret_from_sys_call
.end sys_rt_sigreturn

	.align	4
	.globl	sys_sigsuspend
	.ent	sys_sigsuspend
sys_sigsuspend:
	.prologue 0
	mov	$sp, $17
	br	$1, do_switch_stack
	mov	$sp, $18
	subq	$sp, 16, $sp
	stq	$26, 0($sp)
	jsr	$26, do_sigsuspend
	ldq	$26, 0($sp)
	lda	$sp, SWITCH_STACK_SIZE+16($sp)
	ret
.end sys_sigsuspend

	.align	4
	.globl	sys_rt_sigsuspend
	.ent	sys_rt_sigsuspend
sys_rt_sigsuspend:
	.prologue 0
	mov	$sp, $18
	br	$1, do_switch_stack
	mov	$sp, $19
	subq	$sp, 16, $sp
	stq	$26, 0($sp)
	jsr	$26, do_rt_sigsuspend
	ldq	$26, 0($sp)
	lda	$sp, SWITCH_STACK_SIZE+16($sp)
	ret
.end sys_rt_sigsuspend

	.align	4
	.globl	sys_sethae
	.ent	sys_sethae
+7 −5
Original line number Diff line number Diff line
@@ -90,11 +90,13 @@ static int
ev6_parse_cbox(u64 c_addr, u64 c1_syn, u64 c2_syn, 
	       u64 c_stat, u64 c_sts, int print)
{
	char *sourcename[] = { "UNKNOWN", "UNKNOWN", "UNKNOWN",
	static const char * const sourcename[] = {
		"UNKNOWN", "UNKNOWN", "UNKNOWN",
		"MEMORY", "BCACHE", "DCACHE",
			       "BCACHE PROBE", "BCACHE PROBE" };
	char *streamname[] = { "D", "I" };
	char *bitsname[] = { "SINGLE", "DOUBLE" };
		"BCACHE PROBE", "BCACHE PROBE"
	};
	static const char * const streamname[] = { "D", "I" };
	static const char * const bitsname[] = { "SINGLE", "DOUBLE" };
	int status = MCHK_DISPOSITION_REPORT;
	int source = -1, stream = -1, bits = -1;

+17 −16
Original line number Diff line number Diff line
@@ -589,7 +589,8 @@ marvel_print_pox_spl_cmplt(u64 spl_cmplt)
static void
marvel_print_pox_trans_sum(u64 trans_sum)
{
	char *pcix_cmd[] = { "Interrupt Acknowledge",
	static const char * const pcix_cmd[] = {
		"Interrupt Acknowledge",
		"Special Cycle",
		"I/O Read",
		"I/O Write",
Loading