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

Commit 6cc4525d authored by Kyle McMartin's avatar Kyle McMartin Committed by Kyle McMartin
Browse files

[PARISC] Kill off broken irqstack code



It's been unfinished and broken long enough, and I have some ideas on how
to do it more cleanly.

Signed-off-by: default avatarKyle McMartin <kyle@mcmartin.ca>
parent 873d50e2
Loading
Loading
Loading
Loading
+3 −34
Original line number Diff line number Diff line
@@ -98,7 +98,6 @@
	 * The "get_stack" macros are responsible for determining the
	 * kernel stack value.
	 *
	 * For Faults:
	 *      If sr7 == 0
	 *          Already using a kernel stack, so call the
	 *          get_stack_use_r30 macro to push a pt_regs structure
@@ -110,26 +109,6 @@
	 *          task pointer pointed to by cr30. Set the stack
	 *          pointer to point to the end of the task structure.
	 *
	 * For Interrupts:
	 *      If sr7 == 0
	 *          Already using a kernel stack, check to see if r30
	 *          is already pointing to the per processor interrupt
	 *          stack. If it is, call the get_stack_use_r30 macro
	 *          to push a pt_regs structure on the stack, and store
	 *          registers there. Otherwise, call get_stack_use_cr31
	 *          to get a pointer to the base of the interrupt stack
	 *          and push a pt_regs structure on that stack.
	 *      else
	 *          Need to set up a kernel stack, so call the
	 *          get_stack_use_cr30 macro to set up a pointer
	 *          to the pt_regs structure contained within the
	 *          task pointer pointed to by cr30. Set the stack
	 *          pointer to point to the end of the task structure.
	 *          N.B: We don't use the interrupt stack for the
	 *          first interrupt from userland, because signals/
	 *          resched's are processed when returning to userland,
	 *          and we can sleep in those cases.
	 *
	 * Note that we use shadowed registers for temps until
	 * we can save %r26 and %r29. %r26 is used to preserve
	 * %r8 (a shadowed register) which temporarily contained
@@ -1086,23 +1065,13 @@ intr_do_preempt:

intr_extint:
	CMPIB=,n 0,%r16,1f

	get_stack_use_cr30
	b,n 3f
	b,n 2f

1:
#if 0  /* Interrupt Stack support not working yet! */
	mfctl	%cr31,%r1
	copy	%r30,%r17
	/* FIXME! depi below has hardcoded idea of interrupt stack size (32k)*/
	DEPI	0,31,15,%r17
	CMPB=,n	%r1,%r17,2f
	get_stack_use_cr31
	b,n 3f
#endif
2:
	get_stack_use_r30

3:
2:
	save_specials	%r29
	virt_map
	save_general	%r29
+0 −4
Original line number Diff line number Diff line
@@ -128,10 +128,6 @@ $pgt_fill_loop:
	/* And the stack pointer too */
	ldo             THREAD_SZ_ALGN(%r6),%sp

	/* And the interrupt stack */
	load32		interrupt_stack,%r6
	mtctl           %r6,%cr31

#ifdef CONFIG_SMP
	/* Set the smp rendevous address into page zero.
	** It would be safer to do this in init_smp_config() but
+0 −1
Original line number Diff line number Diff line
@@ -49,7 +49,6 @@ EXPORT_SYMBOL(init_mm);
 * way process stacks are handled. This is done by having a special
 * "init_task" linker map entry..
 */
unsigned char interrupt_stack[ISTACK_SIZE] __attribute__ ((section("init_istack"), aligned(PAGE_SIZE)));
union thread_union init_thread_union
	__attribute__((aligned(128))) __attribute__((__section__(".data.init_task"))) =
		{ INIT_THREAD_INFO(init_task) };
+0 −12
Original line number Diff line number Diff line
@@ -432,22 +432,10 @@ smp_cpu_init(int cpunum)
void __init smp_callin(void)
{
	int slave_id = cpu_now_booting;
#if 0
	void *istack;
#endif

	smp_cpu_init(slave_id);
	preempt_disable();

#if 0	/* NOT WORKING YET - see entry.S */
	istack = (void *)__get_free_pages(GFP_KERNEL,ISTACK_ORDER);
	if (istack == NULL) {
	    printk(KERN_CRIT "Failed to allocate interrupt stack for cpu %d\n",slave_id);
	    BUG();
	}
	mtctl(istack,31);
#endif

	flush_cache_all_local(); /* start with known state */
	flush_tlb_all_local(NULL);

+0 −8
Original line number Diff line number Diff line
@@ -153,14 +153,6 @@ SECTIONS
		*(.data.init_task)
	}

	/* The interrupt stack is currently partially coded, but not yet
	 * implemented
	 */
	. = ALIGN(16384);	
	init_istack : {
		*(init_istack)
	}

#ifdef CONFIG_64BIT
	. = ALIGN(16);
	/* Linkage tables */
Loading