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

Commit e8922788 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6

parents 4e8fd22b db7d9a4e
Loading
Loading
Loading
Loading
+8 −9
Original line number Diff line number Diff line
@@ -1600,11 +1600,11 @@ sys_clone: flushw
		ba,pt		%xcc, sparc_do_fork
		 add		%sp, PTREGS_OFF, %o2
ret_from_syscall:
		/* Clear SPARC_FLAG_NEWCHILD, switch_to leaves thread.flags in
		 * %o7 for us.  Check performance counter stuff too.
		/* Clear current_thread_info()->new_child, and
		 * check performance counter stuff too.
		 */
		andn		%o7, _TIF_NEWCHILD, %l0
		stx		%l0, [%g6 + TI_FLAGS]
		stb		%g0, [%g6 + TI_NEW_CHILD]
		ldx		[%g6 + TI_FLAGS], %l0
		call		schedule_tail
		 mov		%g7, %o0
		andcc		%l0, _TIF_PERFCTR, %g0
@@ -1720,12 +1720,11 @@ ret_sys_call:
	/* Check if force_successful_syscall_return()
	 * was invoked.
	 */
	ldx		[%curptr + TI_FLAGS], %l0
	andcc		%l0, _TIF_SYSCALL_SUCCESS, %g0
	be,pt		%icc, 1f
	 andn		%l0, _TIF_SYSCALL_SUCCESS, %l0
	ldub		[%curptr + TI_SYS_NOERROR], %l0
	brz,pt		%l0, 1f
	 nop
	ba,pt		%xcc, 80f
	 stx		%l0, [%curptr + TI_FLAGS]
	 stb		%g0, [%curptr + TI_SYS_NOERROR]

1:
	cmp		%o0, -ERESTART_RESTARTBLOCK
+7 −13
Original line number Diff line number Diff line
@@ -782,8 +782,14 @@ static void distribute_irqs(void)
}
#endif

struct sun5_timer {
	u64	count0;
	u64	limit0;
	u64	count1;
	u64	limit1;
};

struct sun5_timer *prom_timers;
static struct sun5_timer *prom_timers;
static u64 prom_limit0, prom_limit1;

static void map_prom_timers(void)
@@ -839,18 +845,6 @@ static void kill_prom_timer(void)
	: "g1", "g2");
}

void enable_prom_timer(void)
{
	if (!prom_timers)
		return;

	/* Set it to whatever was there before. */
	prom_timers->limit1 = prom_limit1;
	prom_timers->count1 = 0;
	prom_timers->limit0 = prom_limit0;
	prom_timers->count0 = 0;
}

void init_irqwork_curcpu(void)
{
	register struct irq_work_struct *workp asm("o2");
+1 −1
Original line number Diff line number Diff line
@@ -621,8 +621,8 @@ int copy_thread(int nr, unsigned long clone_flags, unsigned long sp,
	memcpy(child_trap_frame, (((struct sparc_stackf *)regs)-1), (TRACEREG_SZ+STACKFRAME_SZ));

	t->flags = (t->flags & ~((0xffUL << TI_FLAG_CWP_SHIFT) | (0xffUL << TI_FLAG_CURRENT_DS_SHIFT))) |
		_TIF_NEWCHILD |
		(((regs->tstate + 1) & TSTATE_CWP) << TI_FLAG_CWP_SHIFT);
	t->new_child = 1;
	t->ksp = ((unsigned long) child_trap_frame) - STACK_BIAS;
	t->kregs = (struct pt_regs *)(child_trap_frame+sizeof(struct sparc_stackf));
	t->fpsaved[0] = 0;
+1 −1
Original line number Diff line number Diff line
@@ -137,7 +137,7 @@ void __init smp_callin(void)
	/* Clear this or we will die instantly when we
	 * schedule back to this idler...
	 */
	clear_thread_flag(TIF_NEWCHILD);
	current_thread_info()->new_child = 0;

	/* Attach to the address space of init_task. */
	atomic_inc(&init_mm.mm_count);
+2 −0
Original line number Diff line number Diff line
@@ -2125,6 +2125,8 @@ void __init trap_init(void)
	    TI_PCR != offsetof(struct thread_info, pcr_reg) ||
	    TI_CEE_STUFF != offsetof(struct thread_info, cee_stuff) ||
	    TI_PRE_COUNT != offsetof(struct thread_info, preempt_count) ||
	    TI_NEW_CHILD != offsetof(struct thread_info, new_child) ||
	    TI_SYS_NOERROR != offsetof(struct thread_info, syscall_noerror) ||
	    TI_FPREGS != offsetof(struct thread_info, fpregs) ||
	    (TI_FPREGS & (64 - 1)))
		thread_info_offsets_are_bolixed_dave();
Loading