Resent-From: orschied@rumms.uni-mannheim.de
Date: Mon, 24 Aug 1998 09:57:54 +0200
From: Juergen Orschiedt <orschied@rumms.uni-mannheim.de>
To: l68k@rumms.uni-mannheim.de
Subject: L68K: Patch 2.1.115 atasound.c
Resent-Date: Mon, 24 Aug 1998 10:02:33 +0200
Resent-To: linux-m68k@lists.linux-m68k.org
Sender: owner-linux-m68k@phil.uni-sb.de

Was there a change in vt_ioctl(KDMKTONE, ...) between 101 and 115?
minicom coredumps with a "Zero divide exception".

Here's a workaround:

--- linux-2.1.115.org/arch/m68k/atari/atasound.c	Tue Jun  2 17:14:06 1998
+++ linux-2.1.115/arch/m68k/atari/atasound.c	Mon Aug 24 00:07:18 1998
@@ -61,17 +61,21 @@
 	save_flags(flags);
 	cli();
 
-	/* Convert from frequency value to PSG period value (base
-	   frequency 125 kHz).  */
-	period = PSG_FREQ / hz;
-
-	if (period > 0xfff) period = 0xfff;
 
 	/* Disable generator A in mixer control.  */
 	sound_ym.rd_data_reg_sel = 7;
 	tmp = sound_ym.rd_data_reg_sel;
 	tmp |= 011;
 	sound_ym.wd_data = tmp;
+
+	if (hz) {
+	    /* Convert from frequency value to PSG period value (base
+	       frequency 125 kHz).  */
+		
+	    period = PSG_FREQ / hz;
+
+	    if (period > 0xfff) period = 0xfff;
+
 	/* Set generator A frequency to hz.  */
 	sound_ym.rd_data_reg_sel = 0;
 	sound_ym.wd_data = period & 0xff;
@@ -101,6 +105,6 @@
 	sound_ym.rd_data_reg_sel = 7;
 	tmp &= ~1;
 	sound_ym.wd_data = tmp;
-
+	}
 	restore_flags(flags);
 }
