Commit 27f3c8bb authored by Linus Torvalds's avatar Linus Torvalds

Import 2.3.43pre1

parent fc4713d4
......@@ -538,6 +538,20 @@ S: Evpatoria
S: Crimea
S: UKRAINE, 334320
N: Walt Drummond
E: drummond@valinux.com
D: Linux/IA-64
S: 1382 Bordeaux Drive
S: Sunnyvale, CA 94087
S: USA
N: Don Dugger
E: n0ano@valinux.com
D: Linux/IA-64
S: 1209 Pearl Street, #12
S: Boulder, CO 80302
S: USA
N: Thomas Dunbar
E: tdunbar@vtaix.cc.vt.edu
D: TeX & METAFONT hacking/maintenance
......@@ -602,6 +616,13 @@ S: Grevgatan 11
S: S-114 53 Stockholm
S: Sweden
N: Stephane Eranian
E: eranian@hpl.hp.com
D: Linux/ia64
S: 1501 Page Mill Rd, MS 1U17
S: Palo Alto, CA 94304
S: USA
N: Paal-Kristian Engstad
E: engstad@intermetrics.com
D: Kernel smbfs (to mount WfW, NT and OS/2 network drives.)
......@@ -609,6 +630,13 @@ S: 17101 Springdale Street #225
S: Huntington Beach, California 92649
S: USA
N: Johannes Erdfelt
E: jerdfelt@valinux.com
D: Linux/IA-64 bootloader and kernel goop, USB
S: 6350 Stoneridge Mall Road
S: Pleasanton, CA 94588
S: USA
N: Doug Evans
E: dje@cygnus.com
D: Wrote Xenix FS (part of standard kernel since 0.99.15)
......@@ -1418,6 +1446,13 @@ N: Kai M
E: Kai.Makisara@metla.fi
D: SCSI Tape Driver
N: Asit Mallick
E: asit.k.mallick@intel.com
D: Linux/IA-64
S: 2200 Mission College Blvd
S: Santa Clara, CA 95052
S: USA
N: Martin Mares
E: mj@atrey.karlin.mff.cuni.cz
W: http://atrey.karlin.mff.cuni.cz/~mj/
......@@ -1759,6 +1794,11 @@ S: M"ullerstr. 69
S: 13349 Berlin
S: Germany
N: Nicolas Pitre
E: nico@cam.org
D: StrongARM SA1100 support integrator & hacker
S: Montreal, Quebec, Canada
N: Emanuel Pirker
E: epirker@edu.uni-klu.ac.at
D: AIC5800 IEEE 1394, RAW I/O on 1394
......@@ -1799,6 +1839,13 @@ S: R. Otto Marquardt, 226 - Garcia
S: 89020-350 Blumenau - Santa Catarina
S: Brazil
N: Goutham Rao
E: goutham.rao@intel.com
D: Linux/IA-64
S: 2200 Mission College Blvd
S: Santa Clara, CA 95052
S: USA
N: Eric S. Raymond
E: esr@thyrsus.com
W: http://www.tuxedo.org/~esr/
......
This diff is collapsed.
......@@ -2171,7 +2171,8 @@ CONFIG_FB
Acorn VIDC support
CONFIG_FB_ACORN
This is the frame buffer device driver for the Acorn VIDC graphics
chipset.
hardware found in Acorn RISC PCs and other ARM-based machines. If
unsure, say N.
Apollo frame buffer device
CONFIG_FB_APOLLO
......@@ -2212,6 +2213,13 @@ CONFIG_FB_CYBER
kernel. Please note that this driver DOES NOT support the
Cybervision 64 3D card, as they use incompatible video chips.
CyberPro 20x0 support
CONFIG_FB_CYBER2000
This enables support for the Integraphics CyberPro 20x0 and 5000
VGA chips used in the Rebel.com Netwinder and other machines.
Say Y if you have a NetWinder or a graphics card containing this
device, otherwise say N.
Amiga CyberVision3D support (EXPERIMENTAL)
CONFIG_FB_VIRGE
This enables support for the Cybervision 64/3D graphics card from
......@@ -13801,4 +13809,4 @@ CONFIG_I2C_CHARDEV
# LocalWords: adbmouse DRI DRM dlabs GMX PLCs Applicom fieldbus applicom int
# LocalWords: VWSND eg ESSSOLO CFU CFNR scribed eiconctrl eicon hylafax KFPU
# LocalWords: EXTRAPREC fpu mainboards KHTTPD kHTTPd khttpd Xcelerator
# LocalWords: LOGIBUSMOUSE OV511 ov511
# LocalWords: LOGIBUSMOUSE OV511 ov511 Integraphics
......@@ -16,7 +16,8 @@ must be loaded at 0xc0008000 in Brutus's memory and execution started at
0xc0008000 as well.
But prior to execute the kernel, a ramdisk image must also be loaded in
memory. Use memory address 0x00800000 for this.
memory. Use memory address 0xd8000000 for this. Note that the file
containing the (compressed) ramdisk image must not exceed 4 MB.
Currently supported:
- RS232 serial ports
......@@ -24,6 +25,10 @@ Currently supported:
- LCD screen
- keyboard (needs to be cleaned up badly... any volunteer?)
The actual Brutus support may not be complete without extra patches.
If such patches exist, they should be found from
ftp.netwinder.org/users/n/nico.
A full PCMCIA support is still missing, although it's possible to hack
some drivers in order to drive already inserted cards at boot time with
little modifications.
......
......@@ -35,7 +35,7 @@ so far in the emulator. The file TODO contains a information on what
remains to be done, and other ideas for the emulator.
Bug reports, comments, suggestions should be directed to me at
<scottb@netwinder.com>. General reports of "this program doesn't
<scottb@netwinder.org>. General reports of "this program doesn't
work correctly when your emulator is installed" are useful for
determining that bugs still exist; but are virtually useless when
attempting to isolate the problem. Please report them, but don't
......
The BFS filesystem is used on SCO UnixWare machines for /stand slice.
By default, if you attempt to mount it read-write it will be automatically
mounted read-only. If you want to enable (limited) write support, you need
to select "BFS write support" when configuring the kernel. The write support
at this stage is limited to the blocks preallocated for a given inode.
This means that writes beyond the value of inode->iu_eblock will fail with EIO.
In particular, this means you can create empty files but not write data to them
or you can write data to the existing files and increase their size but not the
number of blocks allocated to them. I am currently working on removing this
limitation, i.e. ability to migrate inodes within BFS filesystem.
BFS FILESYSTEM FOR LINUX
========================
The BFS filesystem is used by SCO UnixWare OS for the /stand slice, which
usually contains the kernel image and a few other files required for the
boot process.
In order to access /stand partition under Linux you obviously need to
know the partition number and the kernel must support UnixWare disk slices
......@@ -29,7 +25,9 @@ You can simplify mounting by just typing:
# mount -t bfs -o loop stand.img /mnt/stand
this will allocate the first available loopback device (and load loop.o
kernel module if necessary) automatically. Beware that umount will not
kernel module if necessary) automatically. If the loopback driver is not
loaded automatically, make sure that your kernel is compiled with kmod
support (CONFIG_KMOD) enabled. Beware that umount will not
deallocate /dev/loopN device if /etc/mtab file on your system is a
symbolic link to /proc/mounts. You will need to do it manually using
"-d" switch of losetup(8). Read losetup(8) manpage for more info.
......@@ -51,9 +49,9 @@ the magic number:
# od -Ad -tx4 stand.img | more
The first 4 bytes should be 0x1BADFACE.
The first 4 bytes should be 0x1badface.
If you have any questions or suggestions regarding this BFS implementation
please contact me:
If you have any patches, questions or suggestions regarding this BFS
implementation please contact the author:
Tigran A. Aivazian <tigran@ocston.org>.
Linux kernel release 2.3.xx for the IA-64 Platform
These are the release notes for Linux version 2.3 for IA-64
platform. This document provides information specific to IA-64
ONLY, to get additional information about the Linux kernel also
read the original Linux README provided with the kernel.
INSTALLING the kernel:
- IA-64 kernel installation is the same as the other platforms, see
original README for details.
SOFTWARE REQUIREMENTS
Compiling and running this kernel requires an IA-64 compliant GCC
compiler. And various software packages also compiled with an
IA-64 compliant GCC compiler.
CONFIGURING the kernel:
Configuration is the same, see original README for details.
COMPILING the kernel:
- Compiling this kernel doesn't differ from other platform so read
the original README for details BUT make sure you have an IA-64
compliant GCC compiler.
IA-64 SPECIFICS
- Security related issues:
o mmap needs to check whether mapping would overlap with the
address-space hole in a region or whether the mapping would be
across regions. In both cases, mmap should fail.
o ptrace is a huge security hole right now as it does not reject
writing to security sensitive bits (such as the PSR!).
- General issues:
o Kernel modules aren't supported yet.
o For non-RT signals, siginfo isn't passed through from the kernel
to the point where the signal is actually delivered. Also, we
should make sure the siginfo data is compliant with the UNIX
ABI.
o Hardly any performance tuning has been done. Obvious targets
include the library routines (memcpy, IP checksum, etc.). Less
obvious targets include making sure we don't flush the TLB
needlessly, etc. Also, the TLB handlers should probably try to
do a speculative load from the virtually mapped linear page
table and only if that fails fall back on walking the page table
tree.
o Discontigous large memory support; memory above 4GB will be
discontigous since the 4GB-64MB is reserved for firmware and I/O
space.
o Correct mapping for PAL runtime code; PAL code needs to be
mapped by a TR.
o Make current IRQ/IOSAPIC handling closer to IA32 such as,
disable/enable interrupts, use of INPROGRESS flag etc.
o clone system call implementation; needs to setup proper backing
store
o SMP locks cleanup/optimization
o IA32 support. Currently experimental. It mostly works but
there are problems with some dynamically loaded programs.
(C) 1997-1998 Caldera, Inc.
(C) 1998 James Banks
(C) 1999-2000 Torben Mathiasen <torben.mathiasen@compaq.com>
I haven't had any time to do anything for a long time, and this isn't
likely to change. So there's a driver here for anyone looking to
carry forward a project :)
For those who are looking for help, I can't. I haven't looked at
a kernel since the early 2.0 series, so I won't know what's going on.
Your best chance at help would be joining the TLAN mailing list and
posting your question there.
You can join by sending "subscribe tlan" in the body of an email to
majordomo@vuser.vu.union.edu.
Thanks to those who have (and who will ;) put work in to keep the TLAN
driver working as the kernel moves on.
James
james@sovereign.org
TLAN driver for Linux, version 1.0
TLAN driver for Linux, version 1.3
README
......@@ -57,43 +40,7 @@ I. Supported Devices.
but I do not expect any problems.
II. Building the Driver.
The TLAN driver may be compiled into the kernel, or it may be compiled
as a module separately, or in the kernel. A patch is included for
2.0.29 (which also works for 2.0.30, 2.0.31, and 2.0.32).
To compile it as part of the kernel:
1. Download and untar the TLAN driver package.
2. If your kernel is 2.1.45 or later, you do not need to patch the
kernel sources. Copy the tlan.c and tlan.h to drivers/net in
the kernel source tree.
3. Otherwise, apply the appropriate patch for your kernel. For
example:
cd /usr/src/linux
patch -p1 < kernel.2.0.29
4. Copy the files tlan.c and tlan.h from the TLAN package to the
directory drivers/net in the Linux kernel source tree.
5. Configure your kernel for the TLAN driver. Answer 'Y' when
prompted to ask about experimental code (the first question).
Then answer 'Y' when prompted if to include TI ThunderLAN
support. If you want the driver compiled as a module, answer 'M'
instead of 'Y'.
6. Make the kernel and, if necessary, the modules.
To compile the TLAN driver independently:
1. Download and untar the TLAN driver package.
2. Change to the tlan directory.
3. If you are NOT using a versioned kernel (ie, want an non-
versioned module), edit the Makefile, and comment out the
line:
MODVERSIONS = -DMODVERSIONS
4. Run 'make'.
III. Driver Options
II. Driver Options
1. You can append debug=x to the end of the insmod line to get
debug messages, where x is a bit field where the bits mean
the following:
......@@ -110,18 +57,20 @@ III. Driver Options
device that does not have an AUI/BNC connector will probably
cause it to not function correctly.)
4. You can set duplex=1 to force half duplex, and duplex=2 to
3. You can set duplex=1 to force half duplex, and duplex=2 to
force full duplex.
5. You can set speed=10 to force 10Mbs operation, and speed=100Mbs
4. You can set speed=10 to force 10Mbs operation, and speed=100
to force 100Mbs operation. (I'm not sure what will happen
if a card which only supports 10Mbs is forced into 100Mbs
mode.)
3. If the driver is built into the kernel, you can use the 3rd
5. If the driver is built into the kernel, you can use the 3rd
and 4th parameters to set aui and debug respectively. For
example:
/* kernel-parameters are currently not supported. I will fix this asap. */
ether=0,0,0x1,0x7,eth0
This sets aui to 0x1 and debug to 0x7, assuming eth0 is a
......@@ -130,19 +79,17 @@ III. Driver Options
The bits in the third byte are assigned as follows:
0x01 = aui
0x02 = use SA_INTERRUPT flag when reserving the irq.
0x04 = use half duplex
0x08 = use full duplex
0x10 = use 10BaseT
0x20 = use 100BaseTx
IV. Things to try if you have problems.
III. Things to try if you have problems.
1. Make sure your card's PCI id is among those listed in
section I, above.
1. Make sure routing is correct.
2. If you are using a 2.1.x kernel, try to duplicate the
problem on a 2.0.x (preferably 2.0.29 or 2.0.30) kernel.
2. Make sure routing is correct.
3. Try forcing different speed/duplex settings
There is also a tlan mailing list which you can join by sending "subscribe tlan"
......
......@@ -826,6 +826,12 @@ M: pgmdsg@ibi.com
L: linux-kernel@vger.rutgers.edu
S: Maintained
SA1100 SUPPORT
P: Nicolas Pitre
M: nico@cam.org
L: sa1100-linux@pa.dec.com
S: Maintained
SBPCD CDROM DRIVER
P: Eberhard Moenkeberg
M: emoenke@gwdg.de
......
......@@ -167,6 +167,11 @@ CONFIG_MOUSE=y
# CONFIG_FTAPE is not set
# CONFIG_DRM is not set
# CONFIG_DRM_TDFX is not set
#
# PCMCIA character device support
#
# CONFIG_PCMCIA_SERIAL_CS is not set
# CONFIG_AGP is not set
#
......@@ -323,6 +328,11 @@ CONFIG_ARM_ETHER3=y
#
# CONFIG_WAN is not set
#
# PCMCIA network device support
#
# CONFIG_NET_PCMCIA is not set
#
# SCSI support
#
......
......@@ -54,6 +54,7 @@ CONFIG_BINFMT_ELF=y
CONFIG_PARPORT=y
CONFIG_PARPORT_PC=y
CONFIG_PARPORT_PC_FIFO=y
# CONFIG_PARPORT_PC_PCMCIA is not set
# CONFIG_PARPORT_ARC is not set
# CONFIG_PARPORT_AMIGA is not set
# CONFIG_PARPORT_MFC3 is not set
......@@ -263,6 +264,12 @@ CONFIG_VIDEO_CYBERPRO=m
# CONFIG_DRM is not set
# CONFIG_DRM_TDFX is not set
#
# PCMCIA character device support
#
# CONFIG_PCMCIA_SERIAL_CS is not set
# CONFIG_AGP is not set
#
# Support for USB
#
......@@ -496,6 +503,11 @@ CONFIG_SLIP_MODE_SLIP6=y
#
# CONFIG_WAN is not set
#
# PCMCIA network device support
#
# CONFIG_NET_PCMCIA is not set
#
# SCSI support
#
......
......@@ -50,6 +50,7 @@ CONFIG_BINFMT_ELF=y
CONFIG_PARPORT=y
CONFIG_PARPORT_PC=y
# CONFIG_PARPORT_PC_FIFO is not set
# CONFIG_PARPORT_PC_PCMCIA is not set
# CONFIG_PARPORT_ARC is not set
# CONFIG_PARPORT_AMIGA is not set
# CONFIG_PARPORT_MFC3 is not set
......@@ -176,6 +177,11 @@ CONFIG_MOUSE=y
# CONFIG_FTAPE is not set
# CONFIG_DRM is not set
# CONFIG_DRM_TDFX is not set
#
# PCMCIA character device support
#
# CONFIG_PCMCIA_SERIAL_CS is not set
# CONFIG_AGP is not set
CONFIG_RPCMOUSE=y
......@@ -348,6 +354,11 @@ CONFIG_PPP=m
#
# CONFIG_WAN is not set
#
# PCMCIA network device support
#
# CONFIG_NET_PCMCIA is not set
#
# SCSI support
#
......
......@@ -54,6 +54,7 @@ CONFIG_BINFMT_ELF=y
CONFIG_PARPORT=y
CONFIG_PARPORT_PC=y
CONFIG_PARPORT_PC_FIFO=y
# CONFIG_PARPORT_PC_PCMCIA is not set
# CONFIG_PARPORT_ARC is not set
# CONFIG_PARPORT_AMIGA is not set
# CONFIG_PARPORT_MFC3 is not set
......@@ -262,6 +263,11 @@ CONFIG_VIDEO_CYBERPRO=m
# CONFIG_FTAPE is not set
# CONFIG_DRM is not set
# CONFIG_DRM_TDFX is not set
#
# PCMCIA character device support
#
# CONFIG_PCMCIA_SERIAL_CS is not set
# CONFIG_AGP is not set
#
......@@ -497,6 +503,11 @@ CONFIG_SLIP_MODE_SLIP6=y
#
# CONFIG_WAN is not set
#
# PCMCIA network device support
#
# CONFIG_NET_PCMCIA is not set
#
# SCSI support
#
......
......@@ -16,9 +16,9 @@ ifeq ($(CONFIG_ISA_DMA),y)
ISA_DMA_OBJS += dma-isa.o
endif
O_OBJS_arc = dma-arc.o iic.o fiq.o oldlatches.o
O_OBJS_a5k = dma-a5k.o iic.o fiq.o
O_OBJS_rpc = dma-rpc.o iic.o fiq.o
O_OBJS_arc = dma-arc.o iic.o fiq.o time-acorn.o oldlatches.o
O_OBJS_a5k = dma-a5k.o iic.o fiq.o time-acorn.o
O_OBJS_rpc = dma-rpc.o iic.o fiq.o time-acorn.o
O_OBJS_ebsa110 = dma-dummy.o
O_OBJS_footbridge = dma-footbridge.o $(ISA_DMA_OBJS) isa.o
O_OBJS_nexuspci = dma-dummy.o
......
......@@ -381,7 +381,7 @@ void __init pcibios_init(void)
* Assign any unassigned resources. Note that we really ought to
* have min/max stuff here - max mem address is 0x0fffffff
*/
pci_assign_unassigned_resources(hw_pci->io_start, hw_pci->mem_start);
pci_assign_unassigned_resources();
pci_fixup_irqs(hw_pci->swizzle, hw_pci->map_irq);
pci_set_bus_ranges();
......@@ -404,17 +404,34 @@ char * __init pcibios_setup(char *str)
return str;
}
/*
* Assign new address to PCI resource. We hope our resource information
* is complete.
*
* Expects start=0, end=size-1, flags=resource type.
*/
int pci_assign_resource(struct pci_dev *dev, int i)
void pcibios_align_resource(void *data, struct resource *res, unsigned long size)
{
return 0;
}
void pcibios_align_resource(void *data, struct resource *res, unsigned long size)
int pcibios_enable_device(struct pci_dev *dev)
{
u16 cmd, old_cmd;
int idx;
struct resource *r;
pci_read_config_word(dev, PCI_COMMAND, &cmd);
old_cmd = cmd;
for (idx = 0; idx < 6; idx++) {
r = dev->resource + idx;
if (!r->start && r->end) {
printk(KERN_ERR "PCI: Device %s not available because"
" of resource collisions\n", dev->slot_name);
return -EINVAL;
}
if (r->flags & IORESOURCE_IO)
cmd |= PCI_COMMAND_IO;
if (r->flags & IORESOURCE_MEM)
cmd |= PCI_COMMAND_MEMORY;
}
if (cmd != old_cmd) {
printk("PCI: enabling device %s (%04x -> %04x)\n",
dev->slot_name, old_cmd, cmd);
pci_write_config_word(dev, PCI_COMMAND, cmd);
}
return 0;
}
/*
* linux/arch/arm/kernel/time-acorn.c
*
* Copyright (c) 1996-2000 Russell King.
*
* Changelog:
* 24-Sep-1996 RMK Created
* 10-Oct-1996 RMK Brought up to date with arch-sa110eval
* 04-Dec-1997 RMK Updated for new arch/arm/time.c
*/
#include <linux/sched.h>
#include <linux/interrupt.h>
#include <linux/init.h>
#include <asm/hardware.h>
#include <asm/io.h>
#include <asm/ioc.h>
#include <asm/irq.h>
extern unsigned long (*gettimeoffset)(void);
static unsigned long ioctime_gettimeoffset(void)
{
unsigned int count1, count2, status1, status2;
unsigned long offset = 0;
status1 = inb(IOC_IRQREQA);
barrier ();
outb (0, IOC_T0LATCH);
barrier ();
count1 = inb(IOC_T0CNTL) | (inb(IOC_T0CNTH) << 8);
barrier ();
status2 = inb(IOC_IRQREQA);
barrier ();
outb (0, IOC_T0LATCH);
barrier ();
count2 = inb(IOC_T0CNTL) | (inb(IOC_T0CNTH) << 8);
if (count2 < count1) {
/*
* This means that we haven't just had an interrupt
* while reading into status2.
*/
if (status2 & (1 << 5))
offset = tick;
count1 = count2;
} else if (count2 > count1) {
/*
* We have just had another interrupt while reading
* status2.
*/
offset += tick;
count1 = count2;
}
count1 = LATCH - count1;
/*
* count1 = number of clock ticks since last interrupt
*/
offset += count1 * tick / LATCH;
return offset;
}
void __init ioctime_init(void)
{
outb(LATCH & 255, IOC_T0LTCHL);
outb(LATCH >> 8, IOC_T0LTCHH);
outb(0, IOC_T0GO);
gettimeoffset = ioctime_gettimeoffset;
}
......@@ -15,12 +15,8 @@
#include <linux/errno.h>
#include <linux/sched.h>
#include <linux/kernel.h>
#include <linux/param.h>
#include <linux/string.h>
#include <linux/mm.h>
#include <linux/interrupt.h>
#include <linux/time.h>
#include <linux/delay.h>
#include <linux/init.h>
#include <linux/smp.h>
......@@ -32,6 +28,7 @@
#include <asm/hardware.h>
extern int setup_arm_irq(int, struct irqaction *);
extern void setup_timer(void);
extern volatile unsigned long lost_ticks;
/* change this if you have some constant time drift */
......@@ -45,6 +42,26 @@ extern volatile unsigned long lost_ticks;
#define BIN_TO_BCD(val) ((val)=(((val)/10)<<4) + (val)%10)
#endif
static int dummy_set_rtc(void)
{
return 0;
}
/*
* hook for setting the RTC's idea of the current time.
*/
int (*set_rtc)(void) = dummy_set_rtc;
static unsigned long dummy_gettimeoffset(void)
{
return 0;
}
/*
* hook for getting the time offset
*/
unsigned long (*gettimeoffset)(void) = dummy_gettimeoffset;
/* Converts Gregorian date to seconds since 1970-01-01 00:00:00.
* Assumes input in normal date format, i.e. 1980-12-31 23:59:59
* => year=1980, mon=12, day=31, hour=23, min=59, sec=59.
......@@ -60,9 +77,9 @@ extern volatile unsigned long lost_ticks;
* machines were long is 32-bit! (However, as time_t is signed, we
* will already get problems at other places on 2038-01-19 03:14:08)
*/
unsigned long mktime(unsigned int year, unsigned int mon,
unsigned int day, unsigned int hour,
unsigned int min, unsigned int sec)
unsigned long
mktime(unsigned int year, unsigned int mon, unsigned int day,
unsigned int hour, unsigned int min, unsigned int sec)
{
if (0 >= (int) (mon -= 2)) { /* 1..12 -> 11,12,1..10 */
mon += 12; /* Puts Feb last since it has leap day */
......@@ -77,11 +94,14 @@ unsigned long mktime(unsigned int year, unsigned int mon,
}
/*
* Handle profile stuff...
* Handle kernel profile stuff...
*/
static void do_profile(unsigned long pc)
static inline void do_profile(struct pt_regs *regs)
{
if (prof_buffer && current->pid) {
if (!user_mode(regs) &&
prof_buffer &&
current->pid) {
unsigned long pc = instruction_pointer(regs);
extern int _stext;
pc -= (unsigned long)&_stext;
......@@ -95,12 +115,61 @@ static void do_profile(unsigned long pc)
}
}
#include <asm/arch/time.h>
static long next_rtc_update;
/*
* If we have an externally synchronized linux clock, then update
* CMOS clock accordingly every ~11 minutes. set_rtc() has to be
* called as close as possible to 500 ms before the new second
* starts.
*/
static inline void do_set_rtc(void)
{
if (time_status & STA_UNSYNC || set_rtc == NULL)
return;
if (next_rtc_update &&
time_before(xtime.tv_sec, next_rtc_update))
return;
if (xtime.tv_usec < 50000 - (tick >> 1) &&
xtime.tv_usec >= 50000 + (tick >> 1))
return;
if (set_rtc())
/*
* rtc update failed. Try again in 60s
*/
next_rtc_update = xtime.tv_sec + 60;
else
next_rtc_update = xtime.tv_sec + 660;
}
#ifdef CONFIG_LEDS
static unsigned long do_gettimeoffset(void)
#include <asm/leds.h>
static void do_leds(void)
{
return gettimeoffset ();
static unsigned int count = 50;
static int last_pid;
if (current->pid != last_pid) {
last_pid = current->pid;
if (last_pid)
leds_event(led_idle_end);
else
leds_event(led_idle_start);
}
if (--count == 0) {
count = 50;
leds_event(led_timer);
}
}
#else
#define do_leds()
#endif
void do_gettimeofday(struct timeval *tv)
{
......@@ -108,7 +177,7 @@ void do_gettimeofday(struct timeval *tv)
save_flags_cli (flags);
*tv = xtime;
tv->tv_usec += do_gettimeoffset();
tv->tv_usec += gettimeoffset();
/*
* xtime is atomically updated in timer_bh. lost_ticks is
......@@ -134,7 +203,7 @@ void do_settimeofday(struct timeval *tv)
* Discover what correction gettimeofday
* would have done, and then undo it!
*/
tv->tv_usec -= do_gettimeoffset();
tv->tv_usec -= gettimeoffset();
if (tv->tv_usec < 0) {
tv->tv_usec += 1000000;
......@@ -149,9 +218,25 @@ void do_settimeofday(struct timeval *tv)
sti();
}
static struct irqaction timer_irq = {
NULL, 0, 0, "timer", NULL, NULL
};
/*
* Include architecture specific code
*/
#include <asm/arch/time.h>
/*
* This must cause the timer to start ticking.
* It doesn't have to set the current time though
* from an RTC - it can be done later once we have
* some buses initialised.
*/
void __init time_init(void)
{
xtime.tv_usec = 0;
xtime.tv_sec = 0;
setup_timer();
}
......@@ -370,7 +370,7 @@ asmlinkage void arm_invalidptr(const char *function, int size)
asmlinkage void
baddataabort(int code, unsigned long instr, struct pt_regs *regs)
{
unsigned long phys, addr = instruction_pointer(regs);
unsigned long addr = instruction_pointer(regs);
#ifdef CONFIG_DEBUG_ERRORS
dump_instr(addr, 1);
......@@ -383,11 +383,8 @@ baddataabort(int code, unsigned long instr, struct pt_regs *regs)
pmd_t *pmd;
pmd = pmd_offset (pgd, addr);
printk (", *pmd = %08lx", pmd_val (*pmd));
if (!pmd_none (*pmd)) {
unsigned long ptr = pte_page(*pte_offset(pmd, addr));
printk (", *pte = %08lx", pte_val (*pte_offset (pmd, addr)));
phys = ptr + (addr & 0x7fff);
}
if (!pmd_none (*pmd))
printk (", *pte = %08lx", pte_val(*pte_offset (pmd, addr)));
}
printk ("\n");
}
......
#include <linux/module.h>
#include <linux/types.h>
#include <asm/io.h>
......@@ -6,7 +7,7 @@
* Copy data from IO memory space to "real" memory space.
* This needs to be optimized.
*/
void _memcpy_fromio(void * to, unsigned long from, unsigned long count)
void _memcpy_fromio(void * to, unsigned long from, size_t count)
{
while (count) {
count--;
......@@ -20,7 +21,7 @@ void _memcpy_fromio(void * to, unsigned long from, unsigned long count)
* Copy data from "real" memory space to IO memory space.
* This needs to be optimized.
*/
void _memcpy_toio(unsigned long to, const void * from, unsigned long count)
void _memcpy_toio(unsigned long to, const void * from, size_t count)
{
while (count) {
count--;
......@@ -34,7 +35,7 @@ void _memcpy_toio(unsigned long to, const void * from, unsigned long count)
* "memset" on IO memory space.
* This needs to be optimized.
*/
void _memset_io(unsigned long dst, int c, unsigned long count)
void _memset_io(unsigned long dst, int c, size_t count)
{
while (count) {
count--;
......
......@@ -115,7 +115,7 @@ static int remap_area_pages(unsigned long address, unsigned long phys_addr,
* 'flags' are the extra L_PTE_ flags that you want to specify for this
* mapping. See include/asm-arm/proc-armv/pgtable.h for more information.
*/
void * __ioremap(unsigned long phys_addr, unsigned long size, unsigned long flags)
void * __ioremap(unsigned long phys_addr, size_t size, unsigned long flags)
{
void * addr;
struct vm_struct * area;
......
......@@ -34,6 +34,7 @@ static int __init nocache_setup(char *__unused)
{
cr_alignment &= ~4;
cr_no_alignment &= ~4;
flush_cache_all();
set_cr(cr_alignment);
return 1;
}
......@@ -42,6 +43,7 @@ static int __init nowrite_setup(char *__unused)
{
cr_alignment &= ~(8|4);
cr_no_alignment &= ~(8|4);
flush_cache_all();
set_cr(cr_alignment);
return 1;
}
......@@ -284,7 +286,7 @@ static void __init create_mapping(struct map_desc *md)
void __init pagetable_init(void)
{
struct map_desc *init_maps, *p;
struct map_desc *init_maps, *p, *q;
unsigned long address = 0;
int i;
......@@ -358,17 +360,18 @@ void __init pagetable_init(void)
* pgdir entries that are not in the description.
*/
i = 0;
q = init_maps;
do {
if (address < init_maps->virtual || init_maps == p) {
if (address < q->virtual || q == p) {
clear_mapping(address);
address += PGDIR_SIZE;
} else {
create_mapping(init_maps);
create_mapping(q);
address = init_maps->virtual + init_maps->length;
address = q->virtual + q->length;
address = (address + PGDIR_SIZE - 1) & PGDIR_MASK;
init_maps ++;
q ++;
}
} while (address != 0);
......
......@@ -49,6 +49,7 @@ EXPORT_SYMBOL(local_irq_count);
EXPORT_SYMBOL(enable_irq);
EXPORT_SYMBOL(disable_irq);
EXPORT_SYMBOL(disable_irq_nosync);
EXPORT_SYMBOL(probe_irq_mask);
EXPORT_SYMBOL(kernel_thread);
EXPORT_SYMBOL(acpi_idle);
EXPORT_SYMBOL(acpi_power_off);
......
#
# ia64/Makefile
#
# This file is subject to the terms and conditions of the GNU General Public
# License. See the file "COPYING" in the main directory of this archive
# for more details.
#
# Copyright (C) 1998, 1999 by David Mosberger-Tang <davidm@hpl.hp.com>
#
NM := $(CROSS_COMPILE)nm -B
LINKFLAGS = -static -T arch/$(ARCH)/vmlinux.lds
# next line is for HP compiler backend:
#AFLAGS += -DGCC_RETVAL_POINTER_IN_R8
# The next line is needed when compiling with the July snapshot of the Cygnus compiler:
#EXTRA = -ma0-bugs -D__GCC_DOESNT_KNOW_IN_REGS__
# next two lines are for the September snapshot of the Cygnus compiler:
AFLAGS += -D__GCC_MULTIREG_RETVALS__
EXTRA = -ma0-bugs -D__GCC_MULTIREG_RETVALS__
CFLAGS := -g $(CFLAGS) -pipe $(EXTRA) -ffixed-r13 -mfixed-range=f10-f15,f32-f127
ifdef CONFIG_IA64_GENERIC
CORE_FILES := arch/$(ARCH)/hp/hp.a \
arch/$(ARCH)/sn/sn.a \
arch/$(ARCH)/dig/dig.a \
$(CORE_FILES)
SUBDIRS := arch/$(ARCH)/hp \
arch/$(ARCH)/sn/sn1 \
arch/$(ARCH)/sn \
arch/$(ARCH)/dig \
$(SUBDIRS)
else # !GENERIC
ifeq ($(CONFIG_IA64_HP_SIM),y)
SUBDIRS := arch/$(ARCH)/hp \
$(SUBDIRS)
CORE_FILES := arch/$(ARCH)/hp/hp.a \
$(CORE_FILES)
endif
ifeq ($(CONFIG_IA64_SGI_SN1_SIM),y)
SUBDIRS := arch/$(ARCH)/sn/sn1 \
arch/$(ARCH)/sn \
$(SUBDIRS)
CORE_FILES := arch/$(ARCH)/sn/sn.a \
$(CORE_FILES)
endif
ifeq ($(CONFIG_IA64_SOFTSDV),y)
SUBDIRS := arch/$(ARCH)/dig \
$(SUBDIRS)
CORE_FILES := arch/$(ARCH)/dig/dig.a \
$(CORE_FILES)
endif
ifeq ($(CONFIG_IA64_DIG),y)
SUBDIRS := arch/$(ARCH)/dig \
$(SUBDIRS)
CORE_FILES := arch/$(ARCH)/dig/dig.a \
$(CORE_FILES)
endif
endif # !GENERIC
ifeq ($(CONFIG_IA32_SUPPORT),y)
SUBDIRS := arch/$(ARCH)/ia32 $(SUBDIRS)
CORE_FILES := arch/$(ARCH)/ia32/ia32.o $(CORE_FILES)
endif
ifdef CONFIG_KDB
LIBS := $(LIBS) $(TOPDIR)/arch/$(ARCH)/kdb/kdb.a
SUBDIRS := $(SUBDIRS) arch/$(ARCH)/kdb
endif
HEAD := arch/$(ARCH)/kernel/head.o arch/ia64/kernel/init_task.o
SUBDIRS := arch/$(ARCH)/tools arch/$(ARCH)/kernel arch/$(ARCH)/mm arch/$(ARCH)/lib $(SUBDIRS)
CORE_FILES := arch/$(ARCH)/kernel/kernel.o arch/$(ARCH)/mm/mm.o $(CORE_FILES)
LIBS := $(TOPDIR)/arch/$(ARCH)/lib/lib.a $(LIBS) \
$(TOPDIR)/arch/$(ARCH)/lib/lib.a
MAKEBOOT = $(MAKE) -C arch/$(ARCH)/boot
vmlinux: arch/$(ARCH)/vmlinux.lds
arch/$(ARCH)/vmlinux.lds: arch/$(ARCH)/vmlinux.lds.S FORCE
gcc -D__ASSEMBLY__ -E -C -P -I$(HPATH) -I$(HPATH)/asm-$(ARCH) \
arch/$(ARCH)/vmlinux.lds.S > $@
FORCE: ;
rawboot:
@$(MAKEBOOT) rawboot
#
# My boot writes directly to a specific disk partition, I doubt most
# people will want to do that without changes..
#
msb my-special-boot:
@$(MAKEBOOT) msb
bootimage:
@$(MAKEBOOT) bootimage
srmboot:
@$(MAKEBOOT) srmboot
archclean:
@$(MAKE) -C arch/$(ARCH)/kernel clean
@$(MAKE) -C arch/$(ARCH)/tools clean
@$(MAKEBOOT) clean
archmrproper:
rm -f arch/$(ARCH)/vmlinux.lds
@$(MAKE) -C arch/$(ARCH)/tools mrproper
archdep:
@$(MAKEBOOT) dep
bootpfile:
@$(MAKEBOOT) bootpfile
#
# ia64/boot/Makefile
#
# This file is subject to the terms and conditions of the GNU General Public
# License. See the file "COPYING" in the main directory of this archive
# for more details.
#
# Copyright (C) 1998 by David Mosberger-Tang <davidm@hpl.hp.com>
#
LINKFLAGS = -static -T bootloader.lds
.S.s:
$(CC) -D__ASSEMBLY__ $(AFLAGS) -traditional -E -o $*.o $<
.S.o:
$(CC) -D__ASSEMBLY__ $(AFLAGS) -traditional -c -o $*.o $<
OBJECTS = bootloader.o
TARGETS =
ifdef CONFIG_IA64_HP_SIM
TARGETS += bootloader
endif
all: $(TARGETS)
bootloader: $(OBJECTS)
$(LD) $(LINKFLAGS) $(OBJECTS) $(LIBS) -o bootloader
clean:
rm -f $(TARGETS)
dep:
/*
* arch/ia64/boot/bootloader.c
*
* Loads an ELF kernel.
*
* Copyright (C) 1998, 1999 Hewlett-Packard Co
* Copyright (C) 1998, 1999 David Mosberger-Tang <davidm@hpl.hp.com>
* Copyright (C) 1998, 1999 Stephane Eranian <eranian@hpl.hp.com>
*
* 01/07/99 S.Eranian modified to pass command line arguments to kernel
*/
#include <linux/elf.h>
#include <linux/init.h>
#include <linux/kernel.h>
#include <asm/elf.h>
#include <asm/pal.h>
#include <asm/pgtable.h>
#include <asm/sal.h>
#include <asm/system.h>
/* Simulator system calls: */
#define SSC_CONSOLE_INIT 20
#define SSC_GETCHAR 21
#define SSC_PUTCHAR 31
#define SSC_OPEN 50
#define SSC_CLOSE 51
#define SSC_READ 52
#define SSC_WRITE 53
#define SSC_GET_COMPLETION 54
#define SSC_WAIT_COMPLETION 55
#define SSC_CONNECT_INTERRUPT 58
#define SSC_GENERATE_INTERRUPT 59
#define SSC_SET_PERIODIC_INTERRUPT 60
#define SSC_GET_RTC 65
#define SSC_EXIT 66
#define SSC_LOAD_SYMBOLS 69
#define SSC_GET_TOD 74
#define SSC_GET_ARGS 75
struct disk_req {
unsigned long addr;
unsigned len;
};
struct disk_stat {
int fd;
unsigned count;
};
#include "../kernel/fw-emu.c"
static void
cons_write (const char *buf)
{
unsigned long ch;
while ((ch = *buf++) != '\0') {
ssc(ch, 0, 0, 0, SSC_PUTCHAR);
if (ch == '\n')
ssc('\r', 0, 0, 0, SSC_PUTCHAR);
}
}
void
enter_virtual_mode (unsigned long new_psr)
{
asm volatile ("mov cr.ipsr=%0" :: "r"(new_psr));
asm volatile ("mov cr.iip=%0" :: "r"(&&target));
asm volatile ("mov cr.ifs=r0");
asm volatile ("rfi;;"); /* must be last insn in an insn group */
target:
}
#define MAX_ARGS 32
void
_start (void)
{
register long sp asm ("sp");
static char stack[16384] __attribute__ ((aligned (16)));
static char mem[4096];
static char buffer[1024];
unsigned long flags, off;
int fd, i;
struct disk_req req;
struct disk_stat stat;
struct elfhdr *elf;
struct elf_phdr *elf_phdr; /* program header */
unsigned long e_entry, e_phoff, e_phnum;
char *kpath, *args;
long arglen = 0;
asm volatile ("movl gp=__gp" ::: "memory");
asm volatile ("mov sp=%0" :: "r"(stack) : "memory");
asm volatile ("bsw.1;;");
#ifdef CONFIG_ITANIUM_ASTEP_SPECIFIC
asm volative ("nop 0;; nop 0;; nop 0;;");
#endif /* CONFIG_ITANIUM_ASTEP_SPECIFIC */
ssc(0, 0, 0, 0, SSC_CONSOLE_INIT);
/*
* S.Eranian: extract the commandline argument from the
* simulator
*
* The expected format is as follows:
*
* kernelname args...
*
* Both are optional but you can't have the second one without the
* first.
*/
arglen = ssc((long) buffer, 0, 0, 0, SSC_GET_ARGS);
kpath = "vmlinux";
args = buffer;
if (arglen > 0) {
kpath = buffer;
while (*args != ' ' && *args != '\0')
++args, --arglen;
if (*args == ' ')
*args++ = '\0', --arglen;
}
if (arglen <= 0) {
args = "";
arglen = 1;
}
fd = ssc((long) kpath, 1, 0, 0, SSC_OPEN);
if (fd < 0) {
cons_write(kpath);
cons_write(": file not found, reboot now\n");
for(;;);
}
stat.fd = fd;
off = 0;
req.len = sizeof(mem);
req.addr = (long) mem;
ssc(fd, 1, (long) &req, off, SSC_READ);
ssc((long) &stat, 0, 0, 0, SSC_WAIT_COMPLETION);
elf = (struct elfhdr *) mem;
if (elf->e_ident[0] == 0x7f && strncmp(elf->e_ident + 1, "ELF", 3) != 0) {
cons_write("not an ELF file\n");
return;
}
if (elf->e_type != ET_EXEC) {
cons_write("not an ELF executable\n");
return;
}
if (!elf_check_arch(elf->e_machine)) {
cons_write("kernel not for this processor\n");
return;
}
e_entry = elf->e_entry;
e_phnum = elf->e_phnum;
e_phoff = elf->e_phoff;
cons_write("loading ");
cons_write(kpath);
cons_write("...\n");
for (i = 0; i < e_phnum; ++i) {
req.len = sizeof(*elf_phdr);
req.addr = (long) mem;
ssc(fd, 1, (long) &req, e_phoff, SSC_READ);
ssc((long) &stat, 0, 0, 0, SSC_WAIT_COMPLETION);
if (stat.count != sizeof(*elf_phdr)) {
cons_write("failed to read phdr\n");
return;
}
e_phoff += sizeof(*elf_phdr);
elf_phdr = (struct elf_phdr *) mem;
req.len = elf_phdr->p_filesz;
req.addr = __pa(elf_phdr->p_vaddr);
ssc(fd, 1, (long) &req, elf_phdr->p_offset, SSC_READ);
ssc((long) &stat, 0, 0, 0, SSC_WAIT_COMPLETION);
memset((char *)__pa(elf_phdr->p_vaddr) + elf_phdr->p_filesz, 0,
elf_phdr->p_memsz - elf_phdr->p_filesz);
}
ssc(fd, 0, 0, 0, SSC_CLOSE);
cons_write("starting kernel...\n");
/* fake an I/O base address: */
asm volatile ("mov ar.k0=%0" :: "r"(0xffffc000000UL));
/*
* Install a translation register that identity maps the
* kernel's 256MB page.
*/
ia64_clear_ic(flags);
ia64_set_rr( 0, (0x1000 << 8) | (_PAGE_SIZE_1M << 2));
ia64_set_rr(PAGE_OFFSET, (ia64_rid(0, PAGE_OFFSET) << 8) | (_PAGE_SIZE_256M << 2));
ia64_srlz_d();
ia64_itr(0x3, 0, 1024*1024,
pte_val(mk_pte_phys(1024*1024, __pgprot(__DIRTY_BITS|_PAGE_PL_0|_PAGE_AR_RWX))),
_PAGE_SIZE_1M);
ia64_itr(0x3, 1, PAGE_OFFSET,
pte_val(mk_pte_phys(0, __pgprot(__DIRTY_BITS|_PAGE_PL_0|_PAGE_AR_RWX))),
_PAGE_SIZE_256M);
ia64_srlz_i();
enter_virtual_mode(flags | IA64_PSR_IT | IA64_PSR_IC | IA64_PSR_DT | IA64_PSR_RT
| IA64_PSR_DFH | IA64_PSR_BN);
sys_fw_init(args, arglen);
ssc(0, (long) kpath, 0, 0, SSC_LOAD_SYMBOLS);
/*
* Install the kernel's command line argument on ZERO_PAGE
* just after the botoparam structure.
* In case we don't have any argument just put \0
*/
memcpy(((struct ia64_boot_param *)ZERO_PAGE_ADDR) + 1, args, arglen);
sp = __pa(&stack);
asm volatile ("br.sptk.few %0" :: "b"(e_entry));
cons_write("kernel returned!\n");
ssc(-1, 0, 0, 0, SSC_EXIT);
}
OUTPUT_FORMAT("elf64-ia64-little")
OUTPUT_ARCH(ia64)
ENTRY(_start)
SECTIONS
{
/* Read-only sections, merged into text segment: */
. = 0x100000;
_text = .;
.text : { *(__ivt_section) *(.text) }
_etext = .;
/* Global data */
_data = .;
.rodata : { *(.rodata) }
.data : { *(.data) *(.gnu.linkonce.d*) CONSTRUCTORS }
__gp = ALIGN (8) + 0x200000;
.got : { *(.got.plt) *(.got) }
/* We want the small data sections together, so single-instruction offsets
can access them all, and initialized data all before uninitialized, so
we can shorten the on-disk segment size. */
.sdata : { *(.sdata) }
_edata = .;
_bss = .;
.sbss : { *(.sbss) *(.scommon) }
.bss : { *(.bss) *(COMMON) }
. = ALIGN(64 / 8);
_end = . ;
/* Stabs debugging sections. */
.stab 0 : { *(.stab) }
.stabstr 0 : { *(.stabstr) }
.stab.excl 0 : { *(.stab.excl) }
.stab.exclstr 0 : { *(.stab.exclstr) }
.stab.index 0 : { *(.stab.index) }
.stab.indexstr 0 : { *(.stab.indexstr) }
.comment 0 : { *(.comment) }
/* DWARF debug sections.
Symbols in the DWARF debugging sections are relative to the beginning
of the section so we begin them at 0. */
/* DWARF 1 */
.debug 0 : { *(.debug) }
.line 0 : { *(.line) }
/* GNU DWARF 1 extensions */
.debug_srcinfo 0 : { *(.debug_srcinfo) }
.debug_sfnames 0 : { *(.debug_sfnames) }
/* DWARF 1.1 and DWARF 2 */
.debug_aranges 0 : { *(.debug_aranges) }
.debug_pubnames 0 : { *(.debug_pubnames) }
/* DWARF 2 */
.debug_info 0 : { *(.debug_info) }
.debug_abbrev 0 : { *(.debug_abbrev) }
.debug_line 0 : { *(.debug_line) }
.debug_frame 0 : { *(.debug_frame) }
.debug_str 0 : { *(.debug_str) }
.debug_loc 0 : { *(.debug_loc) }
.debug_macinfo 0 : { *(.debug_macinfo) }
/* SGI/MIPS DWARF 2 extensions */
.debug_weaknames 0 : { *(.debug_weaknames) }
.debug_funcnames 0 : { *(.debug_funcnames) }
.debug_typenames 0 : { *(.debug_typenames) }
.debug_varnames 0 : { *(.debug_varnames) }
/* These must appear regardless of . */
}
mainmenu_name "Kernel configuration of Linux for IA-64 machines"
mainmenu_option next_comment
comment 'General setup'
choice 'IA-64 system type' \
"Generic CONFIG_IA64_GENERIC \
HP-simulator CONFIG_IA64_HP_SIM \
SN1-simulator CONFIG_IA64_SGI_SN1_SIM \
DIG-compliant CONFIG_IA64_DIG" Generic
choice 'Kernel page size' \
"4KB CONFIG_IA64_PAGE_SIZE_4KB \
8KB CONFIG_IA64_PAGE_SIZE_8KB \
16KB CONFIG_IA64_PAGE_SIZE_16KB \
64KB CONFIG_IA64_PAGE_SIZE_64KB" 16KB
if [ "$CONFIG_IA64_DIG" = "y" ]; then
bool ' Enable Itanium A-step specific code' CONFIG_ITANIUM_ASTEP_SPECIFIC
bool ' Enable SoftSDV hacks' CONFIG_IA64_SOFTSDV_HACKS n
bool ' Enable BigSur hacks' CONFIG_IA64_BIGSUR_HACKS y
bool ' Enable Lion hacks' CONFIG_IA64_LION_HACKS n
bool ' Emulate PAL/SAL/EFI firmware' CONFIG_IA64_FW_EMU n
bool ' Get PCI IRQ routing from firmware/ACPI' CONFIG_IA64_IRQ_ACPI y
fi
if [ "$CONFIG_IA64_GENERIC" = "y" ]; then
define_bool CONFIG_IA64_SOFTSDV_HACKS y
fi
if [ "$CONFIG_IA64_SGI_SN1_SIM" = "y" ]; then
define_bool CONFIG_NUMA y
define_bool CONFIG_IA64_SOFTSDV_HACKS y
fi
define_bool CONFIG_KCORE_ELF y # On IA-64, we always want an ELF /dev/kcore.
bool 'SMP support' CONFIG_SMP n
bool 'Performance monitor support' CONFIG_PERFMON n
bool 'Networking support' CONFIG_NET n
bool 'System V IPC' CONFIG_SYSVIPC n
bool 'BSD Process Accounting' CONFIG_BSD_PROCESS_ACCT n
bool 'Sysctl support' CONFIG_SYSCTL n
tristate 'Kernel support for ELF binaries' CONFIG_BINFMT_ELF
tristate 'Kernel support for MISC binaries' CONFIG_BINFMT_MISC
bool 'PCI support' CONFIG_PCI n
source drivers/pci/Config.in
source drivers/pcmcia/Config.in
mainmenu_option next_comment
comment 'Code maturity level options'
bool 'Prompt for development and/or incomplete code/drivers' \
CONFIG_EXPERIMENTAL n
endmenu
mainmenu_option next_comment
comment 'Loadable module support'
bool 'Enable loadable module support' CONFIG_MODULES n
if [ "$CONFIG_MODULES" = "y" ]; then
bool 'Set version information on all symbols for modules' CONFIG_MODVERSIONS n
bool 'Kernel module loader' CONFIG_KMOD n
fi
endmenu
source drivers/parport/Config.in
endmenu
source drivers/pnp/Config.in
source drivers/block/Config.in
source drivers/i2o/Config.in
if [ "$CONFIG_NET" = "y" ]; then
source net/Config.in
fi
mainmenu_option next_comment
comment 'SCSI support'
tristate 'SCSI support' CONFIG_SCSI
if [ "$CONFIG_SCSI" != "n" ]; then
source drivers/scsi/Config.in
bool 'Simulated SCSI disk' CONFIG_SCSI_SIM n
fi
endmenu
if [ "$CONFIG_NET" = "y" ]; then
mainmenu_option next_comment
comment 'Network device support'
bool 'Network device support' CONFIG_NETDEVICES n
if [ "$CONFIG_NETDEVICES" = "y" ]; then
source drivers/net/Config.in
fi
endmenu
fi
source net/ax25/Config.in
mainmenu_option next_comment
comment 'ISDN subsystem'
tristate 'ISDN support' CONFIG_ISDN
if [ "$CONFIG_ISDN" != "n" ]; then
source drivers/isdn/Config.in
fi
endmenu
mainmenu_option next_comment
comment 'CD-ROM drivers (not for SCSI or IDE/ATAPI drives)'
bool 'Support non-SCSI/IDE/ATAPI drives' CONFIG_CD_NO_IDESCSI n
if [ "$CONFIG_CD_NO_IDESCSI" != "n" ]; then
source drivers/cdrom/Config.in
fi
endmenu
source drivers/char/Config.in
source drivers/usb/Config.in
source drivers/misc/Config.in
source fs/Config.in
source fs/nls/Config.in
if [ "$CONFIG_VT" = "y" ]; then
mainmenu_option next_comment
comment 'Console drivers'
bool 'VGA text console' CONFIG_VGA_CONSOLE n
if [ "$CONFIG_FB" = "y" ]; then
define_bool CONFIG_PCI_CONSOLE y
fi
source drivers/video/Config.in
endmenu
fi
mainmenu_option next_comment
comment 'Sound'
tristate 'Sound card support' CONFIG_SOUND
if [ "$CONFIG_SOUND" != "n" ]; then
source drivers/sound/Config.in
fi
endmenu
mainmenu_option next_comment
comment 'Kernel hacking'
#bool 'Debug kmalloc/kfree' CONFIG_DEBUG_MALLOC
if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then
tristate 'Kernel support for IA-32 emulation' CONFIG_IA32_SUPPORT
tristate 'Kernel FP software completion' CONFIG_MATHEMU
else
define_bool CONFIG_MATHEMU y
fi
bool 'Magic SysRq key' CONFIG_MAGIC_SYSRQ n
bool 'Early printk support (requires VGA!)' CONFIG_IA64_EARLY_PRINTK n
bool 'Turn on compare-and-exchange bug checking (slow!)' CONFIG_IA64_DEBUG_CMPXCHG n
bool 'Turn on irq debug checks (slow!)' CONFIG_IA64_DEBUG_IRQ n
bool 'Print possible IA64 hazards to console' CONFIG_IA64_PRINT_HAZARDS n
bool 'Built-in Kernel Debugger support' CONFIG_KDB
if [ "$CONFIG_KDB" = "y" ]; then
bool 'Compile the kernel with frame pointers' CONFIG_KDB_FRAMEPTR
int 'KDB Kernel Symbol Table size?' CONFIG_KDB_STBSIZE 10000
fi
endmenu
#
# Automatically generated make config: don't edit
#
#
# Code maturity level options
#
CONFIG_EXPERIMENTAL=y
#
# Loadable module support
#
# CONFIG_MODULES is not set
#
# General setup
#
CONFIG_IA64_SIM=y
CONFIG_PCI=y
# CONFIG_PCI_QUIRKS is not set
CONFIG_PCI_OLD_PROC=y
# CONFIG_NET is not set
# CONFIG_SYSVIPC is not set
# CONFIG_BSD_PROCESS_ACCT is not set
# CONFIG_SYSCTL is not set
# CONFIG_BINFMT_ELF is not set
# CONFIG_BINFMT_MISC is not set
# CONFIG_BINFMT_JAVA is not set
# CONFIG_BINFMT_EM86 is not set
# CONFIG_PARPORT is not set
#
# Plug and Play support
#
# CONFIG_PNP is not set
#
# Block devices
#
# CONFIG_BLK_DEV_FD is not set
# CONFIG_BLK_DEV_IDE is not set
#
# Please see Documentation/ide.txt for help/info on IDE drives
#
# CONFIG_BLK_DEV_HD_ONLY is not set
#
# Additional Block Devices
#
# CONFIG_BLK_DEV_LOOP is not set
# CONFIG_BLK_DEV_NBD is not set
# CONFIG_BLK_DEV_MD is not set
# CONFIG_BLK_DEV_RAM is not set
# CONFIG_BLK_DEV_XD is not set
CONFIG_PARIDE_PARPORT=y
# CONFIG_PARIDE is not set
# CONFIG_BLK_DEV_HD is not set
#
# SCSI support
#
# CONFIG_SCSI is not set
# CONFIG_SCSI_G_NCR5380_PORT is not set
# CONFIG_SCSI_G_NCR5380_MEM is not set
#
# Amateur Radio support
#
# CONFIG_HAMRADIO is not set
#
# ISDN subsystem
#
# CONFIG_ISDN is not set
#
# CD-ROM drivers (not for SCSI or IDE/ATAPI drives)
#
# CONFIG_CD_NO_IDESCSI is not set
#
# Character devices
#
# CONFIG_VT is not set
# CONFIG_SERIAL is not set
# CONFIG_SERIAL_EXTENDED is not set
# CONFIG_SERIAL_NONSTANDARD is not set
# CONFIG_UNIX98_PTYS is not set
# CONFIG_MOUSE is not set
# CONFIG_QIC02_TAPE is not set
# CONFIG_WATCHDOG is not set
# CONFIG_RTC is not set
CONFIG_EFI_RTC=y
# CONFIG_VIDEO_DEV is not set
# CONFIG_NVRAM is not set
# CONFIG_JOYSTICK is not set
#
# Ftape, the floppy tape device driver
#
# CONFIG_FTAPE is not set
# CONFIG_FT_NORMAL_DEBUG is not set
# CONFIG_FT_FULL_DEBUG is not set
# CONFIG_FT_NO_TRACE is not set
# CONFIG_FT_NO_TRACE_AT_ALL is not set
# CONFIG_FT_STD_FDC is not set
# CONFIG_FT_MACH2 is not set
# CONFIG_FT_PROBE_FC10 is not set
# CONFIG_FT_ALT_FDC is not set
#
# Filesystems
#
# CONFIG_QUOTA is not set
# CONFIG_MINIX_FS is not set
# CONFIG_EXT2_FS is not set
# CONFIG_ISO9660_FS is not set
# CONFIG_FAT_FS is not set
# CONFIG_PROC_FS is not set
# CONFIG_HPFS_FS is not set
# CONFIG_NTFS_FS is not set
# CONFIG_SYSV_FS is not set
# CONFIG_AFFS_FS is not set
# CONFIG_HFS_FS is not set
# CONFIG_ROMFS_FS is not set
# CONFIG_AUTOFS_FS is not set
# CONFIG_UFS_FS is not set
# CONFIG_BSD_DISKLABEL is not set
# CONFIG_SMD_DISKLABEL is not set
# CONFIG_SOLARIS_X86_PARTITION is not set
# CONFIG_ADFS_FS is not set
# CONFIG_QNX4FS_FS is not set
# CONFIG_MAC_PARTITION is not set
# CONFIG_NLS is not set
#
# Sound
#
# CONFIG_SOUND is not set
#
# Kernel hacking
#
# CONFIG_MATHEMU is not set
# CONFIG_MAGIC_SYSRQ is not set
#
# ia64/platform/dig/Makefile
#
# Copyright (C) 1999 Silicon Graphics, Inc.
# Copyright (C) Srinivasa Thirumalachar (sprasad@engr.sgi.com)
#
.S.s:
$(CC) -D__ASSEMBLY__ $(AFLAGS) -E -o $*.s $<
.S.o:
$(CC) -D__ASSEMBLY__ $(AFLAGS) -c -o $*.o $<
all: dig.a
O_TARGET = dig.a
O_OBJS = iosapic.o setup.o
ifeq ($(CONFIG_IA64_GENERIC),y)
O_OBJS += machvec.o
endif
clean::
include $(TOPDIR)/Rules.make
This diff is collapsed.
#include <asm/machvec_init.h>
#include <asm/machvec_dig.h>
MACHVEC_DEFINE(dig)
/*
* Platform dependent support for Intel SoftSDV simulator.
*
* Copyright (C) 1999 Intel Corp.
* Copyright (C) 1999 Hewlett-Packard Co
* Copyright (C) 1999 David Mosberger-Tang <davidm@hpl.hp.com>
* Copyright (C) 1999 VA Linux Systems
* Copyright (C) 1999 Walt Drummond <drummond@valinux.com>
* Copyright (C) 1999 Vijay Chander <vijay@engr.sgi.com>
*/
#include <linux/config.h>
#include <linux/init.h>
#include <linux/delay.h>
#include <linux/kernel.h>
#include <linux/kdev_t.h>
#include <linux/string.h>
#include <linux/tty.h>
#include <linux/console.h>
#include <linux/timex.h>
#include <linux/sched.h>
#include <linux/mc146818rtc.h>
#include <asm/io.h>
#include <asm/machvec.h>
#include <asm/system.h>
#ifdef CONFIG_IA64_FW_EMU
# include "../../kernel/fw-emu.c"
#endif
/*
* This is here so we can use the CMOS detection in ide-probe.c to
* determine what drives are present. In theory, we don't need this
* as the auto-detection could be done via ide-probe.c:do_probe() but
* in practice that would be much slower, which is painful when
* running in the simulator. Note that passing zeroes in DRIVE_INFO
* is sufficient (the IDE driver will autodetect the drive geometry).
*/
char drive_info[4*16];
unsigned char aux_device_present = 0xaa; /* XXX remove this when legacy I/O is gone */
void __init
dig_setup (char **cmdline_p)
{
unsigned int orig_x, orig_y, num_cols, num_rows, font_height;
/*
* This assumes that the EFI partition is physical disk 1
* partition 1 and the Linux root disk is physical disk 1
* partition 2.
*/
#ifdef CONFIG_IA64_LION_HACKS
/* default to /dev/sda2 on Lion... */
ROOT_DEV = to_kdev_t(0x0802); /* default to second partition on first drive */
#else
/* default to /dev/dha2 on BigSur... */
ROOT_DEV = to_kdev_t(0x0302); /* default to second partition on first drive */
#endif
#ifdef CONFIG_SMP
init_smp_config();
#endif
memset(&screen_info, 0, sizeof(screen_info));
if (!ia64_boot_param.console_info.num_rows
|| !ia64_boot_param.console_info.num_cols)
{
printk("dig_setup: warning: invalid screen-info, guessing 80x25\n");
orig_x = 0;
orig_y = 0;
num_cols = 80;
num_rows = 25;
font_height = 16;
} else {
orig_x = ia64_boot_param.console_info.orig_x;
orig_y = ia64_boot_param.console_info.orig_y;
num_cols = ia64_boot_param.console_info.num_cols;
num_rows = ia64_boot_param.console_info.num_rows;
font_height = 400 / num_rows;
}
screen_info.orig_x = orig_x;
screen_info.orig_y = orig_y;
screen_info.orig_video_cols = num_cols;
screen_info.orig_video_lines = num_rows;
screen_info.orig_video_points = font_height;
screen_info.orig_video_mode = 3; /* XXX fake */
screen_info.orig_video_isVGA = 1; /* XXX fake */
screen_info.orig_video_ega_bx = 3; /* XXX fake */
}
#
# ia64/platform/hp/Makefile
#
# Copyright (C) 1999 Silicon Graphics, Inc.
# Copyright (C) Srinivasa Thirumalachar (sprasad@engr.sgi.com)
#
all: hp.a
O_TARGET = hp.a
O_OBJS = hpsim_console.o hpsim_irq.o hpsim_setup.o
ifeq ($(CONFIG_IA64_GENERIC),y)
O_OBJS += hpsim_machvec.o
endif
clean::
include $(TOPDIR)/Rules.make
/*
* Platform dependent support for HP simulator.
*
* Copyright (C) 1998, 1999 Hewlett-Packard Co
* Copyright (C) 1998, 1999 David Mosberger-Tang <davidm@hpl.hp.com>
* Copyright (C) 1999 Vijay Chander <vijay@engr.sgi.com>
*/
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/param.h>
#include <linux/string.h>
#include <linux/types.h>
#include <linux/kdev_t.h>
#include <linux/console.h>
#include <asm/delay.h>
#include <asm/irq.h>
#include <asm/pal.h>
#include <asm/machvec.h>
#include <asm/pgtable.h>
#include <asm/sal.h>
#include "hpsim_ssc.h"
static int simcons_init (struct console *, char *);
static void simcons_write (struct console *, const char *, unsigned);
static int simcons_wait_key (struct console *);
static kdev_t simcons_console_device (struct console *);
struct console hpsim_cons = {
"simcons",
simcons_write, /* write */
NULL, /* read */
simcons_console_device, /* device */
simcons_wait_key, /* wait_key */
NULL, /* unblank */
simcons_init, /* setup */
CON_PRINTBUFFER, /* flags */
-1, /* index */
0, /* cflag */
NULL /* next */
};
static int
simcons_init (struct console *cons, char *options)
{
return 0;
}
static void
simcons_write (struct console *cons, const char *buf, unsigned count)
{
unsigned long ch;
while (count-- > 0) {
ch = *buf++;
ia64_ssc(ch, 0, 0, 0, SSC_PUTCHAR);
if (ch == '\n')
ia64_ssc('\r', 0, 0, 0, SSC_PUTCHAR);
}
}
static int
simcons_wait_key (struct console *cons)
{
char ch;
do {
ch = ia64_ssc(0, 0, 0, 0, SSC_GETCHAR);
} while (ch == '\0');
return ch;
}
static kdev_t
simcons_console_device (struct console *c)
{
return MKDEV(TTY_MAJOR, 64 + c->index);
}
This diff is collapsed.
#include <asm/machvec_init.h>
#include <asm/machvec_hpsim.h>
MACHVEC_DEFINE(hpsim)
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
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