Resent-Date: Mon, 8 Feb 1999 10:13:54 +0100 (MET)
To: linux-m68k@lists.linux-m68k.org
Subject: 2.2.1-pre1
X-Yow: The FALAFEL SANDWICH lands on my HEAD and I become a VEGETARIAN...
From: Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
Date: 08 Feb 1999 10:13:46 +0100
Resent-From: linux-m68k@phil.uni-sb.de

Here are a few fixes for 2.2.1-pre1:

- arch/m68k/kernel/process.c: Fix vfork, otherwise the parent will never
  wake up again.  Note that glibc 2.1 will use vfork, so this is
  important.
- arch/m68k/mm/memory.c: (a & x) == (b & x) can be written as
  ((a ^ b) & x) == 0, which saves an operation.

Andreas.


--- linux-2.2/arch/m68k/config.in.~1~	Fri Feb  5 19:37:26 1999
+++ linux-2.2/arch/m68k/config.in	Fri Feb  5 19:57:34 1999
@@ -104,6 +104,9 @@
         dep_tristate '    Multiface III parallel port' CONFIG_PARPORT_MFC3 $CONFIG_PARPORT
       fi
     fi
+    if [ "$CONFIG_ATARI" == "y" ]; then
+      dep_tristate '   Atari builtin port' CONFIG_PARPORT_ATARI $CONFIG_PARPORT
+    fi
   fi
 fi
 
--- linux-2.2/arch/m68k/kernel/process.c.~1~	Wed Jan 20 17:21:00 1999
+++ linux-2.2/arch/m68k/kernel/process.c	Wed Jan 20 19:05:18 1999
@@ -169,15 +169,7 @@
 
 asmlinkage int m68k_vfork(struct pt_regs *regs)
 {
-	int     child;
-	struct semaphore sem = MUTEX_LOCKED;
-
-	child = do_fork(CLONE_VFORK | CLONE_VM | SIGCHLD, rdusp(), regs);
-
-	if (child > 0)
-		down(&sem);
-
-	return child;
+	return do_fork(CLONE_VFORK | CLONE_VM | SIGCHLD, rdusp(), regs);
 }
 
 asmlinkage int m68k_clone(struct pt_regs *regs)
@@ -190,7 +182,7 @@
 	newsp = regs->d2;
 	if (!newsp)
 		newsp = rdusp();
-	return do_fork(clone_flags & ~CLONE_VFORK, newsp, regs);
+	return do_fork(clone_flags, newsp, regs);
 }
 
 int copy_thread(int nr, unsigned long clone_flags, unsigned long usp,
--- linux-2.2/arch/m68k/kernel/time.c.~1~	Fri Feb  5 19:37:28 1999
+++ linux-2.2/arch/m68k/kernel/time.c	Fri Jan 22 19:24:28 1999
@@ -196,8 +196,10 @@
 	}
 
 	xtime = *tv;
-	time_state = TIME_BAD;
-	time_maxerror = MAXPHASE;
-	time_esterror = MAXPHASE;
+	time_adjust = 0;		/* stop active adjtime() */
+	time_status |= STA_UNSYNC;
+	time_state = TIME_ERROR;	/* p. 24, (a) */
+	time_maxerror = NTP_PHASE_LIMIT;
+	time_esterror = NTP_PHASE_LIMIT;
 	write_unlock_irq(&xtime_lock);
 }
--- linux-2.2/arch/m68k/mm/memory.c.~1~	Fri Feb  5 19:37:29 1999
+++ linux-2.2/arch/m68k/mm/memory.c	Fri Feb  5 19:59:57 1999
@@ -215,8 +215,8 @@
 	/* function code match? */
 	base = (regval >> 4) & 7;
 	mask = ~(regval & 7);
-	if ((SUPER_DATA & mask) != (base & mask))
-	    return( 0 );
+	if (((SUPER_DATA ^ base) & mask) != 0)
+	    return 0;
     }
     else {
 	/* must not be user-only */
@@ -227,7 +227,7 @@
     /* address match? */
     base = regval & 0xff000000;
     mask = ~(regval << 8) & 0xff000000;
-    return( (vaddr & mask) == (base & mask) );
+    return ((vaddr ^ base) & mask) == 0;
 }
 
 #ifndef CONFIG_SINGLE_MEMORY_CHUNK
--- linux-2.2/drivers/video/atafb.c.~1~	Wed Jan 20 17:21:49 1999
+++ linux-2.2/drivers/video/atafb.c	Sun Jan 24 16:34:58 1999
@@ -2810,8 +2810,7 @@
 		if (!screen_base)
 			panic("Cannot allocate screen memory");
 		memset(screen_base, 0, mem_req);
-		pad = (unsigned long)screen_base & (PAGE_SIZE-1);
-		if (pad) pad ^= PAGE_SIZE-1;
+		pad = -(unsigned long)screen_base & (PAGE_SIZE-1);
 		screen_base+=pad;
 		real_screen_base=screen_base+ovsc_offset;
 		screen_len = (mem_req - pad - ovsc_offset) & PAGE_MASK;
--- linux-2.2/mm/memory.c.~1~	Fri Feb  5 19:40:20 1999
+++ linux-2.2/mm/memory.c	Fri Feb  5 20:49:49 1999
@@ -483,7 +483,6 @@
 	end = address + size;
 	if (end > PMD_SIZE)
 		end = PMD_SIZE;
-
 	do {
 		unsigned long mapnr;
 		pte_t oldpage = *pte;
--- linux-2.2/net/core/sock.c.~1~	Wed Jan 13 18:06:06 1999
+++ linux-2.2/net/core/sock.c	Fri Feb  5 20:50:08 1999
@@ -1036,4 +1036,5 @@
 	sk->peercred.pid 	=	0;
 	sk->peercred.uid	=	-1;
 	sk->peercred.gid	=	-1;
+
 }

-- 
Andreas Schwab                                      "And now for something
schwab@issan.cs.uni-dortmund.de                      completely different"
schwab@gnu.org

