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

Import 0.99.14c

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