Skip to contentSkip to conversation

2.6.8-rc4-mm1 - UML updates

PATCH In review Jeff Dike 1 participant 1 message Aug 12, 2004 User-mode Linux (UML)

lore
Share & tools
lore

Jeff Dike

author
#0 lore raw

PATCH 2/3 2.6.8-rc4-mm1 - UML updates

The patch below brings UML up to date with interface changes and the like
irq.c includes profile.h to bring in a missing definition use the cpu_{set,clear} interface
use the new get_signal_to_deliver interface
define instruction_pointer

Jeff

arch/um/kernel/irq.c +1 -0
Index: 2.6.8-rc4-mm1/arch/um/kernel/irq.c
===================================================================
@@ -18,6 +18,7 @@
 #include "linux/proc_fs.h"
 #include "linux/init.h"
 #include "linux/seq_file.h"
+#include "linux/profile.h"
 #include "asm/irq.h"
 #include "asm/hw_irq.h"
 #include "asm/hardirq.h"
arch/um/kernel/process_kern.c +4 -3
Index: 2.6.8-rc4-mm1/arch/um/kernel/process_kern.c
===================================================================
@@ -114,10 +114,11 @@
 void switch_mm(struct mm_struct *prev, struct mm_struct *next, 
 	       struct task_struct *tsk)
 {
-	unsigned cpu = smp_processor_id();
+	int cpu = smp_processor_id();
+
 	if (prev != next) 
-		clear_bit(cpu, &prev->cpu_vm_mask);
-	set_bit(cpu, &next->cpu_vm_mask);
+		cpu_clear(cpu, prev->cpu_vm_mask);
+	cpu_set(cpu, next->cpu_vm_mask);
 }
 
 void set_current(void *t)
arch/um/kernel/signal_kern.c +5 -5
Index: 2.6.8-rc4-mm1/arch/um/kernel/signal_kern.c
===================================================================
@@ -130,21 +130,21 @@
 
 static int kern_do_signal(struct pt_regs *regs, sigset_t *oldset, int error)
 {
+	struct k_sigaction ka_copy;
 	siginfo_t info;
-	struct k_sigaction *ka;
 	int err, sig;
 
 	if (!oldset)
 		oldset = &current->blocked;
 
-	sig = get_signal_to_deliver(&info, regs, NULL);
+	sig = get_signal_to_deliver(&info, &ka_copy, regs, NULL);
 	if(sig == 0)
 		return(0);
 
 	/* Whee!  Actually deliver the signal.  */
-	ka = &current->sighand->action[sig -1 ];
-	err = handle_signal(regs, sig, ka, &info, oldset, error);
-	if(!err) return(1);
+	err = handle_signal(regs, sig, &ka_copy, &info, oldset, error);
+	if(!err) 
+		return(1);
 
 	/* Did we come from a system call? */
 	if(PT_REGS_SYSCALL_NR(regs) >= 0){
include/asm-um/ptrace-generic.h +2 -0
Index: 2.6.8-rc4-mm1/include/asm-um/ptrace-generic.h
===================================================================
@@ -45,6 +45,8 @@
 
 #define PT_REGS_SC(r) UPT_SC(&(r)->regs)
 
+#define instruction_pointer(regs) PT_REGS_IP(regs)
+
 struct task_struct;
 
 extern unsigned long getreg(struct task_struct *child, int regno);