-#if 1
+#if 0
/*
* Currently, only the autovector interrupt is used for SCC!
* If another channel already requested the interrupt, we're fine...
@@ -734,22 +742,25 @@
*/
/* done in arch/m68k/mac/macints.c for now */
- if (!got_autovector)
+ if (!got_autovector) {
if(request_irq(IRQ4, mac_SCC_handler, 0, "SCC master", info))
panic("macserial: can't get irq %d", IRQ4);
+ printk("mac_SCC: got SCC master interrupt %d, channel %d info %p\n",
+ IRQ4, channel, info);
+ }
if (info->private->zs_chan_a == info->private->zs_channel) {
/* Channel A */
if (request_irq(IRQ_SCCA, mac_SCC_interrupt, 0, "SCC A", info))
panic("mac_SCC: can't get irq %d", IRQ_SCCA);
- printk("mac_SCC: got SCC A interrupt, channel %d info %p\n",
- channel, info);
+ printk("mac_SCC: got SCC A interrupt %d, channel %d info %p\n",
+ IRQ_SCCA, channel, info);
} else {
/* Channel B */
if (request_irq(IRQ_SCCB, mac_SCC_interrupt, 0, "SCC B", info))
panic("mac_SCC: can't get irq %d", IRQ_SCCB);
- printk("mac_SCC: got SCC B interrupt, channel %d info %p\n",
- channel, info);
+ printk("mac_SCC: got SCC B interrupt %d, channel %d info %p\n",
+ IRQ_SCCB, channel, info);
}
#endif
@@ -858,6 +869,18 @@
if (!(port = info->port))
return;
i = cflag & CBAUD;
+
+ if (i == 0 && !(info->flags & ASYNC_SPD_MASK)) {
+ /* speed == 0 -> drop DTR */
+ save_flags(flags);
+ cli();
+ info->private->curregs[5] &= ~DTR;
+ write_zsreg(info->private->zs_channel, 5, info->private->curregs[5]);
+ restore_flags(flags);
+ return;
+ }
+
+
if (i & CBAUDEX) {
/* XXX CBAUDEX is not obeyed.
* It is impossible at a 32bits PPC. XXX??
@@ -1291,6 +1314,10 @@
/* last-ditch fixup for NetBSD booter case */
if (boot_info.bi_mac.scc == 0)
boot_info.bi_mac.scc = ZS_CONTROL;
+
+ /* testing: fix up broken 24 bit addresses */
+ if ((boot_info.bi_mac.scc & 0x00FFFFFF) == boot_info.bi_mac.scc)
+ boot_info.bi_mac.scc |= 0x50000000;
for(n=0;n<2;n++)
{
--- linux-2.0.29/mm/filemap.c.291197-1 Fri Dec 5 06:39:28 1997
+++ linux-2.0.29/mm/filemap.c Fri Dec 5 06:39:28 1997
@@ -1168,7 +1168,11 @@
/* share_page() can only guarantee proper page sharing if
* the offsets are all page aligned. */
if (vma->vm_offset & (PAGE_SIZE - 1))
+#if 0
return -EINVAL;
+#else
+ vma->vm_offset &= PAGE_MASK;
+#endif
} else {
ops = &file_private_mmap;
if (vma->vm_offset & (inode->i_sb->s_blocksize - 1))