浏览代码

uml: tidy IRQ code

Some tidying of the irq code before introducing irq stacks.  Mostly
style fixes, but the timer handler calls the timer code directly
rather than going through the generic sig_handler_common_skas.

Signed-off-by: Jeff Dike <jdike@linux.intel.com>
Cc: Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Jeff Dike 18 年之前
父节点
当前提交
2ea5bc5e5b
共有 4 个文件被更改,包括 13 次插入18 次删除
  1. 0 11
      arch/um/kernel/init_task.c
  2. 2 2
      arch/um/kernel/irq.c
  3. 7 3
      arch/um/os-Linux/signal.c
  4. 4 2
      arch/um/os-Linux/skas/process.c

+ 0 - 11
arch/um/kernel/init_task.c

@@ -46,14 +46,3 @@ void unprotect_stack(unsigned long stack)
 {
 {
 	os_protect_memory((void *) stack, THREAD_SIZE, 1, 1, 0);
 	os_protect_memory((void *) stack, THREAD_SIZE, 1, 1, 0);
 }
 }
-
-/*
- * Overrides for Emacs so that we follow Linus's tabbing style.
- * Emacs will notice this stuff at the end of the file and automatically
- * adjust the settings for this buffer only.  This must remain at the end
- * of the file.
- * ---------------------------------------------------------------------------
- * Local variables:
- * c-file-style: "linux"
- * End:
- */

+ 2 - 2
arch/um/kernel/irq.c

@@ -1,4 +1,4 @@
-/* 
+/*
  * Copyright (C) 2000 Jeff Dike (jdike@karaya.com)
  * Copyright (C) 2000 Jeff Dike (jdike@karaya.com)
  * Licensed under the GPL
  * Licensed under the GPL
  * Derived (i.e. mostly copied) from arch/i386/kernel/irq.c:
  * Derived (i.e. mostly copied) from arch/i386/kernel/irq.c:
@@ -53,7 +53,7 @@ int show_interrupts(struct seq_file *p, void *v)
 	if (i < NR_IRQS) {
 	if (i < NR_IRQS) {
 		spin_lock_irqsave(&irq_desc[i].lock, flags);
 		spin_lock_irqsave(&irq_desc[i].lock, flags);
 		action = irq_desc[i].action;
 		action = irq_desc[i].action;
-		if (!action) 
+		if (!action)
 			goto skip;
 			goto skip;
 		seq_printf(p, "%3d: ",i);
 		seq_printf(p, "%3d: ",i);
 #ifndef CONFIG_SMP
 #ifndef CONFIG_SMP

+ 7 - 3
arch/um/os-Linux/signal.c

@@ -61,15 +61,19 @@ void sig_handler(int sig, struct sigcontext *sc)
 
 
 static void real_alarm_handler(int sig, struct sigcontext *sc)
 static void real_alarm_handler(int sig, struct sigcontext *sc)
 {
 {
+	union uml_pt_regs regs;
+
 	if(sig == SIGALRM)
 	if(sig == SIGALRM)
 		switch_timers(0);
 		switch_timers(0);
 
 
-	CHOOSE_MODE_PROC(sig_handler_common_tt, sig_handler_common_skas,
-			 sig, sc);
+	if(sc != NULL)
+		copy_sc(&regs, sc);
+	regs.skas.is_user = 0;
+	unblock_signals();
+	timer_handler(sig, &regs);
 
 
 	if(sig == SIGALRM)
 	if(sig == SIGALRM)
 		switch_timers(1);
 		switch_timers(1);
-
 }
 }
 
 
 void alarm_handler(int sig, struct sigcontext *sc)
 void alarm_handler(int sig, struct sigcontext *sc)

+ 4 - 2
arch/um/os-Linux/skas/process.c

@@ -288,7 +288,8 @@ int start_userspace(unsigned long stub_stack)
 void userspace(union uml_pt_regs *regs)
 void userspace(union uml_pt_regs *regs)
 {
 {
 	int err, status, op, pid = userspace_pid[0];
 	int err, status, op, pid = userspace_pid[0];
-	int local_using_sysemu; /*To prevent races if using_sysemu changes under us.*/
+	/* To prevent races if using_sysemu changes under us.*/
+	int local_using_sysemu;
 
 
 	while(1){
 	while(1){
 		restore_registers(pid, regs);
 		restore_registers(pid, regs);
@@ -296,7 +297,8 @@ void userspace(union uml_pt_regs *regs)
 		/* Now we set local_using_sysemu to be used for one loop */
 		/* Now we set local_using_sysemu to be used for one loop */
 		local_using_sysemu = get_using_sysemu();
 		local_using_sysemu = get_using_sysemu();
 
 
-		op = SELECT_PTRACE_OPERATION(local_using_sysemu, singlestepping(NULL));
+		op = SELECT_PTRACE_OPERATION(local_using_sysemu,
+					     singlestepping(NULL));
 
 
 		err = ptrace(op, pid, 0, 0);
 		err = ptrace(op, pid, 0, 0);
 		if(err)
 		if(err)