aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm26
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm26')
-rw-r--r--arch/arm26/Kconfig6
-rw-r--r--arch/arm26/kernel/fiq.c32
-rw-r--r--arch/arm26/kernel/signal.c3
3 files changed, 22 insertions, 19 deletions
diff --git a/arch/arm26/Kconfig b/arch/arm26/Kconfig
index 274e07019b46..dee23d87fc5a 100644
--- a/arch/arm26/Kconfig
+++ b/arch/arm26/Kconfig
@@ -53,14 +53,14 @@ config GENERIC_ISA_DMA
53 53
54config ARCH_MAY_HAVE_PC_FDC 54config ARCH_MAY_HAVE_PC_FDC
55 bool 55 bool
56 default y
57 56
58source "init/Kconfig" 57source "init/Kconfig"
59 58
60 59
61menu "System Type" 60menu "System Type"
62 61
63comment "Archimedes/A5000 Implementations (select only ONE)" 62choice
63 prompt "Archimedes/A5000 Implementations"
64 64
65config ARCH_ARC 65config ARCH_ARC
66 bool "Archimedes" 66 bool "Archimedes"
@@ -73,6 +73,7 @@ config ARCH_ARC
73 73
74config ARCH_A5K 74config ARCH_A5K
75 bool "A5000" 75 bool "A5000"
76 select ARCH_MAY_HAVE_PC_FDC
76 help 77 help
77 Say Y here to to support the Acorn A5000. 78 Say Y here to to support the Acorn A5000.
78 79
@@ -87,6 +88,7 @@ config PAGESIZE_16
87 Say Y here if your Archimedes or A5000 system has only 2MB of 88 Say Y here if your Archimedes or A5000 system has only 2MB of
88 memory, otherwise say N. The resulting kernel will not run on a 89 memory, otherwise say N. The resulting kernel will not run on a
89 machine with 4MB of memory. 90 machine with 4MB of memory.
91endchoice
90endmenu 92endmenu
91 93
92config ISA_DMA_API 94config ISA_DMA_API
diff --git a/arch/arm26/kernel/fiq.c b/arch/arm26/kernel/fiq.c
index 08a97c9498ff..a24272b61f30 100644
--- a/arch/arm26/kernel/fiq.c
+++ b/arch/arm26/kernel/fiq.c
@@ -104,14 +104,14 @@ void set_fiq_regs(struct pt_regs *regs)
104{ 104{
105 register unsigned long tmp, tmp2; 105 register unsigned long tmp, tmp2;
106 __asm__ volatile ( 106 __asm__ volatile (
107 "mov %0, pc 107 "mov %0, pc \n"
108 bic %1, %0, #0x3 108 "bic %1, %0, #0x3 \n"
109 orr %1, %1, %3 109 "orr %1, %1, %3 \n"
110 teqp %1, #0 @ select FIQ mode 110 "teqp %1, #0 @ select FIQ mode \n"
111 mov r0, r0 111 "mov r0, r0 \n"
112 ldmia %2, {r8 - r14} 112 "ldmia %2, {r8 - r14} \n"
113 teqp %0, #0 @ return to SVC mode 113 "teqp %0, #0 @ return to SVC mode \n"
114 mov r0, r0" 114 "mov r0, r0 "
115 : "=&r" (tmp), "=&r" (tmp2) 115 : "=&r" (tmp), "=&r" (tmp2)
116 : "r" (&regs->ARM_r8), "I" (PSR_I_BIT | PSR_F_BIT | MODE_FIQ26) 116 : "r" (&regs->ARM_r8), "I" (PSR_I_BIT | PSR_F_BIT | MODE_FIQ26)
117 /* These registers aren't modified by the above code in a way 117 /* These registers aren't modified by the above code in a way
@@ -125,14 +125,14 @@ void get_fiq_regs(struct pt_regs *regs)
125{ 125{
126 register unsigned long tmp, tmp2; 126 register unsigned long tmp, tmp2;
127 __asm__ volatile ( 127 __asm__ volatile (
128 "mov %0, pc 128 "mov %0, pc \n"
129 bic %1, %0, #0x3 129 "bic %1, %0, #0x3 \n"
130 orr %1, %1, %3 130 "orr %1, %1, %3 \n"
131 teqp %1, #0 @ select FIQ mode 131 "teqp %1, #0 @ select FIQ mode \n"
132 mov r0, r0 132 "mov r0, r0 \n"
133 stmia %2, {r8 - r14} 133 "stmia %2, {r8 - r14} \n"
134 teqp %0, #0 @ return to SVC mode 134 "teqp %0, #0 @ return to SVC mode \n"
135 mov r0, r0" 135 "mov r0, r0 "
136 : "=&r" (tmp), "=&r" (tmp2) 136 : "=&r" (tmp), "=&r" (tmp2)
137 : "r" (&regs->ARM_r8), "I" (PSR_I_BIT | PSR_F_BIT | MODE_FIQ26) 137 : "r" (&regs->ARM_r8), "I" (PSR_I_BIT | PSR_F_BIT | MODE_FIQ26)
138 /* These registers aren't modified by the above code in a way 138 /* These registers aren't modified by the above code in a way
diff --git a/arch/arm26/kernel/signal.c b/arch/arm26/kernel/signal.c
index ce2055bdc9ee..2a48c12100c0 100644
--- a/arch/arm26/kernel/signal.c
+++ b/arch/arm26/kernel/signal.c
@@ -480,6 +480,7 @@ static int do_signal(sigset_t *oldset, struct pt_regs *regs, int syscall)
480{ 480{
481 siginfo_t info; 481 siginfo_t info;
482 int signr; 482 int signr;
483 struct k_sigaction ka;
483 484
484 /* 485 /*
485 * We want the common case to go fast, which 486 * We want the common case to go fast, which
@@ -493,7 +494,7 @@ static int do_signal(sigset_t *oldset, struct pt_regs *regs, int syscall)
493 if (current->ptrace & PT_SINGLESTEP) 494 if (current->ptrace & PT_SINGLESTEP)
494 ptrace_cancel_bpt(current); 495 ptrace_cancel_bpt(current);
495 496
496 signr = get_signal_to_deliver(&info, regs, NULL); 497 signr = get_signal_to_deliver(&info, &ka, regs, NULL);
497 if (signr > 0) { 498 if (signr > 0) {
498 handle_signal(signr, &info, oldset, regs, syscall); 499 handle_signal(signr, &info, oldset, regs, syscall);
499 if (current->ptrace & PT_SINGLESTEP) 500 if (current->ptrace & PT_SINGLESTEP)