Commit 39b3ec53 authored by Linus Torvalds's avatar Linus Torvalds

Import 0.99.14c

parent 20f1405b
VERSION = 0.99
PATCHLEVEL = 14
ALPHA = b
ALPHA = c
all: Version zImage
......
......@@ -27,9 +27,6 @@
# LANCE_DEBUG Set the debugging message level.
# DEFAULT_DMA Change the default DMA to other than 5.
# CONFIG_PLIP The Crynwr-protocol PL/IP driver
# SLIP The MicroWalt SLIP driver
# SL_DUMP Uses the "dump frame" debug code
# SL_COMPRESSED Use CSLIP
# D_LINK The D-Link DE-600 Portable Ethernet Adaptor.
# D_LINK_IO The D-Link I/O address (0x378 == default)
# D_LINK_IRQ The D-Link IRQ number to use (IRQ7 == default)
......@@ -42,6 +39,5 @@ EL2_OPTS = #-UEL2_AUI
NE_OPTS =
HP_OPTS =
PLIP_OPTS =
SLIP_OPTS = -DSL_DUMP -DSL_COMPRESSED
DL_OPTS = -DD_LINK_IO=0x378 -DD_LINK_IRQ=7 -UD_LINK_DEBUG
AT_OPTS = # -DLANCE_DMA=5
......@@ -70,7 +70,7 @@ endif
ifdef CONFIG_SLIP
NETDRV_OBJS := $(NETDRV_OBJS) net.a(slip.o) net.a(slhc.o)
slip.o: slip.c CONFIG
$(CC) $(CPPFLAGS) $(CFLAGS) $(SLIP_OPTS) -c $<
$(CC) $(CPPFLAGS) $(CFLAGS) -c $<
endif
ifdef CONFIG_DE600
......
......@@ -593,7 +593,10 @@ slhc_uncompress(struct slcompress *comp, unsigned char *icp, int isize)
* packet. Recalculate IP checksum (but not TCP checksum).
*/
len = isize - (cp - icp) + hdrlen;
len = isize - (cp - icp);
if (len < 0)
goto bad;
len += hdrlen;
ip->tot_len = htons(len);
ip->check = 0;
......
......@@ -20,6 +20,8 @@
*/
#include <asm/segment.h>
#include <asm/system.h>
#include <linux/config.h>
#include <linux/types.h>
#include <linux/kernel.h>
#include <linux/sched.h>
......@@ -47,7 +49,6 @@
#include "slip.h"
#include "slhc.h"
#define SLIP_VERSION "0.7.5"
/* Define some IP layer stuff. Not all systems have it. */
......
......@@ -124,9 +124,9 @@ extern unsigned short int htons(unsigned short int);
static __inline__ unsigned long int
__ntohl(unsigned long int x)
{
__asm__("xchgb %l0,%h0\n\t" /* swap lower bytes */
__asm__("xchgb %b0,%h0\n\t" /* swap lower bytes */
"rorl $16,%0\n\t" /* swap words */
"xchgb %l0,%h0" /* swap higher bytes */
"xchgb %b0,%h0" /* swap higher bytes */
:"=q" (x)
: "0" (x));
return x;
......@@ -144,9 +144,9 @@ __ntohs(unsigned short int x)
static __inline__ unsigned long int
__htonl(unsigned long int x)
{
__asm__("xchgb %l0,%h0\n\t" /* swap lower bytes */
__asm__("xchgb %b0,%h0\n\t" /* swap lower bytes */
"rorl $16,%0\n\t" /* swap words */
"xchgb %l0,%h0" /* swap higher bytes */
"xchgb %b0,%h0" /* swap higher bytes */
:"=q" (x)
: "0" (x));
return x;
......
......@@ -533,6 +533,9 @@ static void second_overflow(void)
*/
static void timer_bh(void * unused)
{
unsigned long mask;
struct timer_struct *tp;
cli();
while (next_timer && next_timer->expires == 0) {
void (*fn)(unsigned long) = next_timer->function;
......@@ -543,6 +546,18 @@ static void timer_bh(void * unused)
cli();
}
sti();
for (mask = 1, tp = timer_table+0 ; mask ; tp++,mask += mask) {
if (mask > timer_active)
break;
if (!(mask & timer_active))
continue;
if (tp->expires > jiffies)
continue;
timer_active &= ~mask;
tp->fn();
sti();
}
}
/*
......@@ -554,7 +569,7 @@ static void timer_bh(void * unused)
static void do_timer(struct pt_regs * regs)
{
unsigned long mask;
struct timer_struct *tp = timer_table+0;
struct timer_struct *tp;
long ltemp;
......@@ -636,16 +651,14 @@ static void do_timer(struct pt_regs * regs)
current->it_prof_value = current->it_prof_incr;
send_sig(SIGPROF,current,1);
}
for (mask = 1 ; mask ; tp++,mask += mask) {
for (mask = 1, tp = timer_table+0 ; mask ; tp++,mask += mask) {
if (mask > timer_active)
break;
if (!(mask & timer_active))
continue;
if (tp->expires > jiffies)
continue;
timer_active &= ~mask;
tp->fn();
sti();
mark_bh(TIMER_BH);
}
cli();
itimer_ticks++;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment