home *** CD-ROM | disk | FTP | other *** search
- diff -ubBwr linux.store/linux.arm/arch/arm/drivers/net/ether3.c linux/arch/arm/drivers/net/ether3.c
- --- linux.store/linux.arm/arch/arm/drivers/net/ether3.c Sat Mar 2 18:11:39 1996
- +++ linux/arch/arm/drivers/net/ether3.c Tue Mar 5 12:52:29 1996
- @@ -89,7 +89,7 @@
- outw (priv->regs.command | CMD_FIFOWRITE, REG_COMMAND);
- while ((inw (REG_STATUS) & STAT_FIFOEMPTY) == 0)
- if (!timeout--) {
- - printk ("settxlim_16 broken\n");
- + printk ("%s: writebuf broken\n", dev->name);
- priv->broken = 1;
- return;
- }
- @@ -114,7 +114,7 @@
- outw (priv->regs.command | CMD_FIFOWRITE, REG_COMMAND);
- while ((inw( REG_STATUS) & STAT_FIFOEMPTY) == 0)
- if (!timeout--) {
- - printk ("setrxlim_16 broken\n");
- + printk ("%s: readbuf broken\n", dev->name);
- priv->broken = 1;
- return;
- }
- @@ -562,7 +562,8 @@
- if (priv->broken) {
- dev_kfree_skb(skb, FREE_WRITE);
- priv->stats.tx_dropped ++;
- - return 1;
- + dev->tbusy = 0;
- + return 0;
- }
-
- thisstart = priv->txinsert;
- @@ -584,9 +585,9 @@
-
- save_flags(flags);
- cli();
- - ether3_ledincrementuse (dev);
- - ether3_writebuffer(dev, skb->data, thisdata, length&1?(length+1):length);
- + ether3_writebuffer(dev, skb->data, thisdata, (length & 1) ? (length + 1) : length);
- ether3_writebuffer(dev, &nexthdr, -1, 4);
- + ether3_ledincrementuse (dev);
- ether3_writebuffer(dev, &thishdr, thisstart, 4);
-
- if ((inw (REG_STATUS) & STAT_TXON) == 0) {
- @@ -609,11 +610,11 @@
- {
- struct device *dev = (struct device *)(irq2dev_map[irq]);
- struct dev_priv *priv;
- - int boguscount = 20, done = 0;
- + int boguscount = 20, done;
-
- #if NET_DEBUG > 1
- if(net_debug & DEBUG_INT)
- - printk("ether3_interrupt: irq %d\n", irq);
- + printk("eth3irq: %d ", irq);
- #endif
-
- if (dev == NULL) {
- @@ -627,6 +628,8 @@
-
- do {
- unsigned int status;
- +
- + done = 0;
- status = inw(REG_STATUS);
- outw ((status & (STAT_INTRX|STAT_INTTX|STAT_INTBUFWIN))
- | priv->regs.command, REG_COMMAND);
- @@ -645,7 +648,7 @@
-
- #if NET_DEBUG > 1
- if(net_debug & DEBUG_INT)
- - printk("ether3_interrupt: done\n", irq);
- + printk("done\n");
- #endif
- }
-
- @@ -763,16 +767,17 @@
- {
- unsigned long txhdr;
- unsigned char *buffer = (unsigned char *)&txhdr;
- - unsigned int txptr;
- + unsigned int txptr, marked;
-
- txptr = priv->regs.transmitptr;
- + marked = 0;
-
- do {
- /*
- * Read the packet header
- */
- if (txptr + 4 > TX_END) {
- - int len = TX_END - priv->regs.transmitptr;
- + int len = TX_END - txptr;
- if (len)
- ether3_readbuffer (dev, buffer, txptr, len);
- ether3_readbuffer (dev, buffer + len, 0, 4 - len);
- @@ -814,6 +819,7 @@
- if (txptr != ntohs (txhdr & TX_NEXT)) {
- printk ("%s: TX: bad next pointer - %04X instead of %04X\n",
- dev->name, ntohs (txhdr & TX_NEXT), txptr);
- + priv->regs.transmitptr = txptr;
- return;
- }
-
- @@ -827,6 +833,9 @@
-
- ether3_leddecrementuse (dev);
-
- + if (marked)
- + continue;
- + marked = 1;
- mark_bh (NET_BH); /* Inform upper layers. */
- } while (1);
- }
- diff -ubBwr linux.store/linux.arm/arch/arm/kernel/ecard.c linux/arch/arm/kernel/ecard.c
- --- linux.store/linux.arm/arch/arm/kernel/ecard.c Sat Feb 24 18:16:01 1996
- +++ linux/arch/arm/kernel/ecard.c Mon Mar 4 14:03:19 1996
- @@ -69,7 +69,7 @@
-
- static void expansioncard_irq_expmask (int intr_no, struct pt_regs *regs)
- {
- - int i;
- + int i, ns = 0;
- #if 0
- int oldexpmask;
- #endif
- @@ -99,6 +99,7 @@
- sti ();
- #endif
- do_fast_IRQ (expcard[i].irq);
- + ns ++;
- #if 0
- cli ();
- ioc[0x28] &= ~(1 << 5);
- @@ -115,6 +116,8 @@
- }
- }
- }
- + if (ns == 0)
- + printk ("ecard: unknown interrupt\n");
- }
-
- void ecard_enableirq (unsigned int intr_no)
- diff -ubBwr linux.store/linux.arm/arch/arm/kernel/process.c linux/arch/arm/kernel/process.c
- --- linux.store/linux.arm/arch/arm/kernel/process.c Thu Feb 22 13:45:02 1996
- +++ linux/arch/arm/kernel/process.c Sun Mar 3 22:41:05 1996
- @@ -119,7 +119,7 @@
-
- /* changed the size calculations - should hopefully work better. lbt */
- dump->magic = CMAGIC;
- - dump->start_code = 0;
- + dump->start_code = 32768;
- dump->start_stack = regs->ARM_sp & ~(PAGE_SIZE - 1);
- dump->u_tsize = (((unsigned long) current->mm->end_code) - 32768) >> PAGE_SHIFT;
- dump->u_dsize = (((unsigned long) (current->mm->brk + (PAGE_SIZE-1))) - 32768) >> PAGE_SHIFT;
- diff -ubBwr linux.store/linux.arm/arch/arm/kernel/sys-arm.c linux/arch/arm/kernel/sys-arm.c
- --- linux.store/linux.arm/arch/arm/kernel/sys-arm.c Sun Mar 3 13:07:31 1996
- +++ linux/arch/arm/kernel/sys-arm.c Sun Mar 3 16:34:10 1996
- @@ -182,6 +179,8 @@
- asmlinkage int
- sys_arm_init_module (char *module_name, char *code, unsigned codesize, unsigned long *__p)
- {
- + extern int sys_init_module (char *, char *, unsigned, struct mod_routes *,
- + struct symbol_table *);
- return sys_init_module (module_name, code, codesize, (struct mod_routines *)__p[0],
- (struct symbol_table *)__p[1]);
- }
- @@ -190,11 +189,13 @@
- sys_arm_llseek (unsigned int fd, unsigned long offset_high, unsigned long offset_low,
- unsigned long *__p)
- {
- + extern int sys_llseek (unsigned int, unsigned long, unsigned long, loff_t *, unsigned int);
- return sys_llseek (fd, offset_high, offset_low, (loff_t *)__p[0], (unsigned int)__p[1]);
- }
-
- asmlinkage int
- sys_arm_mount (char *devname, char *dirname, char *type, unsigned long *__p)
- {
- + extern int sys_mount (char *, char *, char *, unsigned long, void *);
- return sys_mount (devname, dirname, type, __p[0], (void *)__p[1]);
- }
- diff -ubBwr linux.store/linux.arm/arch/arm/kernel/traps.c linux/arch/arm/kernel/traps.c
- --- linux.store/linux.arm/arch/arm/kernel/traps.c Mon Mar 4 13:12:41 1996
- +++ linux/arch/arm/kernel/traps.c Tue Mar 5 12:53:07 1996
- @@ -94,6 +94,11 @@
- died = 1;
-
- mode = regs->ARM_pc & 3;
- + if (mode == 0) { /* if user mode, we don't do anything */
- + died = 0;
- + return;
- + }
- +
- pc = regs->ARM_pc & ~0xfc000003;
-
- switch (mode) {
- @@ -170,6 +175,7 @@
- {
- current->tss.error_code = 0;
- current->tss.trap_no = 6;
- + send_sig (SIGILL, current, 1);
- die_if_kernel("Oops - undefined instruction", regs, mode, SIGILL);
- }
-
- @@ -177,6 +183,7 @@
- {
- current->tss.error_code = 0;
- current->tss.trap_no = 11;
- + send_sig (SIGBUS, current, 1);
- die_if_kernel("Oops - address exception", regs, mode, SIGBUS);
- }
-
- diff -ubBwr linux.store/linux.arm/fs/exec.c linux/fs/exec.c
- --- linux.store/linux.arm/fs/exec.c Sun Feb 11 13:50:43 1996
- +++ linux/fs/exec.c Sun Mar 3 22:44:54 1996
- @@ -178,6 +178,8 @@
- struct user dump;
- #ifdef __alpha__
- # define START_DATA(u) (u.start_data)
- +#elif defined(__arm__)
- +# define START_DATA(u) ((u.u_tsize << PAGE_SHIFT) + u.start_code)
- #else
- # define START_DATA(u) (u.u_tsize << PAGE_SHIFT)
- #endif
- diff -ubBwr linux.store/linux.arm/kernel/fork.c linux/kernel/fork.c
- --- linux.store/linux.arm/kernel/fork.c Sun Feb 11 09:33:02 1996
- +++ linux/kernel/fork.c Mon Mar 4 14:50:31 1996
- @@ -214,6 +214,7 @@
- new_stack = get_free_page(GFP_KERNEL);
- #else
- new_stack = (unsigned long) kmalloc(4096, GFP_KERNEL);
- + memset ((void *)new_stack, 0, 4096);
- #endif
- if (!new_stack)
- goto bad_fork_free_p;
-