aboutsummaryrefslogtreecommitdiffstats
path: root/arch/um/kernel
diff options
context:
space:
mode:
authorAl Viro <viro@ftp.linux.org.uk>2006-10-08 17:49:34 -0400
committerLinus Torvalds <torvalds@g5.osdl.org>2006-10-08 19:34:08 -0400
commit7bea96fd22a8fd19f90817405b4abe032317a0e3 (patch)
tree518bbc228f61f8ff393e4f9a57eeaab8aa2ea2df /arch/um/kernel
parente24bb60e11e3fe9858b71874a4ac59333adbc4fc (diff)
[PATCH] uml pt_regs fixes
Real fix for UML pt_regs stuff. Note set_irq_regs() logics in there... Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'arch/um/kernel')
-rw-r--r--arch/um/kernel/irq.c15
-rw-r--r--arch/um/kernel/sigio.c2
-rw-r--r--arch/um/kernel/time.c2
3 files changed, 10 insertions, 9 deletions
diff --git a/arch/um/kernel/irq.c b/arch/um/kernel/irq.c
index 7c41dabe7a2c..3c01c2bc979a 100644
--- a/arch/um/kernel/irq.c
+++ b/arch/um/kernel/irq.c
@@ -355,14 +355,16 @@ void forward_interrupts(int pid)
355 */ 355 */
356unsigned int do_IRQ(int irq, union uml_pt_regs *regs) 356unsigned int do_IRQ(int irq, union uml_pt_regs *regs)
357{ 357{
358 irq_enter(); 358 struct pt_regs *old_regs = set_irq_regs((struct pt_regs *)regs);
359 __do_IRQ(irq); 359 irq_enter();
360 irq_exit(); 360 __do_IRQ(irq);
361 return 1; 361 irq_exit();
362 set_irq_regs(old_regs);
363 return 1;
362} 364}
363 365
364int um_request_irq(unsigned int irq, int fd, int type, 366int um_request_irq(unsigned int irq, int fd, int type,
365 irqreturn_t (*handler)(int, void *, struct pt_regs *), 367 irqreturn_t (*handler)(int, void *),
366 unsigned long irqflags, const char * devname, 368 unsigned long irqflags, const char * devname,
367 void *dev_id) 369 void *dev_id)
368{ 370{
@@ -423,8 +425,7 @@ void __init init_IRQ(void)
423 } 425 }
424} 426}
425 427
426int init_aio_irq(int irq, char *name, irqreturn_t (*handler)(int, void *, 428int init_aio_irq(int irq, char *name, irqreturn_t (*handler)(int, void *))
427 struct pt_regs *))
428{ 429{
429 int fds[2], err; 430 int fds[2], err;
430 431
diff --git a/arch/um/kernel/sigio.c b/arch/um/kernel/sigio.c
index 0ad755ceb212..2b0ab438301c 100644
--- a/arch/um/kernel/sigio.c
+++ b/arch/um/kernel/sigio.c
@@ -17,7 +17,7 @@
17/* Protected by sigio_lock() called from write_sigio_workaround */ 17/* Protected by sigio_lock() called from write_sigio_workaround */
18static int sigio_irq_fd = -1; 18static int sigio_irq_fd = -1;
19 19
20static irqreturn_t sigio_interrupt(int irq, void *data, struct pt_regs *unused) 20static irqreturn_t sigio_interrupt(int irq, void *data)
21{ 21{
22 char c; 22 char c;
23 23
diff --git a/arch/um/kernel/time.c b/arch/um/kernel/time.c
index a92965f8f9cd..2e354b3ca060 100644
--- a/arch/um/kernel/time.c
+++ b/arch/um/kernel/time.c
@@ -86,7 +86,7 @@ static inline unsigned long long get_time(void)
86 return nsecs; 86 return nsecs;
87} 87}
88 88
89irqreturn_t um_timer(int irq, void *dev, struct pt_regs *regs) 89irqreturn_t um_timer(int irq, void *dev)
90{ 90{
91 unsigned long long nsecs; 91 unsigned long long nsecs;
92 unsigned long flags; 92 unsigned long flags;