Processor type
CONFIG_M386
- This is the processor type of your CPU. It is used for optimizing
- purposes. In order to compile a kernel that can run on all CPU types
- (albeit not optimally fast), you can specify "386" here. If you
- specify "486" or "Pentium" or "PPro", then the kernel will run on
- 486 and Pentium (=586) and Pentium Pro (=686) CPUs. In rare cases,
- it can make sense to specify "Pentium" even if running a 486: the
- kernel will be smaller but slower. On the other hand, if you use a
- compiler before gcc 2.7 (say "gcc -v" to find out), then you have to
- say "386" or "486" here even if running on a Pentium or PPro
- machine. If you don't know what to do, say "386".
+ This is the processor type of your CPU. It is used for optimizing
+ purposes. In order to compile a kernel that can run on all CPU
+ types (albeit not optimally fast), you can specify "386" here. If
+ you specify "486" or "Pentium" or "PPro", then the kernel will run
+ on all of these CPUs: 486 and Pentium (=586) and Pentium Pro (=686).
+ Here are the settings recommended for greatest speed:
+ - "386" for the AMD/Cyrix/Intel 386DX/DXL/SL/SLC/SX and
+ Cyrix/TI 486DLC/DLC2. Only "386" kernels will run on a 386 class
+ machine.
+ - "486" for the AMD/Cyrix/IBM/Intel DX4 or 486DX/DX2/SL/SX/SX2,
+ AMD/Cyrix 5x86, NexGen Nx586 and UMC U5D or U5S
+ - "Pentium" for the AMD K5, K6 and K6-3D, Cyrix MediaGX,
+ Cyrix/IBM/National Semiconductor 6x86 and GXm, IDT Centaur
+ WinChip C6, and Intel Pentium/Pentium MMX
+ - "PPro" for the Cyrix/IBM/National Semiconductor 6x86MX, MII and Intel
+ Pentium II/Pentium Pro
+ In rare cases, it can make sense to specify "Pentium" even if
+ running a 486: the kernel will be smaller but slightly slower. On the other
+ hand, if you use a compiler before gcc 2.7 (say "gcc -v" to find
+ out), then you have to say "386" or "486" here even if running on
+ a Pentium or PPro machine.
+ If you don't know what to do, say "386".
Compile the kernel into the ELF object format
CONFIG_ELF_KERNEL
1. NOTE
This software has been successfully in alpha and beta test and is part of
the standard kernel since kernel 1.1.8x since December 1994. It works with
-with AZTECH CDA268-01A, ORCHID CDS-3110, ORCHID/WEARNES CDD110 and
-CONRAD TXC (Nr.99 31 23 -series 04) and has proven to be stable with kernel
-versions 1.0.9 to 1.3.72. But with any software there still may be bugs in it.
-So if you encounter problems, you are invited to help us improve this software.
-Please send me a detailed bug report (see chapter BUG REPORTS). You are also
-invited in helping us to increase the number of drives, which are supported.
+AZTECH CDA268-01A, ORCHID CDS-3110, ORCHID/WEARNES CDD110 and CONRAD TXC
+(Nr.99 31 23 -series 04) and has proven to be stable with kernel versions 1.0.9
+to 1.3.72. But with any software there still may be bugs in it. So if you
+encounter problems, you are invited to help us improve this software. Please
+send me a detailed bug report (see chapter BUG REPORTS). You are also invited
+in helping us to increase the number of drives, which are supported.
Please read the README-files carefully and always keep a backup copy of your
old kernel, in order to reboot if something goes wrong!
know how to deal with Unicode. There is also an option of
doing UTF8 translations with the utf8 option.
utf8 -- UTF8 is the filesystem safe version of Unicode that
- is used by the console. It can be be enabled for the
+ is used by the console. It can be enabled for the
filesystem with this option. If 'uni_xlate' gets set,
UTF8 gets disabled.
uni_xlate -- Translate unhandled Unicode characters to special
case MCHK_K_OS_BUGCHECK: reason = "callsys in kernel mode"; break;
case MCHK_K_DCPERR: reason = "d-cache parity error"; break;
case MCHK_K_ICPERR: reason = "i-cache parity error"; break;
- case MCHK_K_SIO_SERR: reason = "SIO SERR occurred on on PCI bus"; break;
+ case MCHK_K_SIO_SERR: reason = "SIO SERR occurred on PCI bus"; break;
case MCHK_K_SIO_IOCHK: reason = "SIO IOCHK occurred on ISA bus"; break;
case MCHK_K_DCSR: reason = "MCHK_K_DCSR"; break;
case MCHK_K_UNKNOWN:
** the configuration is also updated. If the device function
** is currently disabled, only the local shadow copy is
** updated and the actual device function will be updated
-** if/when is is enabled.
+** if/when it is enabled.
**
**--
*/
/*
** bootstrap.c -- This program loads the Linux/68k kernel into an Amiga
-** and and launches it.
+** and launches it.
**
** Copyright 1993,1994 by Hamish Macdonald, Greg Harp
**
* flag, can be configured by issuing an ioctl to the block device interface,
* as any other ide device.
*
- * Our own ide-tape ioctl's can can be issued to either the block device or
+ * Our own ide-tape ioctl's can be issued to either the block device or
* the character device interface.
*
* Maximal throughput with minimal bus load will usually be achieved in the
* loop which checks if the pipeline is empty, and if it is, we
* increase the maximum number of stages as necessary until we
* reach the optimum value which just manages to keep the tape
- * busy with with minimum allocated memory or until we reach
+ * busy with minimum allocated memory or until we reach
* IDETAPE_MAX_PIPELINE_STAGES.
*
* Concerning (2):
* This function issues a special IDE device request
* onto the request queue.
*
- * If action is ide_wait, then then rq is queued at the end of
- * the request queue, and the function sleeps until it has been
- * processed. This is for use when invoked from an ioctl handler.
+ * If action is ide_wait, then the rq is queued at the end of the
+ * request queue, and the function sleeps until it has been processed.
+ * This is for use when invoked from an ioctl handler.
*
* If action is ide_preempt, then the rq is queued at the head of
* the request queue, displacing the currently-being-processed
* This function issues a special IDE device request
* onto the request queue.
*
- * If action is ide_wait, then then rq is queued at the end of
- * the request queue, and the function sleeps until it has been
- * processed. This is for use when invoked from an ioctl handler.
+ * If action is ide_wait, then the rq is queued at the end of the
+ * request queue, and the function sleeps until it has been processed.
+ * This is for use when invoked from an ioctl handler.
*
* If action is ide_preempt, then the rq is queued at the head of
* the request queue, displacing the currently-being-processed
}
#endif
+static int apm_disabled = 0;
+
+void apm_setup(char *str, int *ints)
+{
+ if(strcmp(str,"off")==0)
+ apm_disabled=1;
+ if(strcmp(str,"on")==0)
+ apm_disabled=0;
+}
+
void apm_bios_init(void)
{
unsigned short bx;
unsigned short error;
char * power_stat;
char * bat_stat;
+
+ if (apm_disabled == 1)
+ {
+ printk("APM disabled.\n");
+ return;
+ }
if (apm_bios_info.version == 0) {
printk("APM BIOS not found.\n");
* Notice: to minimize the potential for confusion, we use r to
* denote the independent variable of the polynomials
* in the Galois Field GF(2^8). We reserve x for polynomials
- * that that have coefficients in GF(2^8).
+ * that have coefficients in GF(2^8).
*
* The Galois Field in which coefficient arithmetic is performed are
* the polynomials over Z_2 (i.e., 0 and 1) modulo the irreducible
/*
* Generic routine to send out an skbuf.
- * If lowlevel-device does not support supports skbufs, use
+ * If lowlevel-device does not support skbufs, use
* standard send-routine, else send directly.
*
* Return: 0 on success, !0 on failure.
100Mbs should work now on 0xAE32.
- Fixed a small bug where heartbeat and PHY interrupts were
always being enabled.
- - Force the the driver into Unmanaged PHY mode for 0xF130 devices,
+ - Force the driver into Unmanaged PHY mode for 0xF130 devices,
even if a managed (ie, the built-in one) PHY is detected.
- Moved the PHY initialization to after the onboard PHY is enabled,
if selected.
# Makefile for the Linux network (ethercard) device drivers.
#
-# This will go away in some future future: hidden configuration files
+# This will go away in some future: hidden configuration files
# are difficult for users to deal with.
include CONFIG
5. Tester's Reports
Some people have experimented with the eql device with newer kernels
- kernels (than 1.1.75). I have since updated the driver to patch
- cleanly in newer kernels because of the removal of the old "slave-
- balancing" driver config option.
+ (than 1.1.75). I have since updated the driver to patch cleanly in
+ newer kernels because of the removal of the old "slave-balancing"
+ driver config option.
o icee from LinuxNET patched 1.1.86 without any rejects and was able
while (lp->scb.status, lp->scb.command)
if (--boguscnt == 0)
{
- printk("%s: close timed timed out with status %4.4x, cmd %4.4x.\n",
+ printk("%s: close timed out with status %4.4x, cmd %4.4x.\n",
dev->name, lp->scb.status, lp->scb.command);
break;
}
lp = (struct de4x5_private *)dev->priv;
iobase = dev->base_addr;
- if (test_and_set_bit(0, (void*) &dev->interrupt))
+ if (dev->interrupt)
printk("%s: Re-entering the interrupt handler.\n", dev->name);
DISABLE_IRQs; /* Ensure non re-entrancy */
doing the CU_RESUME
the chip processes the next-yet-valid post-final-command.
So blindly sending a CU_RESUME is only safe if we do it immediately after
-after erasing the previous CmdSuspend, without the possibility of an
-intervening delay. Thus the resume command is always within the
-interrupts-disabled region. This is a timing dependence, but handling this
-condition in a timing-independent way would considerably complicate the code.
+erasing the previous CmdSuspend, without the possibility of an intervening
+delay. Thus the resume command is always within the interrupts-disabled
+region. This is a timing dependence, but handling this condition in a
+timing-independent way would considerably complicate the code.
Note: In previous generation Intel chips, restarting the command unit was a
notoriously slow process. This is presumably no longer true.
/*
* Each pdl is 508 bytes long. (63 frags * 4 bytes for address and
- * 4 bytes for for header). We will leave NUM_RXPDLS * 508 (rounded
+ * 4 bytes for header). We will leave NUM_RXPDLS * 508 (rounded
* to the next higher 1k boundary) bytes for the rx-pdl's
* Note: For non-etr chips the transmit stop register must be
* programmed on a 1k boundary, i.e. bits 9:0 must be zero.
/* We must figure out how much shared memory space this adapter
will occupy so that if there are two adapters we can fit both
in. Given a choice, we will limit this adapter to 32K. The
- maximum space will will use for two adapters is 64K so if the
- adapter we are working on demands 64K (it also doesn't support
- paging), then only one adapter can be supported. */
+ maximum space will use for two adapters is 64K so if the adapter
+ we are working on demands 64K (it also doesn't support paging),
+ then only one adapter can be supported. */
/* determine how much of total RAM is mapped into PC space */
ti->mapped_ram_size=1<<((((readb(ti->mmio+ ACA_OFFSET + ACA_RW + RRR_ODD)) >>2) & 0x03) + 4);
{
struct strip *strip_info = (struct strip *)(dev->priv);
STRIP_Header *header = (STRIP_Header *)buff;
- /* Arp find returns zero if if knows the address, */
+ /* Arp find returns zero if it knows the address, */
/* or if it doesn't know the address it sends an ARP packet and returns non-zero */
int arp_result = arp_find(header->dst_addr.c, dst, dev, dev->pa_addr, skb);
* of the list. If the frame was the last in the Rx
* channel (EOC), the function restarts the receive channel
* by sending an Rx Go command to the adapter. Then it
- * activates/continues the the activity LED.
+ * activates/continues the activity LED.
*
**************************************************************/
* io_base Base IO port of the device of
* which to print DIO registers.
*
- * This function prints out all the the internal (DIO)
+ * This function prints out all the internal (DIO)
* registers of a TLAN chip.
*
**************************************************************/
if (status & 0x0001) tp->stats.rx_fifo_errors++;
} else {
/* Omit the four octet CRC from the length. */
- short pkt_len = (status >> 16) - 4;
+ short pkt_len = ((status >> 16) & 0x7FF) - 4;
struct sk_buff *skb;
/* Check if the packet is long enough to just accept without
/* Attempt to recognise 2.00 cards (2.4 GHz frequency selectable)
* (does it work for everybody? -- especially old cards?) */
/* Note: WFREQSEL verifies that it is able to read a sensible
- * frequency from from EEPROM (address 0x00) and that
- * MMR_FEE_STATUS_ID is 0xA (Xilinx version) or 0xB (Ariadne version).
+ * frequency from EEPROM (address 0x00) and that MMR_FEE_STATUS_ID
+ * is 0xA (Xilinx version) or 0xB (Ariadne version).
* My test is more crude but does work. */
if(!(mmc_in(ioaddr, mmroff(0, mmr_fee_status)) &
(MMR_FEE_STATUS_DWLD | MMR_FEE_STATUS_BUSY)))
the system. Each file presents the current configuration and transfer
statistics (enabled with #define in aic7xxx.c) for each controller.
- Thanks to Michael Neuffer for for his upper-level SCSI help, and
+ Thanks to Michael Neuffer for his upper-level SCSI help, and
Matthew Jacob for statistics support.
FTP sites
For 810A, 860, 825A and 875 scsi chips, this option enables support
of features that reduce load of PCI bus and memory accesses during
scsi transfer processing: burst op-code fetch, read multiple,
- read line, prefetch, cache line line, write and invalidate,
+ read line, prefetch, cache line, write and invalidate,
burst 128 (875 only), large dma fifo (875 only), offset 16 (875 only).
Can be changed by the following boot setup command:
ncr53c8xx=specf:n
ccb->DataIn = TRUE; /* Input mode */
}
- /* FIXME: This will will have to be changed once the midlevel driver
+ /* FIXME: This will have to be changed once the midlevel driver
* allows different HBA IDs on every channel.
*/
if (cmd->target == sh->this_id)
** field of the controller's struct ncb.
**
** Possible cases: hs sir msg_in value send goto
-** We try try to negotiate:
+** We try to negotiate:
** -> target doesnt't msgin NEG FAIL noop defa. - dispatch
** -> target rejected our msg NEG FAIL reject defa. - dispatch
** -> target answered (ok) NEG SYNC sdtr set - clrack
/* Insert waiter into blocker's block list.
* We use a circular list so that processes can be easily woken up in
* the order they blocked. The documentation doesn't require this but
- * it seems seems like the reasonable thing to do.
+ * it seems like the reasonable thing to do.
*/
static void locks_insert_block(struct file_lock *blocker,
struct file_lock *waiter)
* the process. I'd like to clean it up for the i386 as well, but
* it's so painful recognizing both the new and the old numbers..
*
- * The same applies for for the MIPS ABI; in fact even the macros
+ * The same applies for the MIPS ABI; in fact even the macros
* from Linux/Alpha fit almost perfectly.
*/
/*
* Bitfields and bit numbers in the coprocessor 0 cause register.
*
- * Refer to to your MIPS R4xx0 manual, chapter 5 for explanation.
+ * Refer to your MIPS R4xx0 manual, chapter 5 for explanation.
*/
#define CAUSEB_EXCCODE 2
#define CAUSEF_EXCCODE (31 << 2)
unsigned char end_cyl; /* end cylinder */
unsigned int start_sect; /* starting sector counting from 0 */
unsigned int nr_sects; /* nr of sectors in partition */
-};
+} __attribute((packed)); /* Give a polite hint to egcs/alpha to generate
+ unaligned operations */
struct hd_struct {
long start_sect;
#ifndef _LINUX_TYPES_H
#define _LINUX_TYPES_H
+#ifdef __i386__
#if defined(__KERNEL__) && !defined(STDC_HEADERS)
#if ((__GNUC_MINOR__ >= 8) || (__GNUC_MAJOR >=3))
#warning "This code is tested with gcc 2.7.2.x only. Using egcs/gcc 2.8.x needs"
#error "Remove this if you have applied the gcc 2.8/egcs patches and wish to use them"
#endif
#endif
+#endif
#include <linux/posix_types.h>
#include <asm/types.h>
/* Name : used to verify the presence of wireless extensions.
* Name of the protocol/provider... */
- struct /* network id (or domain) : used to to */
+ struct /* network id (or domain) : used to */
{ /* create logical channels on the air */
__u32 nwid; /* value */
__u8 on; /* active/unactive nwid */
extern void ppa_setup(char *str, int *ints);
extern void scsi_luns_setup(char *str, int *ints);
extern void sound_setup(char *str, int *ints);
+extern void apm_setup(char *str, int *ints);
extern void reboot_setup(char *str, int *ints);
#ifdef CONFIG_CDU31A
extern void cdu31a_setup(char *str, int *ints);
#endif
#ifdef CONFIG_BAYCOM
{ "baycom=", baycom_setup },
+#endif
+#ifdef CONFIG_APM
+ { "apm=", apm_setup },
#endif
{ 0, 0 }
};
skb->pkt_bridged = IS_BRIDGED;
skb->arp = 1; /* do not resolve... */
skb->h.raw = skb->data + ETH_HLEN;
- save_flags(flags);
- cli();
- skb_queue_tail(dev->buffs, skb);
- restore_flags(flags);
+ dev_queue_xmit(dev,skb);
return(0);
}
skb->pkt_bridged = IS_BRIDGED;
skb->arp = 1; /* do not resolve... */
skb->h.raw = skb->data + ETH_HLEN;
- save_flags(flags);
- cli();
- skb_queue_tail(dev->buffs, skb);
- restore_flags(flags);
+
+ dev_queue_xmit(dev,skb);
return(0);
}
* much hacked by: Alan Cox
*/
+#include <linux/config.h>
#include <linux/module.h>
#include <linux/skbuff.h>
#include <linux/firewall.h>
unsigned char *sha,*tha;
u32 sip,tip;
+ if(skb->pkt_type == PACKET_OTHERHOST)
+ {
+ kfree_skb(skb, FREE_READ);
+ return;
+ }
+
/*
* The hardware length of the packet should match the hardware length
* of the device. Similarly, the hardware types should match. The
* load is kept track of, if it is zero there is a strong
* likely hood that there is a zero length chain we will
* find with a small amount of searching, else the load is
- * what we shoot for for when the chains all have at least
+ * what we shoot for when the chains all have at least
* one entry. The base helps us walk the chains in an
* order such that a good chain is found as quickly as possible. -DaveM
*/