aboutsummaryrefslogtreecommitdiffstats
path: root/arch/parisc/kernel/entry.S
diff options
context:
space:
mode:
Diffstat (limited to 'arch/parisc/kernel/entry.S')
-rw-r--r--arch/parisc/kernel/entry.S41
1 files changed, 5 insertions, 36 deletions
diff --git a/arch/parisc/kernel/entry.S b/arch/parisc/kernel/entry.S
index 42598abf4576..111d47284eac 100644
--- a/arch/parisc/kernel/entry.S
+++ b/arch/parisc/kernel/entry.S
@@ -98,7 +98,6 @@
98 * The "get_stack" macros are responsible for determining the 98 * The "get_stack" macros are responsible for determining the
99 * kernel stack value. 99 * kernel stack value.
100 * 100 *
101 * For Faults:
102 * If sr7 == 0 101 * If sr7 == 0
103 * Already using a kernel stack, so call the 102 * Already using a kernel stack, so call the
104 * get_stack_use_r30 macro to push a pt_regs structure 103 * get_stack_use_r30 macro to push a pt_regs structure
@@ -110,26 +109,6 @@
110 * task pointer pointed to by cr30. Set the stack 109 * task pointer pointed to by cr30. Set the stack
111 * pointer to point to the end of the task structure. 110 * pointer to point to the end of the task structure.
112 * 111 *
113 * For Interrupts:
114 * If sr7 == 0
115 * Already using a kernel stack, check to see if r30
116 * is already pointing to the per processor interrupt
117 * stack. If it is, call the get_stack_use_r30 macro
118 * to push a pt_regs structure on the stack, and store
119 * registers there. Otherwise, call get_stack_use_cr31
120 * to get a pointer to the base of the interrupt stack
121 * and push a pt_regs structure on that stack.
122 * else
123 * Need to set up a kernel stack, so call the
124 * get_stack_use_cr30 macro to set up a pointer
125 * to the pt_regs structure contained within the
126 * task pointer pointed to by cr30. Set the stack
127 * pointer to point to the end of the task structure.
128 * N.B: We don't use the interrupt stack for the
129 * first interrupt from userland, because signals/
130 * resched's are processed when returning to userland,
131 * and we can sleep in those cases.
132 *
133 * Note that we use shadowed registers for temps until 112 * Note that we use shadowed registers for temps until
134 * we can save %r26 and %r29. %r26 is used to preserve 113 * we can save %r26 and %r29. %r26 is used to preserve
135 * %r8 (a shadowed register) which temporarily contained 114 * %r8 (a shadowed register) which temporarily contained
@@ -652,7 +631,7 @@
652 631
653 .text 632 .text
654 633
655 .align 4096 634 .align PAGE_SIZE
656 635
657ENTRY(fault_vector_20) 636ENTRY(fault_vector_20)
658 /* First vector is invalid (0) */ 637 /* First vector is invalid (0) */
@@ -904,7 +883,7 @@ ENDPROC(_switch_to)
904 * 883 *
905 */ 884 */
906 885
907 .align 4096 886 .align PAGE_SIZE
908 887
909ENTRY(syscall_exit_rfi) 888ENTRY(syscall_exit_rfi)
910 mfctl %cr30,%r16 889 mfctl %cr30,%r16
@@ -1086,23 +1065,13 @@ intr_do_preempt:
1086 1065
1087intr_extint: 1066intr_extint:
1088 CMPIB=,n 0,%r16,1f 1067 CMPIB=,n 0,%r16,1f
1068
1089 get_stack_use_cr30 1069 get_stack_use_cr30
1090 b,n 3f 1070 b,n 2f
1091 1071
10921: 10721:
1093#if 0 /* Interrupt Stack support not working yet! */
1094 mfctl %cr31,%r1
1095 copy %r30,%r17
1096 /* FIXME! depi below has hardcoded idea of interrupt stack size (32k)*/
1097 DEPI 0,31,15,%r17
1098 CMPB=,n %r1,%r17,2f
1099 get_stack_use_cr31
1100 b,n 3f
1101#endif
11022:
1103 get_stack_use_r30 1073 get_stack_use_r30
1104 10742:
11053:
1106 save_specials %r29 1075 save_specials %r29
1107 virt_map 1076 virt_map
1108 save_general %r29 1077 save_general %r29