[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: Kyle McMartin <kyle@mcmartin.ca>
This commit is contained in:
Kyle McMartin 2007-10-18 00:04:56 -07:00 committed by Kyle McMartin
parent 873d50e2e5
commit 6cc4525d29
6 changed files with 3 additions and 67 deletions

View File

@ -98,7 +98,6 @@
* The "get_stack" macros are responsible for determining the * The "get_stack" macros are responsible for determining the
* kernel stack value. * kernel stack value.
* *
* For Faults:
* If sr7 == 0 * If sr7 == 0
* Already using a kernel stack, so call the * Already using a kernel stack, so call the
* get_stack_use_r30 macro to push a pt_regs structure * get_stack_use_r30 macro to push a pt_regs structure
@ -110,26 +109,6 @@
* task pointer pointed to by cr30. Set the stack * task pointer pointed to by cr30. Set the stack
* pointer to point to the end of the task structure. * 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 * Note that we use shadowed registers for temps until
* we can save %r26 and %r29. %r26 is used to preserve * we can save %r26 and %r29. %r26 is used to preserve
* %r8 (a shadowed register) which temporarily contained * %r8 (a shadowed register) which temporarily contained
@ -1086,23 +1065,13 @@ intr_do_preempt:
intr_extint: intr_extint:
CMPIB=,n 0,%r16,1f CMPIB=,n 0,%r16,1f
get_stack_use_cr30 get_stack_use_cr30
b,n 3f b,n 2f
1: 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 get_stack_use_r30
2:
3:
save_specials %r29 save_specials %r29
virt_map virt_map
save_general %r29 save_general %r29

View File

@ -128,10 +128,6 @@ $pgt_fill_loop:
/* And the stack pointer too */ /* And the stack pointer too */
ldo THREAD_SZ_ALGN(%r6),%sp ldo THREAD_SZ_ALGN(%r6),%sp
/* And the interrupt stack */
load32 interrupt_stack,%r6
mtctl %r6,%cr31
#ifdef CONFIG_SMP #ifdef CONFIG_SMP
/* Set the smp rendevous address into page zero. /* Set the smp rendevous address into page zero.
** It would be safer to do this in init_smp_config() but ** It would be safer to do this in init_smp_config() but

View File

@ -49,7 +49,6 @@ EXPORT_SYMBOL(init_mm);
* way process stacks are handled. This is done by having a special * way process stacks are handled. This is done by having a special
* "init_task" linker map entry.. * "init_task" linker map entry..
*/ */
unsigned char interrupt_stack[ISTACK_SIZE] __attribute__ ((section("init_istack"), aligned(PAGE_SIZE)));
union thread_union init_thread_union union thread_union init_thread_union
__attribute__((aligned(128))) __attribute__((__section__(".data.init_task"))) = __attribute__((aligned(128))) __attribute__((__section__(".data.init_task"))) =
{ INIT_THREAD_INFO(init_task) }; { INIT_THREAD_INFO(init_task) };

View File

@ -432,22 +432,10 @@ smp_cpu_init(int cpunum)
void __init smp_callin(void) void __init smp_callin(void)
{ {
int slave_id = cpu_now_booting; int slave_id = cpu_now_booting;
#if 0
void *istack;
#endif
smp_cpu_init(slave_id); smp_cpu_init(slave_id);
preempt_disable(); 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_cache_all_local(); /* start with known state */
flush_tlb_all_local(NULL); flush_tlb_all_local(NULL);

View File

@ -153,14 +153,6 @@ SECTIONS
*(.data.init_task) *(.data.init_task)
} }
/* The interrupt stack is currently partially coded, but not yet
* implemented
*/
. = ALIGN(16384);
init_istack : {
*(init_istack)
}
#ifdef CONFIG_64BIT #ifdef CONFIG_64BIT
. = ALIGN(16); . = ALIGN(16);
/* Linkage tables */ /* Linkage tables */

View File

@ -49,14 +49,6 @@
#define pgd_ERROR(e) \ #define pgd_ERROR(e) \
printk("%s:%d: bad pgd %08lx.\n", __FILE__, __LINE__, (unsigned long)pgd_val(e)) printk("%s:%d: bad pgd %08lx.\n", __FILE__, __LINE__, (unsigned long)pgd_val(e))
/* Note: If you change ISTACK_SIZE, you need to change the corresponding
* values in vmlinux.lds and vmlinux64.lds (init_istack section). Also,
* the "order" and size need to agree.
*/
#define ISTACK_SIZE 32768 /* Interrupt Stack Size */
#define ISTACK_ORDER 3
/* This is the size of the initially mapped kernel memory */ /* This is the size of the initially mapped kernel memory */
#ifdef CONFIG_64BIT #ifdef CONFIG_64BIT
#define KERNEL_INITIAL_ORDER 24 /* 0 to 1<<24 = 16MB */ #define KERNEL_INITIAL_ORDER 24 /* 0 to 1<<24 = 16MB */