Commit 100b0f30 authored by David Mosberger's avatar David Mosberger

ia64: Manual merge with 2.5.51.

parents 8b4ad80b ff1a7e88
#
# For a description of the syntax of this configuration file,
# see Documentation/kbuild/kconfig-language.txt.
#
mainmenu "IA-64 Linux Kernel Configuration" mainmenu "IA-64 Linux Kernel Configuration"
source "init/Kconfig" source "init/Kconfig"
...@@ -215,6 +220,22 @@ config NUMA ...@@ -215,6 +220,22 @@ config NUMA
Access). This option is for configuring high-end multiprocessor Access). This option is for configuring high-end multiprocessor
server systems. If in doubt, say N. server systems. If in doubt, say N.
choice
prompt "Maximum Memory per NUMA Node" if NUMA && IA64_DIG
depends on NUMA && IA64_DIG
default IA64_NODESIZE_16GB
config IA64_NODESIZE_16GB
bool "16GB"
config IA64_NODESIZE_64GB
bool "64GB"
config IA64_NODESIZE_256GB
bool "256GB"
endchoice
config DISCONTIGMEM config DISCONTIGMEM
bool bool
depends on IA64_SGI_SN1 || IA64_SGI_SN2 || (IA64_GENERIC || IA64_DIG || IA64_HP_ZX1) && NUMA depends on IA64_SGI_SN1 || IA64_SGI_SN2 || (IA64_GENERIC || IA64_DIG || IA64_HP_ZX1) && NUMA
......
...@@ -5,22 +5,20 @@ ...@@ -5,22 +5,20 @@
# License. See the file "COPYING" in the main directory of this archive # License. See the file "COPYING" in the main directory of this archive
# for more details. # for more details.
# #
# Copyright (C) 1998-2001 by David Mosberger-Tang <davidm@hpl.hp.com> # Copyright (C) 1998-2002 by David Mosberger-Tang <davidm@hpl.hp.com>
# #
NM := $(CROSS_COMPILE)nm -B NM := $(CROSS_COMPILE)nm -B
AWK := awk
export AWK export AWK
OBJCOPYFLAGS := --strip-all OBJCOPYFLAGS := --strip-all
LDFLAGS_vmlinux := -static LDFLAGS_vmlinux := -static
AFLAGS_KERNEL := -mconstant-gp AFLAGS_KERNEL := -mconstant-gp
EXTRA = EXTRA :=
CFLAGS := $(CFLAGS) -pipe $(EXTRA) -ffixed-r13 -mfixed-range=f10-f15,f32-f127 \ cflags-y := -pipe $(EXTRA) -ffixed-r13 -mfixed-range=f10-f15,f32-f127 \
-falign-functions=32 -falign-functions=32
# -ffunction-sections
CFLAGS_KERNEL := -mconstant-gp CFLAGS_KERNEL := -mconstant-gp
GCC_VERSION=$(shell $(CC) -v 2>&1 | fgrep 'gcc version' | cut -f3 -d' ' | cut -f1 -d'.') GCC_VERSION=$(shell $(CC) -v 2>&1 | fgrep 'gcc version' | cut -f3 -d' ' | cut -f1 -d'.')
...@@ -29,52 +27,46 @@ ifneq ($(GCC_VERSION),2) ...@@ -29,52 +27,46 @@ ifneq ($(GCC_VERSION),2)
CFLAGS += -frename-registers --param max-inline-insns=5000 CFLAGS += -frename-registers --param max-inline-insns=5000
endif endif
ifeq ($(CONFIG_ITANIUM_BSTEP_SPECIFIC),y) cflags-$(CONFIG_ITANIUM_BSTEP_SPECIFIC) += -mb-step
CFLAGS += -mb-step cflags-$(CONFIG_IA64_SGI_SN) += -DBRINGUP
endif
HEAD := arch/$(ARCH)/kernel/head.o arch/$(ARCH)/kernel/init_task.o HEAD := arch/ia64/kernel/head.o arch/ia64/kernel/init_task.o
libs-y += arch/$(ARCH)/lib/
core-y += arch/$(ARCH)/kernel/ arch/$(ARCH)/mm/
core-$(CONFIG_IA32_SUPPORT) += arch/$(ARCH)/ia32/
core-$(CONFIG_IA64_DIG) += arch/$(ARCH)/dig/
core-$(CONFIG_IA64_GENERIC) += arch/$(ARCH)/dig/ arch/$(ARCH)/hp/common/ arch/$(ARCH)/hp/zx1/ \
arch/$(ARCH)/hp/sim/
core-$(CONFIG_IA64_HP_ZX1) += arch/$(ARCH)/dig/
core-$(CONFIG_IA64_SGI_SN) += arch/$(ARCH)/sn/kernel arch/$(ARCH)/sn/io \
arch/$(ARCH)/sn/fakeprom
drivers-$(CONFIG_PCI) += arch/$(ARCH)/pci/
drivers-$(CONFIG_IA64_HP_SIM) += arch/$(ARCH)/hp/sim/
drivers-$(CONFIG_IA64_HP_ZX1) += arch/$(ARCH)/hp/common/ arch/$(ARCH)/hp/zx1/
ifdef CONFIG_IA64_SGI_SN
CFLAGS += -DBRINGUP
SUBDIRS += arch/$(ARCH)/sn/fakeprom
endif
makeboot = $(call descend,arch/ia64/boot,$(1)) libs-y += arch/ia64/lib/
maketool = $(call descend,arch/ia64/tools,$(1)) core-y += arch/ia64/kernel/ arch/ia64/mm/
core-$(CONFIG_IA32_SUPPORT) += arch/ia64/ia32/
core-$(CONFIG_IA64_DIG) += arch/ia64/dig/
core-$(CONFIG_IA64_GENERIC) += arch/ia64/dig/ arch/ia64/hp/common/ arch/ia64/hp/zx1/ \
arch/ia64/hp/sim/
core-$(CONFIG_IA64_HP_ZX1) += arch/ia64/dig/
core-$(CONFIG_IA64_SGI_SN) += arch/ia64/sn/kernel/ \
arch/ia64/sn/io/ \
arch/ia64/sn/io/sn2/ \
arch/ia64/sn/io/sn2/pcibr/ \
arch/ia64/sn/kernel/sn2/
drivers-$(CONFIG_PCI) += arch/ia64/pci/
drivers-$(CONFIG_IA64_HP_SIM) += arch/ia64/hp/sim/
drivers-$(CONFIG_IA64_HP_ZX1) += arch/ia64/hp/common/ arch/ia64/hp/zx1/
drivers-$(CONFIG_IA64_SGI_SN) += arch/ia64/sn/fakeprom/
.PHONY: compressed archclean archmrproper $(TOPDIR)/include/asm-ia64/offsets.h makeboot =$(Q)$(MAKE) -f scripts/Makefile.build obj=arch/ia64/boot $(1)
maketool =$(Q)$(MAKE) -f scripts/Makefile.build obj=arch/ia64/tools $(1)
all: compressed boot .PHONY: compressed archclean archmrproper include/asm-ia64/offsets.h
boot: vmlinux all compressed: vmlinux.gz
+@$(call makeboot,all)
compressed: vmlinux vmlinux.gz: vmlinux
$(OBJCOPY) $(OBJCOPYFLAGS) vmlinux vmlinux-tmp $(call makeboot,vmlinux.gz)
gzip vmlinux-tmp
mv vmlinux-tmp.gz vmlinux.gz
archmrproper:
archclean: archclean:
$(MAKE) -rR -f scripts/Makefile.clean obj=arch/$(ARCH)/boot $(Q)$(MAKE) -f scripts/Makefile.clean obj=arch/ia64/boot
archmrproper: CLEAN_FILES += include/asm-ia64/offsets.h vmlinux.gz bootloader
prepare: $(TOPDIR)/include/asm-ia64/offsets.h prepare: include/asm-ia64/offsets.h
$(TOPDIR)/include/asm-ia64/offsets.h: include/asm include/linux/version.h \ include/asm-ia64/offsets.h: include/asm include/linux/version.h \
include/config/MARKER include/config/MARKER
+@$(call maketool,$@) $(call maketool,$@)
...@@ -8,20 +8,31 @@ ...@@ -8,20 +8,31 @@
# Copyright (C) 1998 by David Mosberger-Tang <davidm@hpl.hp.com> # Copyright (C) 1998 by David Mosberger-Tang <davidm@hpl.hp.com>
# #
LINKFLAGS = -static -T $(src)/bootloader.lds EXTRA_TARGETS := vmlinux.bin vmlinux.gz
OBJS = $(obj)/bootloader.o
targets-$(CONFIG_IA64_HP_SIM) += bootloader targets-$(CONFIG_IA64_HP_SIM) += bootloader
targets-$(CONFIG_IA64_GENERIC) += bootloader targets-$(CONFIG_IA64_GENERIC) += bootloader
EXTRA_TARGETS += $(sort $(targets-y))
quiet_cmd_cptotop = LN $@
cmd_cptotop = ln $< $@
vmlinux.gz: $(obj)/vmlinux.gz $(targets-y)
$(call cmd,cptotop)
@echo ' Kernel: $@ is ready'
bootloader: $(obj)/bootloader
$(call cmd,cptotop)
$(obj)/vmlinux.gz: $(obj)/vmlinux.bin FORCE
$(call if_changed,gzip)
CFLAGS := $(CFLAGS) $(CFLAGS_KERNEL) $(obj)/vmlinux.bin: vmlinux FORCE
$(call if_changed,objcopy)
all: $(targets-y)
bootloader: $(OBJS) LDFLAGS_bootloader = -static -T
$(LD) $(LINKFLAGS) $(OBJS) $(TOPDIR)/lib/lib.a $(TOPDIR)/arch/$(ARCH)/lib/lib.a \
-o bootloader
clean: $(obj)/bootloader: $(src)/bootloader.lds $(obj)/bootloader.o \
rm -f $(TARGETS) lib/lib.a arch/ia64/lib/lib.a FORCE
$(call if_changed,ld)
...@@ -3,12 +3,14 @@ ...@@ -3,12 +3,14 @@
* *
* Loads an ELF kernel. * Loads an ELF kernel.
* *
* Copyright (C) 1998, 1999, 2001 Hewlett-Packard Co * Copyright (C) 1998-2002 Hewlett-Packard Co
* Copyright (C) 1998, 1999, 2001 David Mosberger-Tang <davidm@hpl.hp.com> * David Mosberger-Tang <davidm@hpl.hp.com>
* Copyright (C) 1998, 1999 Stephane Eranian <eranian@hpl.hp.com> * Stephane Eranian <eranian@hpl.hp.com>
* *
* 01/07/99 S.Eranian modified to pass command line arguments to kernel * 01/07/99 S.Eranian modified to pass command line arguments to kernel
*/ */
struct task_struct; /* forward declaration for elf.h */
#include <linux/config.h> #include <linux/config.h>
#include <linux/elf.h> #include <linux/elf.h>
#include <linux/init.h> #include <linux/init.h>
...@@ -53,6 +55,15 @@ struct disk_stat { ...@@ -53,6 +55,15 @@ struct disk_stat {
#include "../kernel/fw-emu.c" #include "../kernel/fw-emu.c"
/*
* Set a break point on this function so that symbols are available to set breakpoints in
* the kernel being debugged.
*/
static void
debug_break (void)
{
}
static void static void
cons_write (const char *buf) cons_write (const char *buf)
{ {
...@@ -187,6 +198,7 @@ _start (void) ...@@ -187,6 +198,7 @@ _start (void)
ssc(0, (long) kpath, 0, 0, SSC_LOAD_SYMBOLS); ssc(0, (long) kpath, 0, 0, SSC_LOAD_SYMBOLS);
debug_break();
asm volatile ("mov sp=%2; mov r28=%1; br.sptk.few %0" asm volatile ("mov sp=%2; mov r28=%1; br.sptk.few %0"
:: "b"(e_entry), "r"(bp), "r"(__pa(&stack))); :: "b"(e_entry), "r"(bp), "r"(__pa(&stack)));
......
...@@ -7,5 +7,3 @@ ...@@ -7,5 +7,3 @@
obj-y := setup.o obj-y := setup.o
obj-$(CONFIG_IA64_GENERIC) += machvec.o obj-$(CONFIG_IA64_GENERIC) += machvec.o
include $(TOPDIR)/Rules.make
...@@ -8,5 +8,3 @@ ...@@ -8,5 +8,3 @@
export-objs := sba_iommu.o export-objs := sba_iommu.o
obj-y := sba_iommu.o obj-y := sba_iommu.o
include $(TOPDIR)/Rules.make
...@@ -13,5 +13,3 @@ obj-$(CONFIG_IA64_GENERIC) += hpsim_machvec.o ...@@ -13,5 +13,3 @@ obj-$(CONFIG_IA64_GENERIC) += hpsim_machvec.o
obj-$(CONFIG_HP_SIMETH) += simeth.o obj-$(CONFIG_HP_SIMETH) += simeth.o
obj-$(CONFIG_HP_SIMSERIAL) += simserial.o obj-$(CONFIG_HP_SIMSERIAL) += simserial.o
obj-$(CONFIG_HP_SIMSCSI) += simscsi.o obj-$(CONFIG_HP_SIMSCSI) += simscsi.o
include $(TOPDIR)/Rules.make
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
#include "../drivers/scsi/hosts.h" #include "../drivers/scsi/hosts.h"
#include "simscsi.h" #include "simscsi.h"
#define DEBUG_SIMSCSI 1 #define DEBUG_SIMSCSI 0
/* Simulator system calls: */ /* Simulator system calls: */
...@@ -377,6 +377,12 @@ simscsi_queuecommand (Scsi_Cmnd *sc, void (*done)(Scsi_Cmnd *)) ...@@ -377,6 +377,12 @@ simscsi_queuecommand (Scsi_Cmnd *sc, void (*done)(Scsi_Cmnd *))
return 0; return 0;
} }
int
simscsi_host_reset (Scsi_Cmnd *sc)
{
printk ("simscsi_host_reset: not implemented\n");
return 0;
}
static Scsi_Host_Template driver_template = SIMSCSI; static Scsi_Host_Template driver_template = SIMSCSI;
......
/* /*
* Simulated SCSI driver. * Simulated SCSI driver.
* *
* Copyright (C) 1999 Hewlett-Packard Co * Copyright (C) 1999, 2002 Hewlett-Packard Co
* David Mosberger-Tang <davidm@hpl.hp.com> * David Mosberger-Tang <davidm@hpl.hp.com>
*/ */
#ifndef SIMSCSI_H #ifndef SIMSCSI_H
...@@ -21,14 +21,17 @@ extern int simscsi_biosparam (struct scsi_device *, struct block_device *, ...@@ -21,14 +21,17 @@ extern int simscsi_biosparam (struct scsi_device *, struct block_device *,
sector_t, int[]); sector_t, int[]);
#define SIMSCSI { \ #define SIMSCSI { \
.name = "simscsi", \
.detect = simscsi_detect, \ .detect = simscsi_detect, \
.release = simscsi_release, \ .release = simscsi_release, \
.info = simscsi_info, \ .info = simscsi_info, \
.queuecommand = simscsi_queuecommand, \ .queuecommand = simscsi_queuecommand, \
.eh_host_reset_handler = simscsi_host_reset, \
.bios_param = simscsi_biosparam, \ .bios_param = simscsi_biosparam, \
.can_queue = SIMSCSI_REQ_QUEUE_LEN, \ .can_queue = SIMSCSI_REQ_QUEUE_LEN, \
.this_id = -1, \ .this_id = -1, \
.sg_tablesize = SG_ALL, \ .sg_tablesize = SG_ALL, \
.max_sectors = 1024, \
.cmd_per_lun = SIMSCSI_REQ_QUEUE_LEN, \ .cmd_per_lun = SIMSCSI_REQ_QUEUE_LEN, \
.present = 0, \ .present = 0, \
.unchecked_isa_dma = 0, \ .unchecked_isa_dma = 0, \
......
...@@ -7,5 +7,3 @@ ...@@ -7,5 +7,3 @@
obj-y := hpzx1_misc.o obj-y := hpzx1_misc.o
obj-$(CONFIG_IA64_GENERIC) += hpzx1_machvec.o obj-$(CONFIG_IA64_GENERIC) += hpzx1_machvec.o
include $(TOPDIR)/Rules.make
...@@ -2,7 +2,5 @@ ...@@ -2,7 +2,5 @@
# Makefile for the ia32 kernel emulation subsystem. # Makefile for the ia32 kernel emulation subsystem.
# #
obj-y := ia32_entry.o sys_ia32.o ia32_ioctl.o ia32_signal.o ia32_support.o ia32_traps.o \ obj-y := ia32_entry.o sys_ia32.o ia32_ioctl.o ia32_signal.o \
binfmt_elf32.o ia32_ldt.o ia32_support.o ia32_traps.o binfmt_elf32.o ia32_ldt.o
include $(TOPDIR)/Rules.make
...@@ -162,9 +162,11 @@ ia32_setup_arg_pages (struct linux_binprm *bprm) ...@@ -162,9 +162,11 @@ ia32_setup_arg_pages (struct linux_binprm *bprm)
{ {
unsigned long stack_base; unsigned long stack_base;
struct vm_area_struct *mpnt; struct vm_area_struct *mpnt;
struct mm_struct *mm = current->mm;
int i; int i;
stack_base = IA32_STACK_TOP - MAX_ARG_PAGES*PAGE_SIZE; stack_base = IA32_STACK_TOP - MAX_ARG_PAGES*PAGE_SIZE;
mm->arg_start = bprm->p + stack_base;
bprm->p += stack_base; bprm->p += stack_base;
if (bprm->loader) if (bprm->loader)
...@@ -175,6 +177,11 @@ ia32_setup_arg_pages (struct linux_binprm *bprm) ...@@ -175,6 +177,11 @@ ia32_setup_arg_pages (struct linux_binprm *bprm)
if (!mpnt) if (!mpnt)
return -ENOMEM; return -ENOMEM;
if (!vm_enough_memory((IA32_STACK_TOP - (PAGE_MASK & (unsigned long) bprm->p))>>PAGE_SHIFT)) {
kmem_cache_free(vm_area_cachep, mpnt);
return -ENOMEM;
}
down_write(&current->mm->mmap_sem); down_write(&current->mm->mmap_sem);
{ {
mpnt->vm_mm = current->mm; mpnt->vm_mm = current->mm;
......
...@@ -196,7 +196,7 @@ ia32_syscall_table: ...@@ -196,7 +196,7 @@ ia32_syscall_table:
data8 sys32_fork data8 sys32_fork
data8 sys_read data8 sys_read
data8 sys_write data8 sys_write
data8 sys_open /* 5 */ data8 sys32_open /* 5 */
data8 sys_close data8 sys_close
data8 sys32_waitpid data8 sys32_waitpid
data8 sys_creat data8 sys_creat
......
...@@ -165,10 +165,10 @@ copy_siginfo_to_user32 (siginfo_t32 *to, siginfo_t *from) ...@@ -165,10 +165,10 @@ copy_siginfo_to_user32 (siginfo_t32 *to, siginfo_t *from)
* sw ar.fsr(0:15) * sw ar.fsr(0:15)
* tag ar.fsr(16:31) with odd numbered bits not used * tag ar.fsr(16:31) with odd numbered bits not used
* (read returns 0, writes ignored) * (read returns 0, writes ignored)
* ipoff ar.fir(0:31) RO * ipoff ar.fir(0:31)
* cssel ar.fir(32:47) RO * cssel ar.fir(32:47)
* dataoff ar.fdr(0:31) RO * dataoff ar.fdr(0:31)
* datasel ar.fdr(32:47) RO * datasel ar.fdr(32:47)
* *
* _st[(0+TOS)%8] f8 * _st[(0+TOS)%8] f8
* _st[(1+TOS)%8] f9 (f8, f9 from ptregs) * _st[(1+TOS)%8] f9 (f8, f9 from ptregs)
...@@ -328,7 +328,7 @@ restore_ia32_fpstate_live (struct _fpstate_ia32 *save) ...@@ -328,7 +328,7 @@ restore_ia32_fpstate_live (struct _fpstate_ia32 *save)
unsigned long num64, mxcsr; unsigned long num64, mxcsr;
struct _fpreg_ia32 *fpregp; struct _fpreg_ia32 *fpregp;
char buf[32]; char buf[32];
unsigned long fsr, fcr; unsigned long fsr, fcr, fir, fdr;
int fp_tos, fr8_st_map; int fp_tos, fr8_st_map;
if (!access_ok(VERIFY_READ, save, sizeof(*save))) if (!access_ok(VERIFY_READ, save, sizeof(*save)))
...@@ -345,6 +345,8 @@ restore_ia32_fpstate_live (struct _fpstate_ia32 *save) ...@@ -345,6 +345,8 @@ restore_ia32_fpstate_live (struct _fpstate_ia32 *save)
*/ */
asm volatile ( "mov %0=ar.fsr;" : "=r"(fsr)); asm volatile ( "mov %0=ar.fsr;" : "=r"(fsr));
asm volatile ( "mov %0=ar.fcr;" : "=r"(fcr)); asm volatile ( "mov %0=ar.fcr;" : "=r"(fcr));
asm volatile ( "mov %0=ar.fir;" : "=r"(fir));
asm volatile ( "mov %0=ar.fdr;" : "=r"(fdr));
__get_user(mxcsr, (unsigned int *)&save->mxcsr); __get_user(mxcsr, (unsigned int *)&save->mxcsr);
/* setting bits 0..5 8..12 with cw and 39..47 from mxcsr */ /* setting bits 0..5 8..12 with cw and 39..47 from mxcsr */
...@@ -355,14 +357,34 @@ restore_ia32_fpstate_live (struct _fpstate_ia32 *save) ...@@ -355,14 +357,34 @@ restore_ia32_fpstate_live (struct _fpstate_ia32 *save)
/* setting bits 0..31 with sw and tag and 32..37 from mxcsr */ /* setting bits 0..31 with sw and tag and 32..37 from mxcsr */
__get_user(lo, (unsigned int *)&save->sw); __get_user(lo, (unsigned int *)&save->sw);
/* set bits 15,7 (fsw.b, fsw.es) to reflect the current error status */
if ( !(lo & 0x7f) )
lo &= (~0x8080);
__get_user(hi, (unsigned int *)&save->tag); __get_user(hi, (unsigned int *)&save->tag);
num64 = mxcsr & 0x3f; num64 = mxcsr & 0x3f;
num64 = (num64 << 16) | (hi & 0xffff); num64 = (num64 << 16) | (hi & 0xffff);
num64 = (num64 << 16) | (lo & 0xffff); num64 = (num64 << 16) | (lo & 0xffff);
fsr = (fsr & (~0x3fffffffff)) | num64; fsr = (fsr & (~0x3fffffffff)) | num64;
/* setting bits 0..47 with cssel and ipoff */
__get_user(lo, (unsigned int *)&save->ipoff);
__get_user(hi, (unsigned int *)&save->cssel);
num64 = hi & 0xffff;
num64 = (num64 << 32) | lo;
fir = (fir & (~0xffffffffffff)) | num64;
/* setting bits 0..47 with datasel and dataoff */
__get_user(lo, (unsigned int *)&save->dataoff);
__get_user(hi, (unsigned int *)&save->datasel);
num64 = hi & 0xffff;
num64 = (num64 << 32) | lo;
fdr = (fdr & (~0xffffffffffff)) | num64;
asm volatile ( "mov ar.fsr=%0;" :: "r"(fsr)); asm volatile ( "mov ar.fsr=%0;" :: "r"(fsr));
asm volatile ( "mov ar.fcr=%0;" :: "r"(fcr)); asm volatile ( "mov ar.fcr=%0;" :: "r"(fcr));
asm volatile ( "mov ar.fir=%0;" :: "r"(fir));
asm volatile ( "mov ar.fdr=%0;" :: "r"(fdr));
/* /*
* restore f8, f9 onto pt_regs * restore f8, f9 onto pt_regs
* restore f10..f15 onto live registers * restore f10..f15 onto live registers
......
...@@ -38,7 +38,6 @@ ...@@ -38,7 +38,6 @@
#include <linux/smb_mount.h> #include <linux/smb_mount.h>
#include <linux/ncp_fs.h> #include <linux/ncp_fs.h>
#include <linux/quota.h> #include <linux/quota.h>
#include <linux/module.h>
#include <linux/sunrpc/svc.h> #include <linux/sunrpc/svc.h>
#include <linux/nfsd/nfsd.h> #include <linux/nfsd/nfsd.h>
#include <linux/nfsd/cache.h> #include <linux/nfsd/cache.h>
...@@ -194,9 +193,12 @@ putstat (struct stat32 *ubuf, struct kstat *stat) ...@@ -194,9 +193,12 @@ putstat (struct stat32 *ubuf, struct kstat *stat)
err |= __put_user(high2lowgid(stat->gid), &ubuf->st_gid); err |= __put_user(high2lowgid(stat->gid), &ubuf->st_gid);
err |= __put_user(stat->rdev, &ubuf->st_rdev); err |= __put_user(stat->rdev, &ubuf->st_rdev);
err |= __put_user(stat->size, &ubuf->st_size); err |= __put_user(stat->size, &ubuf->st_size);
err |= __put_user(stat->atime, &ubuf->st_atime); err |= __put_user(stat->atime.tv_sec, &ubuf->st_atime);
err |= __put_user(stat->mtime, &ubuf->st_mtime); err |= __put_user(stat->atime.tv_nsec, &ubuf->st_atime_nsec);
err |= __put_user(stat->ctime, &ubuf->st_ctime); err |= __put_user(stat->mtime.tv_sec, &ubuf->st_mtime);
err |= __put_user(stat->mtime.tv_nsec, &ubuf->st_mtime_nsec);
err |= __put_user(stat->ctime.tv_sec, &ubuf->st_ctime);
err |= __put_user(stat->ctime.tv_nsec, &ubuf->st_ctime_nsec);
err |= __put_user(stat->blksize, &ubuf->st_blksize); err |= __put_user(stat->blksize, &ubuf->st_blksize);
err |= __put_user(stat->blocks, &ubuf->st_blocks); err |= __put_user(stat->blocks, &ubuf->st_blocks);
return err; return err;
...@@ -2898,57 +2900,152 @@ get_fpreg (int regno, struct _fpreg_ia32 *reg, struct pt_regs *ptp, struct switc ...@@ -2898,57 +2900,152 @@ get_fpreg (int regno, struct _fpreg_ia32 *reg, struct pt_regs *ptp, struct switc
} }
static int static int
save_ia32_fpstate (struct task_struct *tsk, struct _fpstate_ia32 *save) save_ia32_fpstate (struct task_struct *tsk, struct ia32_user_i387_struct *save)
{ {
struct switch_stack *swp; struct switch_stack *swp;
struct pt_regs *ptp; struct pt_regs *ptp;
int i, tos; int i, tos;
if (!access_ok(VERIFY_WRITE, save, sizeof(*save))) if (!access_ok(VERIFY_WRITE, save, sizeof(*save)))
return -EIO; return -EFAULT;
__put_user(tsk->thread.fcr, &save->cw);
__put_user(tsk->thread.fsr, &save->sw); __put_user(tsk->thread.fcr & 0xffff, &save->cwd);
__put_user(tsk->thread.fsr >> 32, &save->tag); __put_user(tsk->thread.fsr & 0xffff, &save->swd);
__put_user(tsk->thread.fir, &save->ipoff); __put_user((tsk->thread.fsr>>16) & 0xffff, &save->twd);
__put_user(__USER_CS, &save->cssel); __put_user(tsk->thread.fir, &save->fip);
__put_user(tsk->thread.fdr, &save->dataoff); __put_user((tsk->thread.fir>>32) & 0xffff, &save->fcs);
__put_user(__USER_DS, &save->datasel); __put_user(tsk->thread.fdr, &save->foo);
__put_user((tsk->thread.fdr>>32) & 0xffff, &save->fos);
/* /*
* Stack frames start with 16-bytes of temp space * Stack frames start with 16-bytes of temp space
*/ */
swp = (struct switch_stack *)(tsk->thread.ksp + 16); swp = (struct switch_stack *)(tsk->thread.ksp + 16);
ptp = ia64_task_regs(tsk); ptp = ia64_task_regs(tsk);
tos = (tsk->thread.fsr >> 11) & 3; tos = (tsk->thread.fsr >> 11) & 7;
for (i = 0; i < 8; i++) for (i = 0; i < 8; i++)
put_fpreg(i, &save->_st[i], ptp, swp, tos); put_fpreg(i, (struct _fpreg_ia32 *)&save->st_space[4*i], ptp, swp, tos);
return 0; return 0;
} }
static int static int
restore_ia32_fpstate (struct task_struct *tsk, struct _fpstate_ia32 *save) restore_ia32_fpstate (struct task_struct *tsk, struct ia32_user_i387_struct *save)
{ {
struct switch_stack *swp; struct switch_stack *swp;
struct pt_regs *ptp; struct pt_regs *ptp;
int i, tos, ret; int i, tos;
int fsrlo, fsrhi; unsigned int fsrlo, fsrhi, num32;
if (!access_ok(VERIFY_READ, save, sizeof(*save))) if (!access_ok(VERIFY_READ, save, sizeof(*save)))
return(-EIO); return(-EFAULT);
ret = __get_user(tsk->thread.fcr, (unsigned int *)&save->cw);
ret |= __get_user(fsrlo, (unsigned int *)&save->sw); __get_user(num32, (unsigned int *)&save->cwd);
ret |= __get_user(fsrhi, (unsigned int *)&save->tag); tsk->thread.fcr = (tsk->thread.fcr & (~0x1f3f)) | (num32 & 0x1f3f);
tsk->thread.fsr = ((long)fsrhi << 32) | (long)fsrlo; __get_user(fsrlo, (unsigned int *)&save->swd);
ret |= __get_user(tsk->thread.fir, (unsigned int *)&save->ipoff); __get_user(fsrhi, (unsigned int *)&save->twd);
ret |= __get_user(tsk->thread.fdr, (unsigned int *)&save->dataoff); num32 = (fsrhi << 16) | fsrlo;
tsk->thread.fsr = (tsk->thread.fsr & (~0xffffffff)) | num32;
__get_user(num32, (unsigned int *)&save->fip);
tsk->thread.fir = (tsk->thread.fir & (~0xffffffff)) | num32;
__get_user(num32, (unsigned int *)&save->foo);
tsk->thread.fdr = (tsk->thread.fdr & (~0xffffffff)) | num32;
/* /*
* Stack frames start with 16-bytes of temp space * Stack frames start with 16-bytes of temp space
*/ */
swp = (struct switch_stack *)(tsk->thread.ksp + 16); swp = (struct switch_stack *)(tsk->thread.ksp + 16);
ptp = ia64_task_regs(tsk); ptp = ia64_task_regs(tsk);
tos = (tsk->thread.fsr >> 11) & 3; tos = (tsk->thread.fsr >> 11) & 7;
for (i = 0; i < 8; i++) for (i = 0; i < 8; i++)
get_fpreg(i, &save->_st[i], ptp, swp, tos); get_fpreg(i, (struct _fpreg_ia32 *)&save->st_space[4*i], ptp, swp, tos);
return ret ? -EFAULT : 0; return 0;
}
static int
save_ia32_fpxstate (struct task_struct *tsk, struct ia32_user_fxsr_struct *save)
{
struct switch_stack *swp;
struct pt_regs *ptp;
int i, tos;
unsigned long mxcsr=0;
unsigned long num128[2];
if (!access_ok(VERIFY_WRITE, save, sizeof(*save)))
return -EFAULT;
__put_user(tsk->thread.fcr & 0xffff, &save->cwd);
__put_user(tsk->thread.fsr & 0xffff, &save->swd);
__put_user((tsk->thread.fsr>>16) & 0xffff, &save->twd);
__put_user(tsk->thread.fir, &save->fip);
__put_user((tsk->thread.fir>>32) & 0xffff, &save->fcs);
__put_user(tsk->thread.fdr, &save->foo);
__put_user((tsk->thread.fdr>>32) & 0xffff, &save->fos);
/*
* Stack frames start with 16-bytes of temp space
*/
swp = (struct switch_stack *)(tsk->thread.ksp + 16);
ptp = ia64_task_regs(tsk);
tos = (tsk->thread.fsr >> 11) & 7;
for (i = 0; i < 8; i++)
put_fpreg(i, (struct _fpreg_ia32 *)&save->st_space[4*i], ptp, swp, tos);
mxcsr = ((tsk->thread.fcr>>32) & 0xff80) | ((tsk->thread.fsr>>32) & 0x3f);
__put_user(mxcsr & 0xffff, &save->mxcsr);
for (i = 0; i < 8; i++) {
memcpy(&(num128[0]), &(swp->f16) + i*2, sizeof(unsigned long));
memcpy(&(num128[1]), &(swp->f17) + i*2, sizeof(unsigned long));
copy_to_user(&save->xmm_space[0] + 4*i, num128, sizeof(struct _xmmreg_ia32));
}
return 0;
}
static int
restore_ia32_fpxstate (struct task_struct *tsk, struct ia32_user_fxsr_struct *save)
{
struct switch_stack *swp;
struct pt_regs *ptp;
int i, tos;
unsigned int fsrlo, fsrhi, num32;
int mxcsr;
unsigned long num64;
unsigned long num128[2];
if (!access_ok(VERIFY_READ, save, sizeof(*save)))
return(-EFAULT);
__get_user(num32, (unsigned int *)&save->cwd);
tsk->thread.fcr = (tsk->thread.fcr & (~0x1f3f)) | (num32 & 0x1f3f);
__get_user(fsrlo, (unsigned int *)&save->swd);
__get_user(fsrhi, (unsigned int *)&save->twd);
num32 = (fsrhi << 16) | fsrlo;
tsk->thread.fsr = (tsk->thread.fsr & (~0xffffffff)) | num32;
__get_user(num32, (unsigned int *)&save->fip);
tsk->thread.fir = (tsk->thread.fir & (~0xffffffff)) | num32;
__get_user(num32, (unsigned int *)&save->foo);
tsk->thread.fdr = (tsk->thread.fdr & (~0xffffffff)) | num32;
/*
* Stack frames start with 16-bytes of temp space
*/
swp = (struct switch_stack *)(tsk->thread.ksp + 16);
ptp = ia64_task_regs(tsk);
tos = (tsk->thread.fsr >> 11) & 7;
for (i = 0; i < 8; i++)
get_fpreg(i, (struct _fpreg_ia32 *)&save->st_space[4*i], ptp, swp, tos);
__get_user(mxcsr, (unsigned int *)&save->mxcsr);
num64 = mxcsr & 0xff10;
tsk->thread.fcr = (tsk->thread.fcr & (~0xff1000000000)) | (num64<<32);
num64 = mxcsr & 0x3f;
tsk->thread.fsr = (tsk->thread.fsr & (~0x3f00000000)) | (num64<<32);
for (i = 0; i < 8; i++) {
copy_from_user(num128, &save->xmm_space[0] + 4*i, sizeof(struct _xmmreg_ia32));
memcpy(&(swp->f16) + i*2, &(num128[0]), sizeof(unsigned long));
memcpy(&(swp->f17) + i*2, &(num128[1]), sizeof(unsigned long));
}
return 0;
} }
extern asmlinkage long sys_ptrace (long, pid_t, unsigned long, unsigned long, long, long, long, extern asmlinkage long sys_ptrace (long, pid_t, unsigned long, unsigned long, long, long, long,
...@@ -3060,11 +3157,19 @@ sys32_ptrace (int request, pid_t pid, unsigned int addr, unsigned int data, ...@@ -3060,11 +3157,19 @@ sys32_ptrace (int request, pid_t pid, unsigned int addr, unsigned int data,
break; break;
case IA32_PTRACE_GETFPREGS: case IA32_PTRACE_GETFPREGS:
ret = save_ia32_fpstate(child, (struct _fpstate_ia32 *) A(data)); ret = save_ia32_fpstate(child, (struct ia32_user_i387_struct *) A(data));
break;
case IA32_PTRACE_GETFPXREGS:
ret = save_ia32_fpxstate(child, (struct ia32_user_fxsr_struct *) A(data));
break; break;
case IA32_PTRACE_SETFPREGS: case IA32_PTRACE_SETFPREGS:
ret = restore_ia32_fpstate(child, (struct _fpstate_ia32 *) A(data)); ret = restore_ia32_fpstate(child, (struct ia32_user_i387_struct *) A(data));
break;
case IA32_PTRACE_SETFPXREGS:
ret = restore_ia32_fpxstate(child, (struct ia32_user_fxsr_struct *) A(data));
break; break;
case PTRACE_SYSCALL: /* continue, stop after next syscall */ case PTRACE_SYSCALL: /* continue, stop after next syscall */
...@@ -3534,9 +3639,12 @@ putstat64 (struct stat64 *ubuf, struct kstat *kbuf) ...@@ -3534,9 +3639,12 @@ putstat64 (struct stat64 *ubuf, struct kstat *kbuf)
err |= __put_user(kbuf->rdev, &ubuf->st_rdev); err |= __put_user(kbuf->rdev, &ubuf->st_rdev);
err |= __put_user(kbuf->size, &ubuf->st_size_lo); err |= __put_user(kbuf->size, &ubuf->st_size_lo);
err |= __put_user((kbuf->size >> 32), &ubuf->st_size_hi); err |= __put_user((kbuf->size >> 32), &ubuf->st_size_hi);
err |= __put_user(kbuf->atime, &ubuf->st_atime); err |= __put_user(kbuf->atime.tv_sec, &ubuf->st_atime);
err |= __put_user(kbuf->mtime, &ubuf->st_mtime); err |= __put_user(kbuf->atime.tv_nsec, &ubuf->st_atime_nsec);
err |= __put_user(kbuf->ctime, &ubuf->st_ctime); err |= __put_user(kbuf->mtime.tv_sec, &ubuf->st_mtime);
err |= __put_user(kbuf->mtime.tv_nsec, &ubuf->st_mtime_nsec);
err |= __put_user(kbuf->ctime.tv_sec, &ubuf->st_ctime);
err |= __put_user(kbuf->ctime.tv_nsec, &ubuf->st_ctime_nsec);
err |= __put_user(kbuf->blksize, &ubuf->st_blksize); err |= __put_user(kbuf->blksize, &ubuf->st_blksize);
err |= __put_user(kbuf->blocks, &ubuf->st_blocks); err |= __put_user(kbuf->blocks, &ubuf->st_blocks);
return err; return err;
...@@ -3700,6 +3808,37 @@ sys32_brk (unsigned int brk) ...@@ -3700,6 +3808,37 @@ sys32_brk (unsigned int brk)
return ret; return ret;
} }
/*
* Exactly like fs/open.c:sys_open(), except that it doesn't set the O_LARGEFILE flag.
*/
asmlinkage long
sys32_open (const char * filename, int flags, int mode)
{
char * tmp;
int fd, error;
tmp = getname(filename);
fd = PTR_ERR(tmp);
if (!IS_ERR(tmp)) {
fd = get_unused_fd();
if (fd >= 0) {
struct file *f = filp_open(tmp, flags, mode);
error = PTR_ERR(f);
if (IS_ERR(f))
goto out_error;
fd_install(fd, f);
}
out:
putname(tmp);
}
return fd;
out_error:
put_unused_fd(fd);
fd = error;
goto out;
}
#ifdef NOTYET /* UNTESTED FOR IA64 FROM HERE DOWN */ #ifdef NOTYET /* UNTESTED FOR IA64 FROM HERE DOWN */
struct ncp_mount_data32 { struct ncp_mount_data32 {
......
...@@ -6,14 +6,15 @@ EXTRA_TARGETS := head.o init_task.o ...@@ -6,14 +6,15 @@ EXTRA_TARGETS := head.o init_task.o
export-objs := ia64_ksyms.o export-objs := ia64_ksyms.o
obj-y := acpi.o entry.o gate.o efi.o efi_stub.o ia64_ksyms.o irq.o irq_ia64.o irq_lsapic.o ivt.o \ obj-y := acpi.o entry.o gate.o efi.o efi_stub.o ia64_ksyms.o \
machvec.o pal.o process.o perfmon.o ptrace.o sal.o semaphore.o setup.o \ irq.o irq_ia64.o irq_lsapic.o ivt.o \
machvec.o pal.o process.o perfmon.o ptrace.o sal.o \
semaphore.o setup.o \
signal.o sys_ia64.o traps.o time.o unaligned.o unwind.o signal.o sys_ia64.o traps.o time.o unaligned.o unwind.o
obj-$(CONFIG_IOSAPIC) += iosapic.o obj-$(CONFIG_IOSAPIC) += iosapic.o
obj-$(CONFIG_IA64_PALINFO) += palinfo.o obj-$(CONFIG_IA64_PALINFO) += palinfo.o
obj-$(CONFIG_EFI_VARS) += efivars.o obj-$(CONFIG_EFI_VARS) += efivars.o
obj-$(CONFIG_SMP) += smp.o smpboot.o obj-$(CONFIG_SMP) += smp.o smpboot.o
obj-$(CONFIG_IA64_MCA) += mca.o mca_asm.o obj-$(CONFIG_IA64_MCA) += mca.o mca_asm.o
obj-$(CONFIG_IA64_BRL_EMU) += brl_emu.o obj-$(CONFIG_IA64_BRL_EMU) += brl_emu.o
include $(TOPDIR)/Rules.make
...@@ -306,7 +306,7 @@ efi_memmap_walk (efi_freemem_callback_t callback, void *arg) ...@@ -306,7 +306,7 @@ efi_memmap_walk (efi_freemem_callback_t callback, void *arg)
u64 start; u64 start;
u64 end; u64 end;
} prev, curr; } prev, curr;
void *efi_map_start, *efi_map_end, *p, *q; void *efi_map_start, *efi_map_end, *p, *q, *r;
efi_memory_desc_t *md, *check_md; efi_memory_desc_t *md, *check_md;
u64 efi_desc_size, start, end, granule_addr, first_non_wb_addr = 0; u64 efi_desc_size, start, end, granule_addr, first_non_wb_addr = 0;
...@@ -351,11 +351,10 @@ efi_memmap_walk (efi_freemem_callback_t callback, void *arg) ...@@ -351,11 +351,10 @@ efi_memmap_walk (efi_freemem_callback_t callback, void *arg)
if (!(first_non_wb_addr > granule_addr)) if (!(first_non_wb_addr > granule_addr))
continue; /* couldn't find enough contiguous memory */ continue; /* couldn't find enough contiguous memory */
}
/* BUG_ON((md->phys_addr >> IA64_GRANULE_SHIFT) < first_non_wb_addr); */
trim_top(md, first_non_wb_addr); for (r = p; r < q; r += efi_desc_size)
trim_top(r, first_non_wb_addr);
}
if (is_available_memory(md)) { if (is_available_memory(md)) {
if (md->phys_addr + (md->num_pages << EFI_PAGE_SHIFT) > mem_limit) { if (md->phys_addr + (md->num_pages << EFI_PAGE_SHIFT) > mem_limit) {
......
...@@ -535,7 +535,6 @@ END(ia64_trace_syscall) ...@@ -535,7 +535,6 @@ END(ia64_trace_syscall)
GLOBAL_ENTRY(ia64_ret_from_clone) GLOBAL_ENTRY(ia64_ret_from_clone)
PT_REGS_UNWIND_INFO(0) PT_REGS_UNWIND_INFO(0)
#if defined(CONFIG_SMP) || defined(CONFIG_PREEMPT)
/* /*
* We need to call schedule_tail() to complete the scheduling process. * We need to call schedule_tail() to complete the scheduling process.
* Called by ia64_switch_to() after do_fork()->copy_thread(). r8 contains the * Called by ia64_switch_to() after do_fork()->copy_thread(). r8 contains the
...@@ -543,7 +542,6 @@ GLOBAL_ENTRY(ia64_ret_from_clone) ...@@ -543,7 +542,6 @@ GLOBAL_ENTRY(ia64_ret_from_clone)
*/ */
br.call.sptk.many rp=ia64_invoke_schedule_tail br.call.sptk.many rp=ia64_invoke_schedule_tail
.ret8: .ret8:
#endif
adds r2=TI_FLAGS+IA64_TASK_SIZE,r13 adds r2=TI_FLAGS+IA64_TASK_SIZE,r13
;; ;;
ld4 r2=[r2] ld4 r2=[r2]
...@@ -844,7 +842,6 @@ ENTRY(handle_syscall_error) ...@@ -844,7 +842,6 @@ ENTRY(handle_syscall_error)
br.cond.sptk ia64_leave_kernel br.cond.sptk ia64_leave_kernel
END(handle_syscall_error) END(handle_syscall_error)
#ifdef CONFIG_SMP
/* /*
* Invoke schedule_tail(task) while preserving in0-in7, which may be needed * Invoke schedule_tail(task) while preserving in0-in7, which may be needed
* in case a system call gets restarted. * in case a system call gets restarted.
...@@ -861,8 +858,6 @@ GLOBAL_ENTRY(ia64_invoke_schedule_tail) ...@@ -861,8 +858,6 @@ GLOBAL_ENTRY(ia64_invoke_schedule_tail)
br.ret.sptk.many rp br.ret.sptk.many rp
END(ia64_invoke_schedule_tail) END(ia64_invoke_schedule_tail)
#endif /* CONFIG_SMP */
#if __GNUC__ < 3 #if __GNUC__ < 3
/* /*
...@@ -1129,18 +1124,18 @@ sys_call_table: ...@@ -1129,18 +1124,18 @@ sys_call_table:
data8 ia64_ni_syscall /* was: ia64_oldfstat */ data8 ia64_ni_syscall /* was: ia64_oldfstat */
data8 sys_vhangup data8 sys_vhangup
data8 sys_lchown data8 sys_lchown
data8 sys_vm86 // 1125 data8 sys_remap_file_pages // 1125
data8 sys_wait4 data8 sys_wait4
data8 sys_sysinfo data8 sys_sysinfo
data8 sys_clone data8 sys_clone
data8 sys_setdomainname data8 sys_setdomainname
data8 sys_newuname // 1130 data8 sys_newuname // 1130
data8 sys_adjtimex data8 sys_adjtimex
data8 ia64_create_module data8 ia64_ni_syscall /* was: ia64_create_module */
data8 sys_init_module data8 sys_init_module
data8 sys_delete_module data8 sys_delete_module
data8 sys_get_kernel_syms // 1135 data8 ia64_ni_syscall // 1135 /* was: sys_get_kernel_syms */
data8 sys_query_module data8 ia64_ni_syscall /* was: sys_query_module */
data8 sys_quotactl data8 sys_quotactl
data8 sys_bdflush data8 sys_bdflush
data8 sys_sysfs data8 sys_sysfs
...@@ -1160,7 +1155,7 @@ sys_call_table: ...@@ -1160,7 +1155,7 @@ sys_call_table:
data8 sys_mlock data8 sys_mlock
data8 sys_mlockall data8 sys_mlockall
data8 sys_mprotect // 1155 data8 sys_mprotect // 1155
data8 sys_mremap data8 ia64_mremap
data8 sys_msync data8 sys_msync
data8 sys_munlock data8 sys_munlock
data8 sys_munlockall data8 sys_munlockall
...@@ -1173,11 +1168,7 @@ sys_call_table: ...@@ -1173,11 +1168,7 @@ sys_call_table:
data8 sys_sched_get_priority_min data8 sys_sched_get_priority_min
data8 sys_sched_rr_get_interval data8 sys_sched_rr_get_interval
data8 sys_nanosleep data8 sys_nanosleep
#if defined(CONFIG_NFSD) || defined(CONFIG_NFSD_MODULE)
data8 sys_nfsservctl data8 sys_nfsservctl
#else
data8 sys_ni_syscall
#endif
data8 sys_prctl // 1170 data8 sys_prctl // 1170
data8 sys_getpagesize data8 sys_getpagesize
data8 sys_mmap2 data8 sys_mmap2
...@@ -1241,7 +1232,7 @@ sys_call_table: ...@@ -1241,7 +1232,7 @@ sys_call_table:
data8 sys_futex // 1230 data8 sys_futex // 1230
data8 sys_sched_setaffinity data8 sys_sched_setaffinity
data8 sys_sched_getaffinity data8 sys_sched_getaffinity
data8 sys_ni_syscall data8 sys_set_tid_address
data8 sys_alloc_hugepages data8 sys_alloc_hugepages
data8 sys_free_hugepages // 1235 data8 sys_free_hugepages // 1235
data8 sys_exit_group data8 sys_exit_group
...@@ -1254,7 +1245,7 @@ sys_call_table: ...@@ -1254,7 +1245,7 @@ sys_call_table:
data8 sys_epoll_create data8 sys_epoll_create
data8 sys_epoll_ctl data8 sys_epoll_ctl
data8 sys_epoll_wait // 1245 data8 sys_epoll_wait // 1245
data8 ia64_ni_syscall data8 sys_remap_file_pages
data8 ia64_ni_syscall data8 ia64_ni_syscall
data8 ia64_ni_syscall data8 ia64_ni_syscall
data8 ia64_ni_syscall data8 ia64_ni_syscall
......
...@@ -20,7 +20,13 @@ ...@@ -20,7 +20,13 @@
#define MB (1024*1024UL) #define MB (1024*1024UL)
#define NUM_MEM_DESCS 3 #define SIMPLE_MEMMAP 1
#if SIMPLE_MEMMAP
# define NUM_MEM_DESCS 4
#else
# define NUM_MEM_DESCS 16
#endif
static char fw_mem[( sizeof(struct ia64_boot_param) static char fw_mem[( sizeof(struct ia64_boot_param)
+ sizeof(efi_system_table_t) + sizeof(efi_system_table_t)
...@@ -379,6 +385,17 @@ sys_fw_init (const char *args, int arglen) ...@@ -379,6 +385,17 @@ sys_fw_init (const char *args, int arglen)
struct ia64_boot_param *bp; struct ia64_boot_param *bp;
unsigned char checksum = 0; unsigned char checksum = 0;
char *cp, *cmd_line; char *cp, *cmd_line;
int i = 0;
# define MAKE_MD(typ, attr, start, end) \
do { \
md = efi_memmap + i++; \
md->type = typ; \
md->pad = 0; \
md->phys_addr = start; \
md->virt_addr = 0; \
md->num_pages = (end - start) >> 12; \
md->attribute = attr; \
} while (0)
memset(fw_mem, 0, sizeof(fw_mem)); memset(fw_mem, 0, sizeof(fw_mem));
...@@ -464,47 +481,29 @@ sys_fw_init (const char *args, int arglen) ...@@ -464,47 +481,29 @@ sys_fw_init (const char *args, int arglen)
sal_systab->checksum = -checksum; sal_systab->checksum = -checksum;
#if SIMPLE_MEMMAP
/* simulate free memory at physical address zero */ /* simulate free memory at physical address zero */
md = &efi_memmap[0]; MAKE_MD(EFI_BOOT_SERVICES_DATA, EFI_MEMORY_WB, 0*MB, 1*MB);
md->type = EFI_BOOT_SERVICES_DATA; MAKE_MD(EFI_PAL_CODE, EFI_MEMORY_WB, 1*MB, 2*MB);
md->pad = 0; MAKE_MD(EFI_CONVENTIONAL_MEMORY, EFI_MEMORY_WB, 2*MB, 130*MB);
md->phys_addr = 0*MB; MAKE_MD(EFI_CONVENTIONAL_MEMORY, EFI_MEMORY_WB, 4096*MB, 4128*MB);
md->virt_addr = 0; #else
md->num_pages = (1*MB) >> 12; /* 1MB (in 4KB pages) */ MAKE_MD( 4, 0x9, 0x0000000000000000, 0x0000000000001000);
md->attribute = EFI_MEMORY_WB; MAKE_MD( 7, 0x9, 0x0000000000001000, 0x000000000008a000);
MAKE_MD( 4, 0x9, 0x000000000008a000, 0x00000000000a0000);
/* fill in a memory descriptor: */ MAKE_MD( 5, 0x8000000000000009, 0x00000000000c0000, 0x0000000000100000);
md = &efi_memmap[1]; MAKE_MD( 7, 0x9, 0x0000000000100000, 0x0000000004400000);
md->type = EFI_CONVENTIONAL_MEMORY; MAKE_MD( 2, 0x9, 0x0000000004400000, 0x0000000004be5000);
md->pad = 0; MAKE_MD( 7, 0x9, 0x0000000004be5000, 0x000000007f77e000);
md->phys_addr = 2*MB; MAKE_MD( 6, 0x8000000000000009, 0x000000007f77e000, 0x000000007fb94000);
md->virt_addr = 0; MAKE_MD( 6, 0x8000000000000009, 0x000000007fb94000, 0x000000007fb95000);
md->num_pages = (128*MB) >> 12; /* 128MB (in 4KB pages) */ MAKE_MD( 6, 0x8000000000000009, 0x000000007fb95000, 0x000000007fc00000);
md->attribute = EFI_MEMORY_WB; MAKE_MD(13, 0x8000000000000009, 0x000000007fc00000, 0x000000007fc3a000);
MAKE_MD( 7, 0x9, 0x000000007fc3a000, 0x000000007fea0000);
/* descriptor for firmware emulator: */ MAKE_MD( 5, 0x8000000000000009, 0x000000007fea0000, 0x000000007fea8000);
md = &efi_memmap[2]; MAKE_MD( 7, 0x9, 0x000000007fea8000, 0x000000007feab000);
md->type = EFI_PAL_CODE; MAKE_MD( 5, 0x8000000000000009, 0x000000007feab000, 0x000000007ffff000);
md->pad = 0; MAKE_MD( 7, 0x9, 0x00000000ff400000, 0x0000000104000000);
md->phys_addr = 1*MB;
md->virt_addr = 1*MB;
md->num_pages = (1*MB) >> 12; /* 1MB (in 4KB pages) */
md->attribute = EFI_MEMORY_WB;
#if 0
/*
* XXX bootmem is broken for now... (remember to NUM_MEM_DESCS
* if you re-enable this!)
*/
/* descriptor for high memory (>4GB): */
md = &efi_memmap[3];
md->type = EFI_CONVENTIONAL_MEMORY;
md->pad = 0;
md->phys_addr = 4096*MB;
md->virt_addr = 0;
md->num_pages = (32*MB) >> 12; /* 32MB (in 4KB pages) */
md->attribute = EFI_MEMORY_WB;
#endif #endif
bp->efi_systab = __pa(&fw_mem); bp->efi_systab = __pa(&fw_mem);
......
...@@ -86,7 +86,7 @@ EXPORT_SYMBOL(cpu_online_map); ...@@ -86,7 +86,7 @@ EXPORT_SYMBOL(cpu_online_map);
EXPORT_SYMBOL(ia64_cpu_to_sapicid); EXPORT_SYMBOL(ia64_cpu_to_sapicid);
#else /* !CONFIG_SMP */ #else /* !CONFIG_SMP */
EXPORT_SYMBOL(__flush_tlb_all); EXPORT_SYMBOL(local_flush_tlb_all);
#endif /* !CONFIG_SMP */ #endif /* !CONFIG_SMP */
......
...@@ -69,10 +69,10 @@ u64 ia64_mca_stackframe[32]; ...@@ -69,10 +69,10 @@ u64 ia64_mca_stackframe[32];
u64 ia64_mca_bspstore[1024]; u64 ia64_mca_bspstore[1024];
u64 ia64_init_stack[KERNEL_STACK_SIZE] __attribute__((aligned(16))); u64 ia64_init_stack[KERNEL_STACK_SIZE] __attribute__((aligned(16)));
u64 ia64_mca_sal_data_area[1356]; u64 ia64_mca_sal_data_area[1356];
u64 ia64_mca_min_state_save_info;
u64 ia64_tlb_functional; u64 ia64_tlb_functional;
u64 ia64_os_mca_recovery_successful; u64 ia64_os_mca_recovery_successful;
/* TODO: need to assign min-state structure to UC memory */
u64 ia64_mca_min_state_save_info[MIN_STATE_AREA_SIZE] __attribute__((aligned(512)));
static void ia64_mca_wakeup_ipi_wait(void); static void ia64_mca_wakeup_ipi_wait(void);
static void ia64_mca_wakeup(int cpu); static void ia64_mca_wakeup(int cpu);
static void ia64_mca_wakeup_all(void); static void ia64_mca_wakeup_all(void);
...@@ -116,7 +116,7 @@ static struct irqaction mca_cpe_irqaction = { ...@@ -116,7 +116,7 @@ static struct irqaction mca_cpe_irqaction = {
* Outputs : platform error status * Outputs : platform error status
*/ */
int int
ia64_mca_log_sal_error_record(int sal_info_type) ia64_mca_log_sal_error_record(int sal_info_type, int called_from_init)
{ {
int platform_err = 0; int platform_err = 0;
...@@ -131,6 +131,9 @@ ia64_mca_log_sal_error_record(int sal_info_type) ...@@ -131,6 +131,9 @@ ia64_mca_log_sal_error_record(int sal_info_type)
*/ */
platform_err = ia64_log_print(sal_info_type, (prfunc_t)printk); platform_err = ia64_log_print(sal_info_type, (prfunc_t)printk);
/* temporary: only clear SAL logs on hardware-corrected errors
or if we're logging an error after an MCA-initiated reboot */
if ((sal_info_type > 1) || (called_from_init))
ia64_sal_clear_state_info(sal_info_type); ia64_sal_clear_state_info(sal_info_type);
return platform_err; return platform_err;
...@@ -152,7 +155,7 @@ ia64_mca_cpe_int_handler (int cpe_irq, void *arg, struct pt_regs *ptregs) ...@@ -152,7 +155,7 @@ ia64_mca_cpe_int_handler (int cpe_irq, void *arg, struct pt_regs *ptregs)
IA64_MCA_DEBUG("ia64_mca_cpe_int_handler: received interrupt. vector = %#x\n", cpe_irq); IA64_MCA_DEBUG("ia64_mca_cpe_int_handler: received interrupt. vector = %#x\n", cpe_irq);
/* Get the CMC error record and log it */ /* Get the CMC error record and log it */
ia64_mca_log_sal_error_record(SAL_INFO_TYPE_CPE); ia64_mca_log_sal_error_record(SAL_INFO_TYPE_CPE, 0);
} }
/* /*
...@@ -199,13 +202,15 @@ ia64_mca_init_platform (void) ...@@ -199,13 +202,15 @@ ia64_mca_init_platform (void)
* *
* Outputs : None * Outputs : None
*/ */
void int
ia64_mca_check_errors (void) ia64_mca_check_errors (void)
{ {
/* /*
* If there is an MCA error record pending, get it and log it. * If there is an MCA error record pending, get it and log it.
*/ */
ia64_mca_log_sal_error_record(SAL_INFO_TYPE_MCA); ia64_mca_log_sal_error_record(SAL_INFO_TYPE_MCA, 1);
return 0;
} }
device_initcall(ia64_mca_check_errors); device_initcall(ia64_mca_check_errors);
...@@ -237,49 +242,26 @@ ia64_mca_register_cpev (int cpev) ...@@ -237,49 +242,26 @@ ia64_mca_register_cpev (int cpev)
#endif /* PLATFORM_MCA_HANDLERS */ #endif /* PLATFORM_MCA_HANDLERS */
static char *min_state_labels[] = {
"nat",
"r1", "r2", "r3", "r4", "r5", "r6", "r7", "r8",
"r9", "r10","r11", "r12","r13","r14", "r15",
"b0r16","b0r17", "b0r18", "b0r19", "b0r20",
"b0r21", "b0r22","b0r23", "b0r24", "b0r25",
"b0r26", "b0r27", "b0r28","b0r29", "b0r30", "b0r31",
"r16", "r17", "r18","r19", "r20", "r21","r22",
"r23", "r24","r25", "r26", "r27","r28", "r29", "r30","r31",
"preds", "br0", "rsc",
"iip", "ipsr", "ifs",
"xip", "xpsr", "xfs"
};
int ia64_pmss_dump_bank0=0; /* dump bank 0 ? */
/* /*
* routine to process and prepare to dump min_state_save * routine to process and prepare to dump min_state_save
* information for debugging purposes. * information for debugging purposes.
* *
*/ */
void void
ia64_process_min_state_save (pal_min_state_area_t *pmss, struct pt_regs *ptregs) ia64_process_min_state_save (pal_min_state_area_t *pmss)
{ {
int i, max=57; int i, max = MIN_STATE_AREA_SIZE;
u64 *tpmss_ptr=(u64 *)pmss; u64 *tpmss_ptr = (u64 *)pmss;
u64 *return_min_state_ptr = ia64_mca_min_state_save_info;
/* dump out the min_state_area information */ /* dump out the min_state_area information */
for (i=0;i<max;i++) { for (i=0;i<max;i++) {
if(!ia64_pmss_dump_bank0) { /* copy min-state register info for eventual return to PAL */
if(strncmp("B0",min_state_labels[i],2)==0) { *return_min_state_ptr++ = *tpmss_ptr;
tpmss_ptr++; /* skip to next entry */
continue;
}
}
printk("%5s=0x%16.16lx ",min_state_labels[i],*tpmss_ptr++);
if (((i+1)%3)==0 || ((!strcmp("GR16",min_state_labels[i])) tpmss_ptr++; /* skip to next entry */
&& !ia64_pmss_dump_bank0))
printk("\n");
} }
} }
...@@ -525,19 +507,17 @@ ia64_mca_init(void) ...@@ -525,19 +507,17 @@ ia64_mca_init(void)
ia64_log_init(SAL_INFO_TYPE_CMC); ia64_log_init(SAL_INFO_TYPE_CMC);
ia64_log_init(SAL_INFO_TYPE_CPE); ia64_log_init(SAL_INFO_TYPE_CPE);
/* Zero the min state save info */
ia64_mca_min_state_save_info = 0;
#if defined(MCA_TEST) #if defined(MCA_TEST)
mca_test(); mca_test();
#endif /* #if defined(MCA_TEST) */ #endif /* #if defined(MCA_TEST) */
printk("Mca related initialization done\n"); printk("Mca related initialization done\n");
#if 0 // Too early in initialization -- error log is lost /* commented out because this is done elsewhere */
#if 0
/* Do post-failure MCA error logging */ /* Do post-failure MCA error logging */
ia64_mca_check_errors(); ia64_mca_check_errors();
#endif // Too early in initialization -- error log is lost #endif
} }
/* /*
...@@ -632,7 +612,6 @@ ia64_mca_rendez_int_handler(int rendez_irq, void *arg, struct pt_regs *ptregs) ...@@ -632,7 +612,6 @@ ia64_mca_rendez_int_handler(int rendez_irq, void *arg, struct pt_regs *ptregs)
int cpu = 0; int cpu = 0;
/* Mask all interrupts */ /* Mask all interrupts */
#warning XXX fix me: this used to be: save_and_cli(flags);
local_irq_save(flags); local_irq_save(flags);
#ifdef CONFIG_SMP #ifdef CONFIG_SMP
...@@ -709,8 +688,8 @@ ia64_return_to_sal_check(void) ...@@ -709,8 +688,8 @@ ia64_return_to_sal_check(void)
ia64_os_to_sal_handoff_state.imots_context = IA64_MCA_SAME_CONTEXT; ia64_os_to_sal_handoff_state.imots_context = IA64_MCA_SAME_CONTEXT;
/* Register pointer to new min state values */ /* Register pointer to new min state values */
/* NOTE: need to do something with this during recovery phase */ ia64_os_to_sal_handoff_state.imots_new_min_state =
ia64_os_to_sal_handoff_state.imots_new_min_state = &ia64_mca_min_state_save_info; ia64_mca_min_state_save_info;
} }
/* /*
...@@ -735,7 +714,7 @@ ia64_mca_ucmc_handler(void) ...@@ -735,7 +714,7 @@ ia64_mca_ucmc_handler(void)
int platform_err = 0; int platform_err = 0;
/* Get the MCA error record and log it */ /* Get the MCA error record and log it */
platform_err = ia64_mca_log_sal_error_record(SAL_INFO_TYPE_MCA); platform_err = ia64_mca_log_sal_error_record(SAL_INFO_TYPE_MCA, 0);
/* /*
* Do Platform-specific mca error handling if required. * Do Platform-specific mca error handling if required.
...@@ -775,7 +754,7 @@ ia64_mca_cmc_int_handler(int cmc_irq, void *arg, struct pt_regs *ptregs) ...@@ -775,7 +754,7 @@ ia64_mca_cmc_int_handler(int cmc_irq, void *arg, struct pt_regs *ptregs)
cmc_irq, smp_processor_id()); cmc_irq, smp_processor_id());
/* Get the CMC error record and log it */ /* Get the CMC error record and log it */
ia64_mca_log_sal_error_record(SAL_INFO_TYPE_CMC); ia64_mca_log_sal_error_record(SAL_INFO_TYPE_CMC, 0);
} }
/* /*
...@@ -845,8 +824,7 @@ ia64_init_handler (struct pt_regs *regs) ...@@ -845,8 +824,7 @@ ia64_init_handler (struct pt_regs *regs)
plog_ptr=(ia64_err_rec_t *)IA64_LOG_CURR_BUFFER(SAL_INFO_TYPE_INIT); plog_ptr=(ia64_err_rec_t *)IA64_LOG_CURR_BUFFER(SAL_INFO_TYPE_INIT);
proc_ptr = &plog_ptr->proc_err; proc_ptr = &plog_ptr->proc_err;
ia64_process_min_state_save(&proc_ptr->processor_static_info.min_state_area, ia64_process_min_state_save(&proc_ptr->processor_static_info.min_state_area);
regs);
/* Clear the INIT SAL logs now that they have been saved in the OS buffer */ /* Clear the INIT SAL logs now that they have been saved in the OS buffer */
ia64_sal_clear_state_info(SAL_INFO_TYPE_INIT); ia64_sal_clear_state_info(SAL_INFO_TYPE_INIT);
...@@ -1677,6 +1655,9 @@ ia64_log_proc_dev_err_info_print (sal_log_processor_info_t *slpi, ...@@ -1677,6 +1655,9 @@ ia64_log_proc_dev_err_info_print (sal_log_processor_info_t *slpi,
if (slpi->valid.psi_static_struct) { if (slpi->valid.psi_static_struct) {
spsi = (sal_processor_static_info_t *)p_data; spsi = (sal_processor_static_info_t *)p_data;
/* copy interrupted context PAL min-state info */
ia64_process_min_state_save(&spsi->min_state_area);
/* Print branch register contents if valid */ /* Print branch register contents if valid */
if (spsi->valid.br) if (spsi->valid.br)
ia64_log_processor_regs_print(spsi->br, 8, "Branch", "br", ia64_log_processor_regs_print(spsi->br, 8, "Branch", "br",
......
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
#include <linux/pm.h> #include <linux/pm.h>
#include <linux/elf.h> #include <linux/elf.h>
#include <linux/errno.h> #include <linux/errno.h>
#include <linux/kallsyms.h>
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/mm.h> #include <linux/mm.h>
#include <linux/module.h> #include <linux/module.h>
...@@ -376,7 +377,8 @@ copy_thread (int nr, unsigned long clone_flags, ...@@ -376,7 +377,8 @@ copy_thread (int nr, unsigned long clone_flags,
/* clear list of sampling buffer to free for new task */ /* clear list of sampling buffer to free for new task */
p->thread.pfm_smpl_buf_list = NULL; p->thread.pfm_smpl_buf_list = NULL;
if (current->thread.pfm_context) retval = pfm_inherit(p, child_ptregs); if (current->thread.pfm_context)
retval = pfm_inherit(p, child_ptregs);
#endif #endif
return retval; return retval;
} }
......
...@@ -77,7 +77,7 @@ ia64_sal_strerror (long status) ...@@ -77,7 +77,7 @@ ia64_sal_strerror (long status)
return str; return str;
} }
static void __init void __init
ia64_sal_handler_init (void *entry_point, void *gpval) ia64_sal_handler_init (void *entry_point, void *gpval)
{ {
/* fill in the SAL procedure descriptor and point ia64_sal to it: */ /* fill in the SAL procedure descriptor and point ia64_sal to it: */
......
...@@ -469,9 +469,18 @@ show_cpuinfo (struct seq_file *m, void *v) ...@@ -469,9 +469,18 @@ show_cpuinfo (struct seq_file *m, void *v)
# define lpj loops_per_jiffy # define lpj loops_per_jiffy
# define cpunum 0 # define cpunum 0
#endif #endif
char family[32], features[128], *cp; static struct {
unsigned long mask;
const char *feature_name;
} feature_bits[] = {
{ 1UL << 0, "branchlong" },
{ 1UL << 1, "spontaneous deferral"},
{ 1UL << 2, "16-byte atomic ops" }
};
char family[32], features[128], *cp, sep;
struct cpuinfo_ia64 *c = v; struct cpuinfo_ia64 *c = v;
unsigned long mask; unsigned long mask;
int i;
mask = c->features; mask = c->features;
...@@ -484,13 +493,23 @@ show_cpuinfo (struct seq_file *m, void *v) ...@@ -484,13 +493,23 @@ show_cpuinfo (struct seq_file *m, void *v)
/* build the feature string: */ /* build the feature string: */
memcpy(features, " standard", 10); memcpy(features, " standard", 10);
cp = features; cp = features;
if (mask & 1) { sep = 0;
strcpy(cp, " branchlong"); for (i = 0; i < sizeof(feature_bits)/sizeof(feature_bits[0]); ++i) {
cp = strchr(cp, '\0'); if (mask & feature_bits[i].mask) {
mask &= ~1UL; if (sep)
*cp++ = sep;
sep = ',';
*cp++ = ' ';
strcpy(cp, feature_bits[i].feature_name);
mask &= ~feature_bits[i].mask;
} }
if (mask) }
if (mask) {
/* print unknown features as a hex value: */
if (sep)
*cp++ = sep;
sprintf(cp, " 0x%lx", mask); sprintf(cp, " 0x%lx", mask);
}
seq_printf(m, seq_printf(m,
"processor : %d\n" "processor : %d\n"
...@@ -630,8 +649,7 @@ cpu_init (void) ...@@ -630,8 +649,7 @@ cpu_init (void)
* "NR_CPUS" pages for all CPUs to avoid that AP calls get_zeroed_page(). * "NR_CPUS" pages for all CPUs to avoid that AP calls get_zeroed_page().
*/ */
if (smp_processor_id() == 0) { if (smp_processor_id() == 0) {
cpu_data = (unsigned long) __alloc_bootmem(PERCPU_PAGE_SIZE * NR_CPUS, cpu_data = __alloc_bootmem(PERCPU_PAGE_SIZE * NR_CPUS, PERCPU_PAGE_SIZE,
PERCPU_PAGE_SIZE,
__pa(MAX_DMA_ADDRESS)); __pa(MAX_DMA_ADDRESS));
for (cpu = 0; cpu < NR_CPUS; cpu++) { for (cpu = 0; cpu < NR_CPUS; cpu++) {
memcpy(cpu_data, __phys_per_cpu_start, __per_cpu_end - __per_cpu_start); memcpy(cpu_data, __phys_per_cpu_start, __per_cpu_end - __per_cpu_start);
......
...@@ -206,8 +206,27 @@ smp_send_reschedule_all (void) ...@@ -206,8 +206,27 @@ smp_send_reschedule_all (void)
void void
smp_flush_tlb_all (void) smp_flush_tlb_all (void)
{ {
smp_call_function((void (*)(void *))__flush_tlb_all, 0, 1, 1); smp_call_function((void (*)(void *))local_flush_tlb_all, 0, 1, 1);
__flush_tlb_all(); local_flush_tlb_all();
}
void
smp_flush_tlb_mm (struct mm_struct *mm)
{
local_finish_flush_tlb_mm(mm);
/* this happens for the common case of a single-threaded fork(): */
if (likely(mm == current->active_mm && atomic_read(&mm->mm_users) == 1))
return;
/*
* We could optimize this further by using mm->cpu_vm_mask to track which CPUs
* have been running in the address space. It's not clear that this is worth the
* trouble though: to avoid races, we have to raise the IPI on the target CPU
* anyhow, and once a CPU is interrupted, the cost of local_flush_tlb_all() is
* rather trivial.
*/
smp_call_function((void (*)(void *))local_finish_flush_tlb_mm, mm, 1, 1);
} }
/* /*
......
...@@ -337,7 +337,7 @@ fork_by_hand (void) ...@@ -337,7 +337,7 @@ fork_by_hand (void)
* don't care about the eip and regs settings since we'll never reschedule the * don't care about the eip and regs settings since we'll never reschedule the
* forked task. * forked task.
*/ */
return do_fork(CLONE_VM|CLONE_IDLETASK, 0, 0, 0, NULL); return do_fork(CLONE_VM|CLONE_IDLETASK, 0, 0, 0, NULL, NULL);
} }
static int __init static int __init
......
...@@ -317,21 +317,25 @@ sys_free_hugepages (unsigned long addr) ...@@ -317,21 +317,25 @@ sys_free_hugepages (unsigned long addr)
#endif /* !CONFIG_HUGETLB_PAGE */ #endif /* !CONFIG_HUGETLB_PAGE */
asmlinkage long
sys_vm86 (long arg0, long arg1, long arg2, long arg3)
{
printk(KERN_ERR "sys_vm86(%lx, %lx, %lx, %lx)!\n", arg0, arg1, arg2, arg3);
return -ENOSYS;
}
asmlinkage unsigned long asmlinkage unsigned long
ia64_create_module (const char *name_user, size_t size) ia64_mremap (unsigned long addr, unsigned long old_len, unsigned long new_len, unsigned long flags,
unsigned long new_addr)
{ {
extern unsigned long sys_create_module (const char *, size_t); extern unsigned long do_mremap (unsigned long addr,
unsigned long addr; unsigned long old_len,
unsigned long new_len,
unsigned long flags,
unsigned long new_addr);
down_write(&current->mm->mmap_sem);
{
addr = do_mremap(addr, old_len, new_len, flags, new_addr);
}
up_write(&current->mm->mmap_sem);
if (IS_ERR((void *) addr))
return addr;
addr = sys_create_module (name_user, size);
if (!IS_ERR((void *) addr))
force_successful_syscall_return(); force_successful_syscall_return();
return addr; return addr;
} }
......
...@@ -5,6 +5,10 @@ ...@@ -5,6 +5,10 @@
* Stephane Eranian <eranian@hpl.hp.com> * Stephane Eranian <eranian@hpl.hp.com>
* David Mosberger-Tang <davidm@hpl.hp.com> * David Mosberger-Tang <davidm@hpl.hp.com>
* *
* 2002/12/09 Fix rotating register handling (off-by-1 error, missing fr-rotation). Fix
* get_rse_reg() to not leak kernel bits to user-level (reading an out-of-frame
* stacked register returns an undefined value; it does NOT trigger a
* "rsvd register fault").
* 2001/10/11 Fix unaligned access to rotating registers in s/w pipelined loops. * 2001/10/11 Fix unaligned access to rotating registers in s/w pipelined loops.
* 2001/08/13 Correct size of extended floats (float_fsz) from 16 to 10 bytes. * 2001/08/13 Correct size of extended floats (float_fsz) from 16 to 10 bytes.
* 2001/01/17 Add support emulation of unaligned kernel accesses. * 2001/01/17 Add support emulation of unaligned kernel accesses.
...@@ -276,6 +280,15 @@ invala_fr (int regno) ...@@ -276,6 +280,15 @@ invala_fr (int regno)
# undef F # undef F
} }
static inline unsigned long
rotate_reg (unsigned long sor, unsigned long rrb, unsigned long reg)
{
reg += rrb;
if (reg >= sor)
reg -= sor;
return reg;
}
static void static void
set_rse_reg (struct pt_regs *regs, unsigned long r1, unsigned long val, int nat) set_rse_reg (struct pt_regs *regs, unsigned long r1, unsigned long val, int nat)
{ {
...@@ -287,26 +300,22 @@ set_rse_reg (struct pt_regs *regs, unsigned long r1, unsigned long val, int nat) ...@@ -287,26 +300,22 @@ set_rse_reg (struct pt_regs *regs, unsigned long r1, unsigned long val, int nat)
long sof = (regs->cr_ifs) & 0x7f; long sof = (regs->cr_ifs) & 0x7f;
long sor = 8 * ((regs->cr_ifs >> 14) & 0xf); long sor = 8 * ((regs->cr_ifs >> 14) & 0xf);
long rrb_gr = (regs->cr_ifs >> 18) & 0x7f; long rrb_gr = (regs->cr_ifs >> 18) & 0x7f;
long ridx; long ridx = r1 - 32;
if ((r1 - 32) > sor)
ridx = -sof + (r1 - 32);
else if ((r1 - 32) < (sor - rrb_gr))
ridx = -sof + (r1 - 32) + rrb_gr;
else
ridx = -sof + (r1 - 32) - (sor - rrb_gr);
DPRINT("r%lu, sw.bspstore=%lx pt.bspstore=%lx sof=%ld sol=%ld ridx=%ld\n",
r1, sw->ar_bspstore, regs->ar_bspstore, sof, (regs->cr_ifs >> 7) & 0x7f, ridx);
if ((r1 - 32) >= sof) { if (ridx >= sof) {
/* this should never happen, as the "rsvd register fault" has higher priority */ /* this should never happen, as the "rsvd register fault" has higher priority */
DPRINT("ignoring write to r%lu; only %lu registers are allocated!\n", r1, sof); DPRINT("ignoring write to r%lu; only %lu registers are allocated!\n", r1, sof);
return; return;
} }
if (ridx < sor)
ridx = rotate_reg(sor, rrb_gr, ridx);
DPRINT("r%lu, sw.bspstore=%lx pt.bspstore=%lx sof=%ld sol=%ld ridx=%ld\n",
r1, sw->ar_bspstore, regs->ar_bspstore, sof, (regs->cr_ifs >> 7) & 0x7f, ridx);
on_kbs = ia64_rse_num_regs(kbs, (unsigned long *) sw->ar_bspstore); on_kbs = ia64_rse_num_regs(kbs, (unsigned long *) sw->ar_bspstore);
addr = ia64_rse_skip_regs((unsigned long *) sw->ar_bspstore, ridx); addr = ia64_rse_skip_regs((unsigned long *) sw->ar_bspstore, -sof + ridx);
if (addr >= kbs) { if (addr >= kbs) {
/* the register is on the kernel backing store: easy... */ /* the register is on the kernel backing store: easy... */
rnat_addr = ia64_rse_rnat_addr(addr); rnat_addr = ia64_rse_rnat_addr(addr);
...@@ -334,7 +343,7 @@ set_rse_reg (struct pt_regs *regs, unsigned long r1, unsigned long val, int nat) ...@@ -334,7 +343,7 @@ set_rse_reg (struct pt_regs *regs, unsigned long r1, unsigned long val, int nat)
bspstore = (unsigned long *)regs->ar_bspstore; bspstore = (unsigned long *)regs->ar_bspstore;
ubs_end = ia64_rse_skip_regs(bspstore, on_kbs); ubs_end = ia64_rse_skip_regs(bspstore, on_kbs);
bsp = ia64_rse_skip_regs(ubs_end, -sof); bsp = ia64_rse_skip_regs(ubs_end, -sof);
addr = ia64_rse_skip_regs(bsp, ridx + sof); addr = ia64_rse_skip_regs(bsp, ridx);
DPRINT("ubs_end=%p bsp=%p addr=%p\n", (void *) ubs_end, (void *) bsp, (void *) addr); DPRINT("ubs_end=%p bsp=%p addr=%p\n", (void *) ubs_end, (void *) bsp, (void *) addr);
...@@ -368,26 +377,22 @@ get_rse_reg (struct pt_regs *regs, unsigned long r1, unsigned long *val, int *na ...@@ -368,26 +377,22 @@ get_rse_reg (struct pt_regs *regs, unsigned long r1, unsigned long *val, int *na
long sof = (regs->cr_ifs) & 0x7f; long sof = (regs->cr_ifs) & 0x7f;
long sor = 8 * ((regs->cr_ifs >> 14) & 0xf); long sor = 8 * ((regs->cr_ifs >> 14) & 0xf);
long rrb_gr = (regs->cr_ifs >> 18) & 0x7f; long rrb_gr = (regs->cr_ifs >> 18) & 0x7f;
long ridx; long ridx = r1 - 32;
if ((r1 - 32) > sor) if (ridx >= sof) {
ridx = -sof + (r1 - 32); /* read of out-of-frame register returns an undefined value; 0 in our case. */
else if ((r1 - 32) < (sor - rrb_gr)) DPRINT("ignoring read from r%lu; only %lu registers are allocated!\n", r1, sof);
ridx = -sof + (r1 - 32) + rrb_gr; goto fail;
else }
ridx = -sof + (r1 - 32) - (sor - rrb_gr);
if (ridx < sor)
ridx = rotate_reg(sor, rrb_gr, ridx);
DPRINT("r%lu, sw.bspstore=%lx pt.bspstore=%lx sof=%ld sol=%ld ridx=%ld\n", DPRINT("r%lu, sw.bspstore=%lx pt.bspstore=%lx sof=%ld sol=%ld ridx=%ld\n",
r1, sw->ar_bspstore, regs->ar_bspstore, sof, (regs->cr_ifs >> 7) & 0x7f, ridx); r1, sw->ar_bspstore, regs->ar_bspstore, sof, (regs->cr_ifs >> 7) & 0x7f, ridx);
if ((r1 - 32) >= sof) {
/* this should never happen, as the "rsvd register fault" has higher priority */
DPRINT("ignoring read from r%lu; only %lu registers are allocated!\n", r1, sof);
return;
}
on_kbs = ia64_rse_num_regs(kbs, (unsigned long *) sw->ar_bspstore); on_kbs = ia64_rse_num_regs(kbs, (unsigned long *) sw->ar_bspstore);
addr = ia64_rse_skip_regs((unsigned long *) sw->ar_bspstore, ridx); addr = ia64_rse_skip_regs((unsigned long *) sw->ar_bspstore, -sof + ridx);
if (addr >= kbs) { if (addr >= kbs) {
/* the register is on the kernel backing store: easy... */ /* the register is on the kernel backing store: easy... */
*val = *addr; *val = *addr;
...@@ -407,13 +412,13 @@ get_rse_reg (struct pt_regs *regs, unsigned long r1, unsigned long *val, int *na ...@@ -407,13 +412,13 @@ get_rse_reg (struct pt_regs *regs, unsigned long r1, unsigned long *val, int *na
*/ */
if (regs->r12 >= TASK_SIZE) { if (regs->r12 >= TASK_SIZE) {
DPRINT("ignoring kernel read of r%lu; register isn't on the RBS!", r1); DPRINT("ignoring kernel read of r%lu; register isn't on the RBS!", r1);
return; goto fail;
} }
bspstore = (unsigned long *)regs->ar_bspstore; bspstore = (unsigned long *)regs->ar_bspstore;
ubs_end = ia64_rse_skip_regs(bspstore, on_kbs); ubs_end = ia64_rse_skip_regs(bspstore, on_kbs);
bsp = ia64_rse_skip_regs(ubs_end, -sof); bsp = ia64_rse_skip_regs(ubs_end, -sof);
addr = ia64_rse_skip_regs(bsp, ridx + sof); addr = ia64_rse_skip_regs(bsp, ridx);
DPRINT("ubs_end=%p bsp=%p addr=%p\n", (void *) ubs_end, (void *) bsp, (void *) addr); DPRINT("ubs_end=%p bsp=%p addr=%p\n", (void *) ubs_end, (void *) bsp, (void *) addr);
...@@ -428,6 +433,13 @@ get_rse_reg (struct pt_regs *regs, unsigned long r1, unsigned long *val, int *na ...@@ -428,6 +433,13 @@ get_rse_reg (struct pt_regs *regs, unsigned long r1, unsigned long *val, int *na
ia64_peek(current, sw, (unsigned long) ubs_end, (unsigned long) rnat_addr, &rnats); ia64_peek(current, sw, (unsigned long) ubs_end, (unsigned long) rnat_addr, &rnats);
*nat = (rnats & nat_mask) != 0; *nat = (rnats & nat_mask) != 0;
} }
return;
fail:
*val = 0;
if (nat)
*nat = 0;
return;
} }
...@@ -486,7 +498,16 @@ setreg (unsigned long regnum, unsigned long val, int nat, struct pt_regs *regs) ...@@ -486,7 +498,16 @@ setreg (unsigned long regnum, unsigned long val, int nat, struct pt_regs *regs)
DPRINT("*0x%lx=0x%lx NaT=%d new unat: %p=%lx\n", addr, val, nat, (void *) unat,*unat); DPRINT("*0x%lx=0x%lx NaT=%d new unat: %p=%lx\n", addr, val, nat, (void *) unat,*unat);
} }
#define IA64_FPH_OFFS(r) (r - IA64_FIRST_ROTATING_FR) /*
* Return the (rotated) index for floating point register REGNUM (REGNUM must be in the
* range from 32-127, result is in the range from 0-95.
*/
static inline unsigned long
fph_index (struct pt_regs *regs, long regnum)
{
unsigned long rrb_fr = (regs->cr_ifs >> 25) & 0x7f;
return rotate_reg(96, rrb_fr, (regnum - IA64_FIRST_ROTATING_FR));
}
static void static void
setfpreg (unsigned long regnum, struct ia64_fpreg *fpval, struct pt_regs *regs) setfpreg (unsigned long regnum, struct ia64_fpreg *fpval, struct pt_regs *regs)
...@@ -507,7 +528,7 @@ setfpreg (unsigned long regnum, struct ia64_fpreg *fpval, struct pt_regs *regs) ...@@ -507,7 +528,7 @@ setfpreg (unsigned long regnum, struct ia64_fpreg *fpval, struct pt_regs *regs)
*/ */
if (regnum >= IA64_FIRST_ROTATING_FR) { if (regnum >= IA64_FIRST_ROTATING_FR) {
ia64_sync_fph(current); ia64_sync_fph(current);
current->thread.fph[IA64_FPH_OFFS(regnum)] = *fpval; current->thread.fph[fph_index(regs, regnum)] = *fpval;
} else { } else {
/* /*
* pt_regs or switch_stack ? * pt_regs or switch_stack ?
...@@ -566,7 +587,7 @@ getfpreg (unsigned long regnum, struct ia64_fpreg *fpval, struct pt_regs *regs) ...@@ -566,7 +587,7 @@ getfpreg (unsigned long regnum, struct ia64_fpreg *fpval, struct pt_regs *regs)
*/ */
if (regnum >= IA64_FIRST_ROTATING_FR) { if (regnum >= IA64_FIRST_ROTATING_FR) {
ia64_flush_fph(current); ia64_flush_fph(current);
*fpval = current->thread.fph[IA64_FPH_OFFS(regnum)]; *fpval = current->thread.fph[fph_index(regs, regnum)];
} else { } else {
/* /*
* f0 = 0.0, f1= 1.0. Those registers are constant and are thus * f0 = 0.0, f1= 1.0. Those registers are constant and are thus
...@@ -651,7 +672,7 @@ emulate_load_updates (update_t type, load_store_t ld, struct pt_regs *regs, unsi ...@@ -651,7 +672,7 @@ emulate_load_updates (update_t type, load_store_t ld, struct pt_regs *regs, unsi
* just in case. * just in case.
*/ */
if (ld.x6_op == 1 || ld.x6_op == 3) { if (ld.x6_op == 1 || ld.x6_op == 3) {
printk("%s %s: register update on speculative load, error\n", KERN_ERR, __FUNCTION__); printk(KERN_ERR "%s: register update on speculative load, error\n", __FUNCTION__);
die_if_kernel("unaligned reference on specualtive load with register update\n", die_if_kernel("unaligned reference on specualtive load with register update\n",
regs, 30); regs, 30);
} }
...@@ -1081,8 +1102,8 @@ emulate_load_floatpair (unsigned long ifa, load_store_t ld, struct pt_regs *regs ...@@ -1081,8 +1102,8 @@ emulate_load_floatpair (unsigned long ifa, load_store_t ld, struct pt_regs *regs
* For this reason we keep this sanity check * For this reason we keep this sanity check
*/ */
if (ld.x6_op == 1 || ld.x6_op == 3) if (ld.x6_op == 1 || ld.x6_op == 3)
printk("%s %s: register update on speculative load pair, " printk(KERN_ERR "%s: register update on speculative load pair, error\n",
"error\n",KERN_ERR, __FUNCTION__); __FUNCTION__);
setreg(ld.r3, ifa, 0, regs); setreg(ld.r3, ifa, 0, regs);
} }
......
# #
# Makefile for the ia64-specific parts of the memory manager. # Makefile for the ia64-specific parts of the memory manager.
# #
# Note! Dependencies are done automagically by 'make dep', which also
# removes any old dependencies. DON'T put your own dependencies here
# unless it's something special (ie not a .c file).
#
# Note 2! The CFLAGS definition is now in the main makefile...
obj-y := init.o fault.o tlb.o extable.o obj-y := init.o fault.o tlb.o extable.o
obj-$(CONFIG_HUGETLB_PAGE) += hugetlbpage.o obj-$(CONFIG_HUGETLB_PAGE) += hugetlbpage.o
obj-$(CONFIG_NUMA) += numa.o obj-$(CONFIG_NUMA) += numa.o
obj-$(CONFIG_DISCONTIGMEM) += discontig.o obj-$(CONFIG_DISCONTIGMEM) += discontig.o
include $(TOPDIR)/Rules.make
...@@ -84,7 +84,7 @@ wrap_mmu_context (struct mm_struct *mm) ...@@ -84,7 +84,7 @@ wrap_mmu_context (struct mm_struct *mm)
for (i = 0; i < NR_CPUS; ++i) for (i = 0; i < NR_CPUS; ++i)
if (i != smp_processor_id()) if (i != smp_processor_id())
per_cpu(ia64_need_tlb_flush, i) = 1; per_cpu(ia64_need_tlb_flush, i) = 1;
__flush_tlb_all(); local_flush_tlb_all();
} }
void void
...@@ -108,7 +108,7 @@ ia64_global_tlb_purge (unsigned long start, unsigned long end, unsigned long nbi ...@@ -108,7 +108,7 @@ ia64_global_tlb_purge (unsigned long start, unsigned long end, unsigned long nbi
} }
void void
__flush_tlb_all (void) local_flush_tlb_all (void)
{ {
unsigned long i, j, flags, count0, count1, stride0, stride1, addr; unsigned long i, j, flags, count0, count1, stride0, stride1, addr;
...@@ -194,5 +194,5 @@ ia64_tlb_init (void) ...@@ -194,5 +194,5 @@ ia64_tlb_init (void)
local_cpu_data->ptce_stride[0] = ptce_info.stride[0]; local_cpu_data->ptce_stride[0] = ptce_info.stride[0];
local_cpu_data->ptce_stride[1] = ptce_info.stride[1]; local_cpu_data->ptce_stride[1] = ptce_info.stride[1];
__flush_tlb_all(); /* nuke left overs from bootstrapping... */ local_flush_tlb_all(); /* nuke left overs from bootstrapping... */
} }
#
# Makefile for the ia64-specific parts of the pci bus
#
obj-y := pci.o obj-y := pci.o
include $(TOPDIR)/Rules.make
...@@ -44,10 +44,6 @@ ...@@ -44,10 +44,6 @@
#define DBG(x...) #define DBG(x...)
#endif #endif
#ifdef CONFIG_IA64_MCA
extern void ia64_mca_check_errors( void );
#endif
struct pci_fixup pcibios_fixups[1]; struct pci_fixup pcibios_fixups[1];
/* /*
......
This diff is collapsed.
This diff is collapsed.
#
# Automatically generated make config: don't edit
#
#
# Code maturity level options
#
# CONFIG_EXPERIMENTAL is not set
#
# Loadable module support
#
# CONFIG_MODULES is not set
#
# General setup
#
CONFIG_IA64=y
# CONFIG_ISA is not set
# CONFIG_EISA is not set
# CONFIG_MCA is not set
# CONFIG_SBUS is not set
CONFIG_RWSEM_GENERIC_SPINLOCK=y
# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
CONFIG_ACPI=y
CONFIG_ACPI_EFI=y
CONFIG_ACPI_INTERPRETER=y
CONFIG_ACPI_KERNEL_CONFIG=y
CONFIG_ITANIUM=y
# CONFIG_MCKINLEY is not set
# CONFIG_IA64_GENERIC is not set
CONFIG_IA64_DIG=y
# CONFIG_IA64_HP_SIM is not set
# CONFIG_IA64_SGI_SN1 is not set
# CONFIG_IA64_SGI_SN2 is not set
# CONFIG_IA64_PAGE_SIZE_4KB is not set
# CONFIG_IA64_PAGE_SIZE_8KB is not set
CONFIG_IA64_PAGE_SIZE_16KB=y
# CONFIG_IA64_PAGE_SIZE_64KB is not set
CONFIG_IA64_BRL_EMU=y
CONFIG_ITANIUM_BSTEP_SPECIFIC=y
CONFIG_IA64_L1_CACHE_SHIFT=6
# CONFIG_NUMA is not set
# CONFIG_IA64_MCA is not set
CONFIG_PM=y
CONFIG_IA64_HAVE_SYNCRONIZED_ITC=y
# CONFIG_DEVFS_FS is not set
CONFIG_KCORE_ELF=y
CONFIG_SMP=y
# CONFIG_IA32_SUPPORT is not set
# CONFIG_PERFMON is not set
# CONFIG_IA64_PALINFO is not set
# CONFIG_EFI_VARS is not set
# CONFIG_NET is not set
CONFIG_SYSVIPC=y
# CONFIG_BSD_PROCESS_ACCT is not set
# CONFIG_SYSCTL is not set
CONFIG_BINFMT_ELF=y
# CONFIG_BINFMT_MISC is not set
# CONFIG_ACPI_DEBUG is not set
# CONFIG_ACPI_BUSMGR is not set
# CONFIG_ACPI_SYS is not set
# CONFIG_ACPI_CPU is not set
# CONFIG_ACPI_BUTTON is not set
# CONFIG_ACPI_AC is not set
# CONFIG_ACPI_EC is not set
# CONFIG_ACPI_CMBATT is not set
# CONFIG_ACPI_THERMAL is not set
CONFIG_PCI=y
# CONFIG_PCI_NAMES is not set
# CONFIG_HOTPLUG is not set
# CONFIG_PCMCIA is not set
#
# Parallel port support
#
# CONFIG_PARPORT is not set
#
# Memory Technology Devices (MTD)
#
# CONFIG_MTD is not set
#
# Plug and Play configuration
#
# CONFIG_PNP is not set
# CONFIG_ISAPNP is not set
#
# Block devices
#
# CONFIG_BLK_DEV_FD is not set
# CONFIG_BLK_DEV_XD is not set
# CONFIG_PARIDE is not set
# CONFIG_BLK_CPQ_DA is not set
# CONFIG_BLK_CPQ_CISS_DA is not set
# CONFIG_BLK_DEV_DAC960 is not set
# CONFIG_BLK_DEV_LOOP is not set
# CONFIG_BLK_DEV_NBD is not set
# CONFIG_BLK_DEV_RAM is not set
# CONFIG_BLK_DEV_INITRD is not set
#
# I2O device support
#
# CONFIG_I2O is not set
# CONFIG_I2O_PCI is not set
# CONFIG_I2O_BLOCK is not set
# CONFIG_I2O_SCSI is not set
# CONFIG_I2O_PROC is not set
#
# Multi-device support (RAID and LVM)
#
# CONFIG_MD is not set
# CONFIG_BLK_DEV_MD is not set
# CONFIG_MD_LINEAR is not set
# CONFIG_MD_RAID0 is not set
# CONFIG_MD_RAID1 is not set
# CONFIG_MD_RAID5 is not set
# CONFIG_MD_MULTIPATH is not set
# CONFIG_BLK_DEV_LVM is not set
#
# ATA/IDE/MFM/RLL support
#
CONFIG_IDE=y
#
# IDE, ATA and ATAPI Block devices
#
CONFIG_BLK_DEV_IDE=y
#
# Please see Documentation/ide.txt for help/info on IDE drives
#
# CONFIG_BLK_DEV_HD_IDE is not set
# CONFIG_BLK_DEV_HD is not set
CONFIG_BLK_DEV_IDEDISK=y
# CONFIG_IDEDISK_MULTI_MODE is not set
# CONFIG_BLK_DEV_IDECS is not set
# CONFIG_BLK_DEV_IDECD is not set
# CONFIG_BLK_DEV_IDETAPE is not set
# CONFIG_BLK_DEV_IDEFLOPPY is not set
# CONFIG_BLK_DEV_IDESCSI is not set
#
# IDE chipset support/bugfixes
#
# CONFIG_BLK_DEV_CMD640 is not set
# CONFIG_BLK_DEV_CMD640_ENHANCED is not set
# CONFIG_BLK_DEV_ISAPNP is not set
# CONFIG_BLK_DEV_RZ1000 is not set
# CONFIG_IDE_CHIPSETS is not set
# CONFIG_IDEDMA_AUTO is not set
# CONFIG_BLK_DEV_IDE_MODES is not set
# CONFIG_BLK_DEV_ATARAID is not set
# CONFIG_BLK_DEV_ATARAID_PDC is not set
# CONFIG_BLK_DEV_ATARAID_HPT is not set
#
# Alternate 1394 support
#
# CONFIG_X1394 is not set
#
# Alternate SCSI support
#
# CONFIG_XSCSI is not set
#
# SCSI support
#
# CONFIG_SCSI 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
#
# Input core support
#
# CONFIG_INPUT is not set
# CONFIG_INPUT_KEYBDEV is not set
# CONFIG_INPUT_MOUSEDEV is not set
# CONFIG_INPUT_JOYDEV is not set
# CONFIG_INPUT_EVDEV is not set
#
# Character devices
#
CONFIG_VT=y
CONFIG_VT_CONSOLE=y
# CONFIG_SERIAL is not set
# CONFIG_SERIAL_EXTENDED is not set
# CONFIG_SERIAL_NONSTANDARD is not set
CONFIG_UNIX98_PTYS=y
CONFIG_UNIX98_PTY_COUNT=256
#
# I2C support
#
# CONFIG_I2C is not set
#
# Mice
#
# CONFIG_BUSMOUSE is not set
# CONFIG_MOUSE is not set
#
# Joysticks
#
# CONFIG_INPUT_GAMEPORT is not set
#
# Input core support is needed for gameports
#
#
# Input core support is needed for joysticks
#
# CONFIG_QIC02_TAPE is not set
#
# Watchdog Cards
#
# CONFIG_WATCHDOG is not set
# CONFIG_INTEL_RNG is not set
# CONFIG_NVRAM is not set
# CONFIG_RTC is not set
# CONFIG_EFI_RTC is not set
# CONFIG_DTLK is not set
# CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set
#
# Ftape, the floppy tape device driver
#
# CONFIG_FTAPE is not set
# CONFIG_AGP is not set
# CONFIG_DRM is not set
# CONFIG_MWAVE is not set
#
# Multimedia devices
#
# CONFIG_VIDEO_DEV is not set
#
# File systems
#
# CONFIG_QUOTA is not set
# CONFIG_AUTOFS_FS is not set
# CONFIG_AUTOFS4_FS is not set
# CONFIG_REISERFS_FS is not set
# CONFIG_REISERFS_CHECK is not set
# CONFIG_ADFS_FS is not set
# CONFIG_ADFS_FS_RW is not set
# CONFIG_AFFS_FS is not set
# CONFIG_HFS_FS is not set
# CONFIG_BFS_FS is not set
# CONFIG_FAT_FS is not set
# CONFIG_MSDOS_FS is not set
# CONFIG_UMSDOS_FS is not set
# CONFIG_VFAT_FS is not set
# CONFIG_EFS_FS is not set
# CONFIG_JFFS_FS is not set
# CONFIG_JFFS2_FS is not set
# CONFIG_CRAMFS is not set
CONFIG_TMPFS=y
# CONFIG_RAMFS is not set
# CONFIG_ISO9660_FS is not set
# CONFIG_JOLIET is not set
# CONFIG_MINIX_FS is not set
# CONFIG_VXFS_FS is not set
# CONFIG_NTFS_FS is not set
# CONFIG_NTFS_DEBUG is not set
# CONFIG_NTFS_RW is not set
# CONFIG_HPFS_FS is not set
CONFIG_PROC_FS=y
# CONFIG_DEVFS_FS is not set
# CONFIG_DEVFS_MOUNT is not set
# CONFIG_DEVFS_DEBUG is not set
CONFIG_DEVPTS_FS=y
# CONFIG_QNX4FS_FS is not set
# CONFIG_QNX4FS_RW is not set
# CONFIG_ROMFS_FS is not set
CONFIG_EXT2_FS=y
# CONFIG_SYSV_FS is not set
# CONFIG_UDF_FS is not set
# CONFIG_UDF_RW is not set
# CONFIG_UFS_FS is not set
# CONFIG_UFS_FS_WRITE is not set
# CONFIG_XFS_SUPPORT is not set
# CONFIG_NCPFS_NLS is not set
# CONFIG_SMB_FS is not set
#
# Partition Types
#
# CONFIG_PARTITION_ADVANCED is not set
CONFIG_MSDOS_PARTITION=y
# CONFIG_SMB_NLS is not set
# CONFIG_NLS is not set
#
# Console drivers
#
CONFIG_VGA_CONSOLE=y
#
# Frame-buffer support
#
# CONFIG_FB is not set
#
# Sound
#
# CONFIG_SOUND is not set
#
# USB support
#
# CONFIG_USB is not set
#
# USB Controllers
#
# CONFIG_USB_UHCI is not set
# CONFIG_USB_UHCI_ALT is not set
# CONFIG_USB_OHCI is not set
#
# USB Device Class drivers
#
# CONFIG_USB_AUDIO is not set
# CONFIG_USB_BLUETOOTH is not set
# CONFIG_USB_STORAGE is not set
# CONFIG_USB_STORAGE_DEBUG is not set
# CONFIG_USB_STORAGE_DATAFAB is not set
# CONFIG_USB_STORAGE_FREECOM is not set
# CONFIG_USB_STORAGE_ISD200 is not set
# CONFIG_USB_STORAGE_DPCM is not set
# CONFIG_USB_STORAGE_HP8200e is not set
# CONFIG_USB_STORAGE_SDDR09 is not set
# CONFIG_USB_STORAGE_JUMPSHOT is not set
# CONFIG_USB_ACM is not set
# CONFIG_USB_PRINTER is not set
#
# USB Human Interface Devices (HID)
#
#
# Input core support is needed for USB HID
#
#
# USB Imaging devices
#
# CONFIG_USB_DC2XX is not set
# CONFIG_USB_MDC800 is not set
# CONFIG_USB_SCANNER is not set
# CONFIG_USB_MICROTEK is not set
# CONFIG_USB_HPUSBSCSI is not set
#
# USB Multimedia devices
#
#
# Video4Linux support is needed for USB Multimedia device support
#
#
# USB Network adaptors
#
#
# Networking support is needed for USB Networking device support
#
#
# USB port drivers
#
# CONFIG_USB_USS720 is not set
#
# USB Serial Converter support
#
# CONFIG_USB_SERIAL is not set
# CONFIG_USB_SERIAL_GENERIC is not set
# CONFIG_USB_SERIAL_BELKIN is not set
# CONFIG_USB_SERIAL_WHITEHEAT is not set
# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
# CONFIG_USB_SERIAL_EMPEG is not set
# CONFIG_USB_SERIAL_FTDI_SIO is not set
# CONFIG_USB_SERIAL_VISOR is not set
# CONFIG_USB_SERIAL_IR is not set
# CONFIG_USB_SERIAL_EDGEPORT is not set
# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
# CONFIG_USB_SERIAL_KEYSPAN is not set
# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
# CONFIG_USB_SERIAL_MCT_U232 is not set
# CONFIG_USB_SERIAL_PL2303 is not set
# CONFIG_USB_SERIAL_CYBERJACK is not set
# CONFIG_USB_SERIAL_XIRCOM is not set
# CONFIG_USB_SERIAL_OMNINET is not set
#
# USB Miscellaneous drivers
#
# CONFIG_USB_RIO500 is not set
#
# Kernel hacking
#
CONFIG_DEBUG_KERNEL=y
CONFIG_IA64_PRINT_HAZARDS=y
# CONFIG_DISABLE_VHPT is not set
CONFIG_MAGIC_SYSRQ=y
CONFIG_IA64_EARLY_PRINTK=y
# CONFIG_DEBUG_SLAB is not set
# CONFIG_DEBUG_SPINLOCK is not set
# CONFIG_IA64_DEBUG_CMPXCHG is not set
# CONFIG_IA64_DEBUG_IRQ is not set
# CONFIG_KDB is not set
# CONFIG_KDB_MODULES is not set
# CONFIG_KALLSYMS is not set
#
# Automatically generated make config: don't edit
#
#
# Code maturity level options
#
# CONFIG_EXPERIMENTAL is not set
#
# Loadable module support
#
# CONFIG_MODULES is not set
#
# General setup
#
CONFIG_IA64=y
# CONFIG_ISA is not set
# CONFIG_EISA is not set
# CONFIG_MCA is not set
# CONFIG_SBUS is not set
CONFIG_RWSEM_GENERIC_SPINLOCK=y
# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
CONFIG_ACPI=y
CONFIG_ACPI_EFI=y
CONFIG_ACPI_INTERPRETER=y
CONFIG_ACPI_KERNEL_CONFIG=y
CONFIG_ITANIUM=y
# CONFIG_MCKINLEY is not set
# CONFIG_IA64_GENERIC is not set
CONFIG_IA64_DIG=y
# CONFIG_IA64_HP_SIM is not set
# CONFIG_IA64_SGI_SN1 is not set
# CONFIG_IA64_SGI_SN2 is not set
# CONFIG_IA64_PAGE_SIZE_4KB is not set
# CONFIG_IA64_PAGE_SIZE_8KB is not set
CONFIG_IA64_PAGE_SIZE_16KB=y
# CONFIG_IA64_PAGE_SIZE_64KB is not set
CONFIG_IA64_BRL_EMU=y
CONFIG_ITANIUM_BSTEP_SPECIFIC=y
CONFIG_IA64_L1_CACHE_SHIFT=6
# CONFIG_NUMA is not set
# CONFIG_IA64_MCA is not set
CONFIG_PM=y
CONFIG_IA64_HAVE_SYNCRONIZED_ITC=y
# CONFIG_DEVFS_FS is not set
CONFIG_KCORE_ELF=y
# CONFIG_SMP is not set
# CONFIG_IA32_SUPPORT is not set
# CONFIG_PERFMON is not set
# CONFIG_IA64_PALINFO is not set
# CONFIG_EFI_VARS is not set
# CONFIG_NET is not set
CONFIG_SYSVIPC=y
# CONFIG_BSD_PROCESS_ACCT is not set
# CONFIG_SYSCTL is not set
CONFIG_BINFMT_ELF=y
# CONFIG_BINFMT_MISC is not set
# CONFIG_ACPI_DEBUG is not set
# CONFIG_ACPI_BUSMGR is not set
# CONFIG_ACPI_SYS is not set
# CONFIG_ACPI_CPU is not set
# CONFIG_ACPI_BUTTON is not set
# CONFIG_ACPI_AC is not set
# CONFIG_ACPI_EC is not set
# CONFIG_ACPI_CMBATT is not set
# CONFIG_ACPI_THERMAL is not set
CONFIG_PCI=y
# CONFIG_PCI_NAMES is not set
# CONFIG_HOTPLUG is not set
# CONFIG_PCMCIA is not set
#
# Parallel port support
#
# CONFIG_PARPORT is not set
#
# Memory Technology Devices (MTD)
#
# CONFIG_MTD is not set
#
# Plug and Play configuration
#
# CONFIG_PNP is not set
# CONFIG_ISAPNP is not set
#
# Block devices
#
# CONFIG_BLK_DEV_FD is not set
# CONFIG_BLK_DEV_XD is not set
# CONFIG_PARIDE is not set
# CONFIG_BLK_CPQ_DA is not set
# CONFIG_BLK_CPQ_CISS_DA is not set
# CONFIG_BLK_DEV_DAC960 is not set
# CONFIG_BLK_DEV_LOOP is not set
# CONFIG_BLK_DEV_NBD is not set
# CONFIG_BLK_DEV_RAM is not set
# CONFIG_BLK_DEV_INITRD is not set
#
# I2O device support
#
# CONFIG_I2O is not set
# CONFIG_I2O_PCI is not set
# CONFIG_I2O_BLOCK is not set
# CONFIG_I2O_SCSI is not set
# CONFIG_I2O_PROC is not set
#
# Multi-device support (RAID and LVM)
#
# CONFIG_MD is not set
# CONFIG_BLK_DEV_MD is not set
# CONFIG_MD_LINEAR is not set
# CONFIG_MD_RAID0 is not set
# CONFIG_MD_RAID1 is not set
# CONFIG_MD_RAID5 is not set
# CONFIG_MD_MULTIPATH is not set
# CONFIG_BLK_DEV_LVM is not set
#
# ATA/IDE/MFM/RLL support
#
CONFIG_IDE=y
#
# IDE, ATA and ATAPI Block devices
#
CONFIG_BLK_DEV_IDE=y
#
# Please see Documentation/ide.txt for help/info on IDE drives
#
# CONFIG_BLK_DEV_HD_IDE is not set
# CONFIG_BLK_DEV_HD is not set
CONFIG_BLK_DEV_IDEDISK=y
# CONFIG_IDEDISK_MULTI_MODE is not set
# CONFIG_BLK_DEV_IDECS is not set
# CONFIG_BLK_DEV_IDECD is not set
# CONFIG_BLK_DEV_IDETAPE is not set
# CONFIG_BLK_DEV_IDEFLOPPY is not set
# CONFIG_BLK_DEV_IDESCSI is not set
#
# IDE chipset support/bugfixes
#
# CONFIG_BLK_DEV_CMD640 is not set
# CONFIG_BLK_DEV_CMD640_ENHANCED is not set
# CONFIG_BLK_DEV_ISAPNP is not set
# CONFIG_BLK_DEV_RZ1000 is not set
# CONFIG_IDE_CHIPSETS is not set
# CONFIG_IDEDMA_AUTO is not set
# CONFIG_BLK_DEV_IDE_MODES is not set
# CONFIG_BLK_DEV_ATARAID is not set
# CONFIG_BLK_DEV_ATARAID_PDC is not set
# CONFIG_BLK_DEV_ATARAID_HPT is not set
#
# Alternate 1394 support
#
# CONFIG_X1394 is not set
#
# Alternate SCSI support
#
# CONFIG_XSCSI is not set
#
# SCSI support
#
# CONFIG_SCSI 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
#
# Input core support
#
# CONFIG_INPUT is not set
# CONFIG_INPUT_KEYBDEV is not set
# CONFIG_INPUT_MOUSEDEV is not set
# CONFIG_INPUT_JOYDEV is not set
# CONFIG_INPUT_EVDEV is not set
#
# Character devices
#
CONFIG_VT=y
CONFIG_VT_CONSOLE=y
# CONFIG_SERIAL is not set
# CONFIG_SERIAL_EXTENDED is not set
# CONFIG_SERIAL_NONSTANDARD is not set
CONFIG_UNIX98_PTYS=y
CONFIG_UNIX98_PTY_COUNT=256
#
# I2C support
#
# CONFIG_I2C is not set
#
# Mice
#
# CONFIG_BUSMOUSE is not set
# CONFIG_MOUSE is not set
#
# Joysticks
#
# CONFIG_INPUT_GAMEPORT is not set
#
# Input core support is needed for gameports
#
#
# Input core support is needed for joysticks
#
# CONFIG_QIC02_TAPE is not set
#
# Watchdog Cards
#
# CONFIG_WATCHDOG is not set
# CONFIG_INTEL_RNG is not set
# CONFIG_NVRAM is not set
# CONFIG_RTC is not set
# CONFIG_EFI_RTC is not set
# CONFIG_DTLK is not set
# CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set
#
# Ftape, the floppy tape device driver
#
# CONFIG_FTAPE is not set
# CONFIG_AGP is not set
# CONFIG_DRM is not set
# CONFIG_MWAVE is not set
#
# Multimedia devices
#
# CONFIG_VIDEO_DEV is not set
#
# File systems
#
# CONFIG_QUOTA is not set
# CONFIG_AUTOFS_FS is not set
# CONFIG_AUTOFS4_FS is not set
# CONFIG_REISERFS_FS is not set
# CONFIG_REISERFS_CHECK is not set
# CONFIG_ADFS_FS is not set
# CONFIG_ADFS_FS_RW is not set
# CONFIG_AFFS_FS is not set
# CONFIG_HFS_FS is not set
# CONFIG_BFS_FS is not set
# CONFIG_FAT_FS is not set
# CONFIG_MSDOS_FS is not set
# CONFIG_UMSDOS_FS is not set
# CONFIG_VFAT_FS is not set
# CONFIG_EFS_FS is not set
# CONFIG_JFFS_FS is not set
# CONFIG_JFFS2_FS is not set
# CONFIG_CRAMFS is not set
CONFIG_TMPFS=y
# CONFIG_RAMFS is not set
# CONFIG_ISO9660_FS is not set
# CONFIG_JOLIET is not set
# CONFIG_MINIX_FS is not set
# CONFIG_VXFS_FS is not set
# CONFIG_NTFS_FS is not set
# CONFIG_NTFS_DEBUG is not set
# CONFIG_NTFS_RW is not set
# CONFIG_HPFS_FS is not set
CONFIG_PROC_FS=y
# CONFIG_DEVFS_FS is not set
# CONFIG_DEVFS_MOUNT is not set
# CONFIG_DEVFS_DEBUG is not set
CONFIG_DEVPTS_FS=y
# CONFIG_QNX4FS_FS is not set
# CONFIG_QNX4FS_RW is not set
# CONFIG_ROMFS_FS is not set
CONFIG_EXT2_FS=y
# CONFIG_SYSV_FS is not set
# CONFIG_UDF_FS is not set
# CONFIG_UDF_RW is not set
# CONFIG_UFS_FS is not set
# CONFIG_UFS_FS_WRITE is not set
# CONFIG_XFS_SUPPORT is not set
# CONFIG_NCPFS_NLS is not set
# CONFIG_SMB_FS is not set
#
# Partition Types
#
# CONFIG_PARTITION_ADVANCED is not set
CONFIG_MSDOS_PARTITION=y
# CONFIG_SMB_NLS is not set
# CONFIG_NLS is not set
#
# Console drivers
#
CONFIG_VGA_CONSOLE=y
#
# Frame-buffer support
#
# CONFIG_FB is not set
#
# Sound
#
# CONFIG_SOUND is not set
#
# USB support
#
# CONFIG_USB is not set
#
# USB Controllers
#
# CONFIG_USB_UHCI is not set
# CONFIG_USB_UHCI_ALT is not set
# CONFIG_USB_OHCI is not set
#
# USB Device Class drivers
#
# CONFIG_USB_AUDIO is not set
# CONFIG_USB_BLUETOOTH is not set
# CONFIG_USB_STORAGE is not set
# CONFIG_USB_STORAGE_DEBUG is not set
# CONFIG_USB_STORAGE_DATAFAB is not set
# CONFIG_USB_STORAGE_FREECOM is not set
# CONFIG_USB_STORAGE_ISD200 is not set
# CONFIG_USB_STORAGE_DPCM is not set
# CONFIG_USB_STORAGE_HP8200e is not set
# CONFIG_USB_STORAGE_SDDR09 is not set
# CONFIG_USB_STORAGE_JUMPSHOT is not set
# CONFIG_USB_ACM is not set
# CONFIG_USB_PRINTER is not set
#
# USB Human Interface Devices (HID)
#
#
# Input core support is needed for USB HID
#
#
# USB Imaging devices
#
# CONFIG_USB_DC2XX is not set
# CONFIG_USB_MDC800 is not set
# CONFIG_USB_SCANNER is not set
# CONFIG_USB_MICROTEK is not set
# CONFIG_USB_HPUSBSCSI is not set
#
# USB Multimedia devices
#
#
# Video4Linux support is needed for USB Multimedia device support
#
#
# USB Network adaptors
#
#
# Networking support is needed for USB Networking device support
#
#
# USB port drivers
#
# CONFIG_USB_USS720 is not set
#
# USB Serial Converter support
#
# CONFIG_USB_SERIAL is not set
# CONFIG_USB_SERIAL_GENERIC is not set
# CONFIG_USB_SERIAL_BELKIN is not set
# CONFIG_USB_SERIAL_WHITEHEAT is not set
# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
# CONFIG_USB_SERIAL_EMPEG is not set
# CONFIG_USB_SERIAL_FTDI_SIO is not set
# CONFIG_USB_SERIAL_VISOR is not set
# CONFIG_USB_SERIAL_IR is not set
# CONFIG_USB_SERIAL_EDGEPORT is not set
# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
# CONFIG_USB_SERIAL_KEYSPAN is not set
# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
# CONFIG_USB_SERIAL_MCT_U232 is not set
# CONFIG_USB_SERIAL_PL2303 is not set
# CONFIG_USB_SERIAL_CYBERJACK is not set
# CONFIG_USB_SERIAL_XIRCOM is not set
# CONFIG_USB_SERIAL_OMNINET is not set
#
# USB Miscellaneous drivers
#
# CONFIG_USB_RIO500 is not set
#
# Kernel hacking
#
CONFIG_DEBUG_KERNEL=y
CONFIG_IA64_PRINT_HAZARDS=y
# CONFIG_DISABLE_VHPT is not set
CONFIG_MAGIC_SYSRQ=y
CONFIG_IA64_EARLY_PRINTK=y
# CONFIG_DEBUG_SLAB is not set
# CONFIG_DEBUG_SPINLOCK is not set
# CONFIG_IA64_DEBUG_CMPXCHG is not set
# CONFIG_IA64_DEBUG_IRQ is not set
# CONFIG_KDB is not set
# CONFIG_KDB_MODULES is not set
# CONFIG_KALLSYMS is not set
#
# Automatically generated make config: don't edit
#
#
# Code maturity level options
#
# CONFIG_EXPERIMENTAL is not set
#
# Loadable module support
#
# CONFIG_MODULES is not set
#
# General setup
#
CONFIG_IA64=y
# CONFIG_ISA is not set
# CONFIG_EISA is not set
# CONFIG_MCA is not set
# CONFIG_SBUS is not set
CONFIG_RWSEM_GENERIC_SPINLOCK=y
# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
CONFIG_ACPI=y
CONFIG_ACPI_EFI=y
CONFIG_ACPI_INTERPRETER=y
CONFIG_ACPI_KERNEL_CONFIG=y
CONFIG_ITANIUM=y
# CONFIG_MCKINLEY is not set
CONFIG_IA64_GENERIC=y
# CONFIG_IA64_DIG is not set
# CONFIG_IA64_HP_SIM is not set
# CONFIG_IA64_SGI_SN1 is not set
# CONFIG_IA64_SGI_SN2 is not set
# CONFIG_IA64_PAGE_SIZE_4KB is not set
# CONFIG_IA64_PAGE_SIZE_8KB is not set
CONFIG_IA64_PAGE_SIZE_16KB=y
# CONFIG_IA64_PAGE_SIZE_64KB is not set
CONFIG_IA64_BRL_EMU=y
CONFIG_ITANIUM_BSTEP_SPECIFIC=y
CONFIG_IA64_L1_CACHE_SHIFT=6
CONFIG_KCORE_ELF=y
CONFIG_SMP=y
# CONFIG_IA32_SUPPORT is not set
CONFIG_PERFMON=y
CONFIG_IA64_PALINFO=y
# CONFIG_EFI_VARS is not set
# CONFIG_NET is not set
CONFIG_SYSVIPC=y
# CONFIG_BSD_PROCESS_ACCT is not set
# CONFIG_SYSCTL is not set
CONFIG_BINFMT_ELF=y
# CONFIG_BINFMT_MISC is not set
# CONFIG_ACPI_DEBUG is not set
# CONFIG_ACPI_BUSMGR is not set
# CONFIG_ACPI_SYS is not set
# CONFIG_ACPI_CPU is not set
# CONFIG_ACPI_BUTTON is not set
# CONFIG_ACPI_AC is not set
# CONFIG_ACPI_EC is not set
# CONFIG_ACPI_CMBATT is not set
# CONFIG_ACPI_THERMAL is not set
CONFIG_PCI=y
# CONFIG_PCI_NAMES is not set
# CONFIG_HOTPLUG is not set
# CONFIG_PCMCIA is not set
#
# Parallel port support
#
# CONFIG_PARPORT is not set
#
# Memory Technology Devices (MTD)
#
# CONFIG_MTD is not set
#
# Plug and Play configuration
#
# CONFIG_PNP is not set
# CONFIG_ISAPNP is not set
#
# Block devices
#
# CONFIG_BLK_DEV_FD is not set
# CONFIG_BLK_DEV_XD is not set
# CONFIG_PARIDE is not set
# CONFIG_BLK_CPQ_DA is not set
# CONFIG_BLK_CPQ_CISS_DA is not set
# CONFIG_BLK_DEV_DAC960 is not set
# CONFIG_BLK_DEV_LOOP is not set
# CONFIG_BLK_DEV_NBD is not set
# CONFIG_BLK_DEV_RAM is not set
# CONFIG_BLK_DEV_INITRD is not set
#
# I2O device support
#
# CONFIG_I2O is not set
# CONFIG_I2O_PCI is not set
# CONFIG_I2O_BLOCK is not set
# CONFIG_I2O_SCSI is not set
# CONFIG_I2O_PROC is not set
#
# Multi-device support (RAID and LVM)
#
# CONFIG_MD is not set
# CONFIG_BLK_DEV_MD is not set
# CONFIG_MD_LINEAR is not set
# CONFIG_MD_RAID0 is not set
# CONFIG_MD_RAID1 is not set
# CONFIG_MD_RAID5 is not set
# CONFIG_MD_MULTIPATH is not set
# CONFIG_BLK_DEV_LVM is not set
#
# ATA/IDE/MFM/RLL support
#
CONFIG_IDE=y
#
# IDE, ATA and ATAPI Block devices
#
CONFIG_BLK_DEV_IDE=y
#
# Please see Documentation/ide.txt for help/info on IDE drives
#
# CONFIG_BLK_DEV_HD_IDE is not set
# CONFIG_BLK_DEV_HD is not set
CONFIG_BLK_DEV_IDEDISK=y
# CONFIG_IDEDISK_MULTI_MODE is not set
# CONFIG_BLK_DEV_IDECS is not set
# CONFIG_BLK_DEV_IDECD is not set
# CONFIG_BLK_DEV_IDETAPE is not set
# CONFIG_BLK_DEV_IDEFLOPPY is not set
# CONFIG_BLK_DEV_IDESCSI is not set
#
# IDE chipset support/bugfixes
#
# CONFIG_BLK_DEV_CMD640 is not set
# CONFIG_BLK_DEV_CMD640_ENHANCED is not set
# CONFIG_BLK_DEV_ISAPNP is not set
# CONFIG_BLK_DEV_RZ1000 is not set
# CONFIG_IDE_CHIPSETS is not set
# CONFIG_IDEDMA_AUTO is not set
# CONFIG_BLK_DEV_IDE_MODES is not set
# CONFIG_BLK_DEV_ATARAID is not set
# CONFIG_BLK_DEV_ATARAID_PDC is not set
# CONFIG_BLK_DEV_ATARAID_HPT is not set
#
# Alternate 1394 support
#
# CONFIG_X1394 is not set
#
# Alternate SCSI support
#
# CONFIG_XSCSI is not set
#
# SCSI support
#
# CONFIG_SCSI 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
#
# Input core support
#
# CONFIG_INPUT is not set
# CONFIG_INPUT_KEYBDEV is not set
# CONFIG_INPUT_MOUSEDEV is not set
# CONFIG_INPUT_JOYDEV is not set
# CONFIG_INPUT_EVDEV is not set
#
# Character devices
#
CONFIG_VT=y
CONFIG_VT_CONSOLE=y
# CONFIG_SERIAL is not set
# CONFIG_SERIAL_EXTENDED is not set
# CONFIG_SERIAL_NONSTANDARD is not set
CONFIG_UNIX98_PTYS=y
CONFIG_UNIX98_PTY_COUNT=256
#
# I2C support
#
# CONFIG_I2C is not set
#
# Mice
#
# CONFIG_BUSMOUSE is not set
# CONFIG_MOUSE is not set
#
# Joysticks
#
# CONFIG_INPUT_GAMEPORT is not set
#
# Input core support is needed for gameports
#
#
# Input core support is needed for joysticks
#
# CONFIG_QIC02_TAPE is not set
#
# Watchdog Cards
#
# CONFIG_WATCHDOG is not set
# CONFIG_INTEL_RNG is not set
# CONFIG_NVRAM is not set
# CONFIG_RTC is not set
# CONFIG_EFI_RTC is not set
# CONFIG_DTLK is not set
# CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set
#
# Ftape, the floppy tape device driver
#
# CONFIG_FTAPE is not set
# CONFIG_AGP is not set
# CONFIG_DRM is not set
# CONFIG_MWAVE is not set
#
# Multimedia devices
#
# CONFIG_VIDEO_DEV is not set
#
# File systems
#
# CONFIG_QUOTA is not set
# CONFIG_AUTOFS_FS is not set
# CONFIG_AUTOFS4_FS is not set
# CONFIG_REISERFS_FS is not set
# CONFIG_REISERFS_CHECK is not set
# CONFIG_ADFS_FS is not set
# CONFIG_ADFS_FS_RW is not set
# CONFIG_AFFS_FS is not set
# CONFIG_HFS_FS is not set
# CONFIG_BFS_FS is not set
# CONFIG_FAT_FS is not set
# CONFIG_MSDOS_FS is not set
# CONFIG_UMSDOS_FS is not set
# CONFIG_VFAT_FS is not set
# CONFIG_EFS_FS is not set
# CONFIG_JFFS_FS is not set
# CONFIG_JFFS2_FS is not set
# CONFIG_CRAMFS is not set
CONFIG_TMPFS=y
# CONFIG_RAMFS is not set
# CONFIG_ISO9660_FS is not set
# CONFIG_JOLIET is not set
# CONFIG_MINIX_FS is not set
# CONFIG_VXFS_FS is not set
# CONFIG_NTFS_FS is not set
# CONFIG_NTFS_DEBUG is not set
# CONFIG_NTFS_RW is not set
# CONFIG_HPFS_FS is not set
CONFIG_PROC_FS=y
# CONFIG_DEVFS_FS is not set
# CONFIG_DEVFS_MOUNT is not set
# CONFIG_DEVFS_DEBUG is not set
CONFIG_DEVPTS_FS=y
# CONFIG_QNX4FS_FS is not set
# CONFIG_QNX4FS_RW is not set
# CONFIG_ROMFS_FS is not set
CONFIG_EXT2_FS=y
# CONFIG_SYSV_FS is not set
# CONFIG_UDF_FS is not set
# CONFIG_UDF_RW is not set
# CONFIG_UFS_FS is not set
# CONFIG_UFS_FS_WRITE is not set
# CONFIG_XFS_SUPPORT is not set
# CONFIG_NCPFS_NLS is not set
# CONFIG_SMB_FS is not set
#
# Partition Types
#
# CONFIG_PARTITION_ADVANCED is not set
CONFIG_MSDOS_PARTITION=y
# CONFIG_SMB_NLS is not set
# CONFIG_NLS is not set
#
# Console drivers
#
CONFIG_VGA_CONSOLE=y
#
# Frame-buffer support
#
# CONFIG_FB is not set
#
# Sound
#
# CONFIG_SOUND is not set
#
# USB support
#
# CONFIG_USB is not set
#
# USB Controllers
#
# CONFIG_USB_UHCI is not set
# CONFIG_USB_UHCI_ALT is not set
# CONFIG_USB_OHCI is not set
#
# USB Device Class drivers
#
# CONFIG_USB_AUDIO is not set
# CONFIG_USB_BLUETOOTH is not set
# CONFIG_USB_STORAGE is not set
# CONFIG_USB_STORAGE_DEBUG is not set
# CONFIG_USB_STORAGE_DATAFAB is not set
# CONFIG_USB_STORAGE_FREECOM is not set
# CONFIG_USB_STORAGE_ISD200 is not set
# CONFIG_USB_STORAGE_DPCM is not set
# CONFIG_USB_STORAGE_HP8200e is not set
# CONFIG_USB_STORAGE_SDDR09 is not set
# CONFIG_USB_STORAGE_JUMPSHOT is not set
# CONFIG_USB_ACM is not set
# CONFIG_USB_PRINTER is not set
#
# USB Human Interface Devices (HID)
#
#
# Input core support is needed for USB HID
#
#
# USB Imaging devices
#
# CONFIG_USB_DC2XX is not set
# CONFIG_USB_MDC800 is not set
# CONFIG_USB_SCANNER is not set
# CONFIG_USB_MICROTEK is not set
# CONFIG_USB_HPUSBSCSI is not set
#
# USB Multimedia devices
#
#
# Video4Linux support is needed for USB Multimedia device support
#
#
# USB Network adaptors
#
#
# Networking support is needed for USB Networking device support
#
#
# USB port drivers
#
# CONFIG_USB_USS720 is not set
#
# USB Serial Converter support
#
# CONFIG_USB_SERIAL is not set
# CONFIG_USB_SERIAL_GENERIC is not set
# CONFIG_USB_SERIAL_BELKIN is not set
# CONFIG_USB_SERIAL_WHITEHEAT is not set
# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
# CONFIG_USB_SERIAL_EMPEG is not set
# CONFIG_USB_SERIAL_FTDI_SIO is not set
# CONFIG_USB_SERIAL_VISOR is not set
# CONFIG_USB_SERIAL_IR is not set
# CONFIG_USB_SERIAL_EDGEPORT is not set
# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
# CONFIG_USB_SERIAL_KEYSPAN is not set
# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
# CONFIG_USB_SERIAL_MCT_U232 is not set
# CONFIG_USB_SERIAL_PL2303 is not set
# CONFIG_USB_SERIAL_CYBERJACK is not set
# CONFIG_USB_SERIAL_XIRCOM is not set
# CONFIG_USB_SERIAL_OMNINET is not set
#
# USB Miscellaneous drivers
#
# CONFIG_USB_RIO500 is not set
#
# Simulated drivers
#
# CONFIG_SIMETH is not set
# CONFIG_SIM_SERIAL is not set
#
# Kernel hacking
#
CONFIG_DEBUG_KERNEL=y
CONFIG_IA64_PRINT_HAZARDS=y
# CONFIG_DISABLE_VHPT is not set
CONFIG_MAGIC_SYSRQ=y
CONFIG_IA64_EARLY_PRINTK=y
# CONFIG_DEBUG_SLAB is not set
# CONFIG_DEBUG_SPINLOCK is not set
# CONFIG_IA64_DEBUG_CMPXCHG is not set
# CONFIG_IA64_DEBUG_IRQ is not set
# CONFIG_KDB is not set
# CONFIG_KDB_MODULES is not set
# CONFIG_KALLSYMS is not set
#
# Automatically generated make config: don't edit
#
#
# Code maturity level options
#
# CONFIG_EXPERIMENTAL is not set
#
# Loadable module support
#
# CONFIG_MODULES is not set
#
# General setup
#
CONFIG_IA64=y
# CONFIG_ISA is not set
# CONFIG_EISA is not set
# CONFIG_MCA is not set
# CONFIG_SBUS is not set
CONFIG_RWSEM_GENERIC_SPINLOCK=y
# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
CONFIG_ACPI=y
CONFIG_ACPI_EFI=y
CONFIG_ACPI_INTERPRETER=y
CONFIG_ACPI_KERNEL_CONFIG=y
CONFIG_ITANIUM=y
# CONFIG_MCKINLEY is not set
CONFIG_IA64_GENERIC=y
# CONFIG_IA64_DIG is not set
# CONFIG_IA64_HP_SIM is not set
# CONFIG_IA64_SGI_SN1 is not set
# CONFIG_IA64_SGI_SN2 is not set
# CONFIG_IA64_PAGE_SIZE_4KB is not set
# CONFIG_IA64_PAGE_SIZE_8KB is not set
CONFIG_IA64_PAGE_SIZE_16KB=y
# CONFIG_IA64_PAGE_SIZE_64KB is not set
CONFIG_IA64_BRL_EMU=y
CONFIG_ITANIUM_BSTEP_SPECIFIC=y
CONFIG_IA64_L1_CACHE_SHIFT=6
CONFIG_KCORE_ELF=y
# CONFIG_SMP is not set
# CONFIG_IA32_SUPPORT is not set
CONFIG_PERFMON=y
CONFIG_IA64_PALINFO=y
# CONFIG_EFI_VARS is not set
# CONFIG_NET is not set
CONFIG_SYSVIPC=y
# CONFIG_BSD_PROCESS_ACCT is not set
# CONFIG_SYSCTL is not set
CONFIG_BINFMT_ELF=y
# CONFIG_BINFMT_MISC is not set
# CONFIG_ACPI_DEBUG is not set
# CONFIG_ACPI_BUSMGR is not set
# CONFIG_ACPI_SYS is not set
# CONFIG_ACPI_CPU is not set
# CONFIG_ACPI_BUTTON is not set
# CONFIG_ACPI_AC is not set
# CONFIG_ACPI_EC is not set
# CONFIG_ACPI_CMBATT is not set
# CONFIG_ACPI_THERMAL is not set
CONFIG_PCI=y
# CONFIG_PCI_NAMES is not set
# CONFIG_HOTPLUG is not set
# CONFIG_PCMCIA is not set
#
# Parallel port support
#
# CONFIG_PARPORT is not set
#
# Memory Technology Devices (MTD)
#
# CONFIG_MTD is not set
#
# Plug and Play configuration
#
# CONFIG_PNP is not set
# CONFIG_ISAPNP is not set
#
# Block devices
#
# CONFIG_BLK_DEV_FD is not set
# CONFIG_BLK_DEV_XD is not set
# CONFIG_PARIDE is not set
# CONFIG_BLK_CPQ_DA is not set
# CONFIG_BLK_CPQ_CISS_DA is not set
# CONFIG_BLK_DEV_DAC960 is not set
# CONFIG_BLK_DEV_LOOP is not set
# CONFIG_BLK_DEV_NBD is not set
# CONFIG_BLK_DEV_RAM is not set
# CONFIG_BLK_DEV_INITRD is not set
#
# I2O device support
#
# CONFIG_I2O is not set
# CONFIG_I2O_PCI is not set
# CONFIG_I2O_BLOCK is not set
# CONFIG_I2O_SCSI is not set
# CONFIG_I2O_PROC is not set
#
# Multi-device support (RAID and LVM)
#
# CONFIG_MD is not set
# CONFIG_BLK_DEV_MD is not set
# CONFIG_MD_LINEAR is not set
# CONFIG_MD_RAID0 is not set
# CONFIG_MD_RAID1 is not set
# CONFIG_MD_RAID5 is not set
# CONFIG_MD_MULTIPATH is not set
# CONFIG_BLK_DEV_LVM is not set
#
# ATA/IDE/MFM/RLL support
#
CONFIG_IDE=y
#
# IDE, ATA and ATAPI Block devices
#
CONFIG_BLK_DEV_IDE=y
#
# Please see Documentation/ide.txt for help/info on IDE drives
#
# CONFIG_BLK_DEV_HD_IDE is not set
# CONFIG_BLK_DEV_HD is not set
CONFIG_BLK_DEV_IDEDISK=y
# CONFIG_IDEDISK_MULTI_MODE is not set
# CONFIG_BLK_DEV_IDECS is not set
# CONFIG_BLK_DEV_IDECD is not set
# CONFIG_BLK_DEV_IDETAPE is not set
# CONFIG_BLK_DEV_IDEFLOPPY is not set
# CONFIG_BLK_DEV_IDESCSI is not set
#
# IDE chipset support/bugfixes
#
# CONFIG_BLK_DEV_CMD640 is not set
# CONFIG_BLK_DEV_CMD640_ENHANCED is not set
# CONFIG_BLK_DEV_ISAPNP is not set
# CONFIG_BLK_DEV_RZ1000 is not set
# CONFIG_IDE_CHIPSETS is not set
# CONFIG_IDEDMA_AUTO is not set
# CONFIG_BLK_DEV_IDE_MODES is not set
# CONFIG_BLK_DEV_ATARAID is not set
# CONFIG_BLK_DEV_ATARAID_PDC is not set
# CONFIG_BLK_DEV_ATARAID_HPT is not set
#
# Alternate 1394 support
#
# CONFIG_X1394 is not set
#
# Alternate SCSI support
#
# CONFIG_XSCSI is not set
#
# SCSI support
#
# CONFIG_SCSI 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
#
# Input core support
#
# CONFIG_INPUT is not set
# CONFIG_INPUT_KEYBDEV is not set
# CONFIG_INPUT_MOUSEDEV is not set
# CONFIG_INPUT_JOYDEV is not set
# CONFIG_INPUT_EVDEV is not set
#
# Character devices
#
CONFIG_VT=y
CONFIG_VT_CONSOLE=y
# CONFIG_SERIAL is not set
# CONFIG_SERIAL_EXTENDED is not set
# CONFIG_SERIAL_NONSTANDARD is not set
CONFIG_UNIX98_PTYS=y
CONFIG_UNIX98_PTY_COUNT=256
#
# I2C support
#
# CONFIG_I2C is not set
#
# Mice
#
# CONFIG_BUSMOUSE is not set
# CONFIG_MOUSE is not set
#
# Joysticks
#
# CONFIG_INPUT_GAMEPORT is not set
#
# Input core support is needed for gameports
#
#
# Input core support is needed for joysticks
#
# CONFIG_QIC02_TAPE is not set
#
# Watchdog Cards
#
# CONFIG_WATCHDOG is not set
# CONFIG_INTEL_RNG is not set
# CONFIG_NVRAM is not set
# CONFIG_RTC is not set
# CONFIG_EFI_RTC is not set
# CONFIG_DTLK is not set
# CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set
#
# Ftape, the floppy tape device driver
#
# CONFIG_FTAPE is not set
# CONFIG_AGP is not set
# CONFIG_DRM is not set
# CONFIG_MWAVE is not set
#
# Multimedia devices
#
# CONFIG_VIDEO_DEV is not set
#
# File systems
#
# CONFIG_QUOTA is not set
# CONFIG_AUTOFS_FS is not set
# CONFIG_AUTOFS4_FS is not set
# CONFIG_REISERFS_FS is not set
# CONFIG_REISERFS_CHECK is not set
# CONFIG_ADFS_FS is not set
# CONFIG_ADFS_FS_RW is not set
# CONFIG_AFFS_FS is not set
# CONFIG_HFS_FS is not set
# CONFIG_BFS_FS is not set
# CONFIG_FAT_FS is not set
# CONFIG_MSDOS_FS is not set
# CONFIG_UMSDOS_FS is not set
# CONFIG_VFAT_FS is not set
# CONFIG_EFS_FS is not set
# CONFIG_JFFS_FS is not set
# CONFIG_JFFS2_FS is not set
# CONFIG_CRAMFS is not set
CONFIG_TMPFS=y
# CONFIG_RAMFS is not set
# CONFIG_ISO9660_FS is not set
# CONFIG_JOLIET is not set
# CONFIG_MINIX_FS is not set
# CONFIG_VXFS_FS is not set
# CONFIG_NTFS_FS is not set
# CONFIG_NTFS_DEBUG is not set
# CONFIG_NTFS_RW is not set
# CONFIG_HPFS_FS is not set
CONFIG_PROC_FS=y
# CONFIG_DEVFS_FS is not set
# CONFIG_DEVFS_MOUNT is not set
# CONFIG_DEVFS_DEBUG is not set
CONFIG_DEVPTS_FS=y
# CONFIG_QNX4FS_FS is not set
# CONFIG_QNX4FS_RW is not set
# CONFIG_ROMFS_FS is not set
CONFIG_EXT2_FS=y
# CONFIG_SYSV_FS is not set
# CONFIG_UDF_FS is not set
# CONFIG_UDF_RW is not set
# CONFIG_UFS_FS is not set
# CONFIG_UFS_FS_WRITE is not set
# CONFIG_XFS_SUPPORT is not set
# CONFIG_NCPFS_NLS is not set
# CONFIG_SMB_FS is not set
#
# Partition Types
#
# CONFIG_PARTITION_ADVANCED is not set
CONFIG_MSDOS_PARTITION=y
# CONFIG_SMB_NLS is not set
# CONFIG_NLS is not set
#
# Console drivers
#
CONFIG_VGA_CONSOLE=y
#
# Frame-buffer support
#
# CONFIG_FB is not set
#
# Sound
#
# CONFIG_SOUND is not set
#
# USB support
#
# CONFIG_USB is not set
#
# USB Controllers
#
# CONFIG_USB_UHCI is not set
# CONFIG_USB_UHCI_ALT is not set
# CONFIG_USB_OHCI is not set
#
# USB Device Class drivers
#
# CONFIG_USB_AUDIO is not set
# CONFIG_USB_BLUETOOTH is not set
# CONFIG_USB_STORAGE is not set
# CONFIG_USB_STORAGE_DEBUG is not set
# CONFIG_USB_STORAGE_DATAFAB is not set
# CONFIG_USB_STORAGE_FREECOM is not set
# CONFIG_USB_STORAGE_ISD200 is not set
# CONFIG_USB_STORAGE_DPCM is not set
# CONFIG_USB_STORAGE_HP8200e is not set
# CONFIG_USB_STORAGE_SDDR09 is not set
# CONFIG_USB_STORAGE_JUMPSHOT is not set
# CONFIG_USB_ACM is not set
# CONFIG_USB_PRINTER is not set
#
# USB Human Interface Devices (HID)
#
#
# Input core support is needed for USB HID
#
#
# USB Imaging devices
#
# CONFIG_USB_DC2XX is not set
# CONFIG_USB_MDC800 is not set
# CONFIG_USB_SCANNER is not set
# CONFIG_USB_MICROTEK is not set
# CONFIG_USB_HPUSBSCSI is not set
#
# USB Multimedia devices
#
#
# Video4Linux support is needed for USB Multimedia device support
#
#
# USB Network adaptors
#
#
# Networking support is needed for USB Networking device support
#
#
# USB port drivers
#
# CONFIG_USB_USS720 is not set
#
# USB Serial Converter support
#
# CONFIG_USB_SERIAL is not set
# CONFIG_USB_SERIAL_GENERIC is not set
# CONFIG_USB_SERIAL_BELKIN is not set
# CONFIG_USB_SERIAL_WHITEHEAT is not set
# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
# CONFIG_USB_SERIAL_EMPEG is not set
# CONFIG_USB_SERIAL_FTDI_SIO is not set
# CONFIG_USB_SERIAL_VISOR is not set
# CONFIG_USB_SERIAL_IR is not set
# CONFIG_USB_SERIAL_EDGEPORT is not set
# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
# CONFIG_USB_SERIAL_KEYSPAN is not set
# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
# CONFIG_USB_SERIAL_MCT_U232 is not set
# CONFIG_USB_SERIAL_PL2303 is not set
# CONFIG_USB_SERIAL_CYBERJACK is not set
# CONFIG_USB_SERIAL_XIRCOM is not set
# CONFIG_USB_SERIAL_OMNINET is not set
#
# USB Miscellaneous drivers
#
# CONFIG_USB_RIO500 is not set
#
# Simulated drivers
#
# CONFIG_SIMETH is not set
# CONFIG_SIM_SERIAL is not set
#
# Kernel hacking
#
CONFIG_DEBUG_KERNEL=y
CONFIG_IA64_PRINT_HAZARDS=y
# CONFIG_DISABLE_VHPT is not set
CONFIG_MAGIC_SYSRQ=y
CONFIG_IA64_EARLY_PRINTK=y
# CONFIG_DEBUG_SLAB is not set
# CONFIG_DEBUG_SPINLOCK is not set
# CONFIG_IA64_DEBUG_CMPXCHG is not set
# CONFIG_IA64_DEBUG_IRQ is not set
# CONFIG_KDB is not set
# CONFIG_KDB_MODULES is not set
# CONFIG_KALLSYMS is not set
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.
...@@ -6,19 +6,15 @@ ...@@ -6,19 +6,15 @@
# Copyright (c) 2000-2001 Silicon Graphics, Inc. All rights reserved. # Copyright (c) 2000-2001 Silicon Graphics, Inc. All rights reserved.
# #
TOPDIR=../../../.. obj-y=fpromasm.o main.o fw-emu.o fpmem.o klgraph_init.o
LIB = ../../lib/lib.a
OBJ=fpromasm.o main.o fw-emu.o fpmem.o klgraph_init.o
obj-y=fprom
fprom: $(OBJ) fprom: $(OBJ)
$(LD) -static -Tfprom.lds -o fprom $(OBJ) $(LIB) $(LD) -static -Tfprom.lds -o fprom $(OBJ) $(LIB)
.S.o:
$(CC) -D__ASSEMBLY__ $(AFLAGS) $(AFLAGS_KERNEL) -c -o $*.o $<
.c.o:
$(CC) $(CFLAGS) $(CFLAGS_KERNEL) -c -o $*.o $<
clean: clean:
rm -f *.o fprom rm -f *.o fprom
include $(TOPDIR)/Rules.make
...@@ -71,7 +71,7 @@ amount of memory present on nodes 0-3. ...@@ -71,7 +71,7 @@ amount of memory present on nodes 0-3.
1GB*<dn>, where dn is the digit number. The amount of memory 1GB*<dn>, where dn is the digit number. The amount of memory
is 8MB*2**<d>. (If <d> = 0, the memory size is 0). is 8MB*2**<d>. (If <d> = 0, the memory size is 0).
SN1 doesn't support dimms this small but small memory systems SN1 doesnt support dimms this small but small memory systems
boot faster on Medusa. boot faster on Medusa.
......
...@@ -54,10 +54,10 @@ sn_config_t *sn_config ; ...@@ -54,10 +54,10 @@ sn_config_t *sn_config ;
#define PROMRESERVED_SIZE (1*MB) #define PROMRESERVED_SIZE (1*MB)
#ifdef CONFIG_IA64_SGI_SN1 #ifdef CONFIG_IA64_SGI_SN1
#define PHYS_ADDRESS(_n, _x) (((long)_n<<33L) | (long)_x) #define PHYS_ADDRESS(_n, _x) (((long)_n<<33) | (long)_x)
#define MD_BANK_SHFT 30 #define MD_BANK_SHFT 30
#else #else
#define PHYS_ADDRESS(_n, _x) (((long)_n<<38L) | (long)_x | 0x3000000000UL) #define PHYS_ADDRESS(_n, _x) (((long)_n<<38) | (long)_x | 0x3000000000UL)
#define MD_BANK_SHFT 34 #define MD_BANK_SHFT 34
#endif #endif
...@@ -94,7 +94,7 @@ GetMemBankInfo(int index) ...@@ -94,7 +94,7 @@ GetMemBankInfo(int index)
int int
IsCpuPresent(int cnode, int cpu) IsCpuPresent(int cnode, int cpu)
{ {
return sn_memmap[cnode].cpuconfig & (1<<cpu); return sn_memmap[cnode].cpuconfig & (1UL<<cpu);
} }
...@@ -142,10 +142,10 @@ int ...@@ -142,10 +142,10 @@ int
IsBankPresent(int index, node_memmap_t nmemmap) IsBankPresent(int index, node_memmap_t nmemmap)
{ {
switch (index) { switch (index) {
case 0:return nmemmap.ena0; case 0:return BankPresent(nmemmap.b0size);
case 1:return nmemmap.ena1; case 1:return BankPresent(nmemmap.b1size);
case 2:return nmemmap.ena2; case 2:return BankPresent(nmemmap.b2size);
case 3:return nmemmap.ena3; case 3:return BankPresent(nmemmap.b3size);
default:return -1 ; default:return -1 ;
} }
} }
...@@ -153,11 +153,14 @@ IsBankPresent(int index, node_memmap_t nmemmap) ...@@ -153,11 +153,14 @@ IsBankPresent(int index, node_memmap_t nmemmap)
int int
GetBankSize(int index, node_memmap_t nmemmap) GetBankSize(int index, node_memmap_t nmemmap)
{ {
/*
* Add 2 because there are 4 dimms per bank.
*/
switch (index) { switch (index) {
case 0:return (long)nmemmap.b0size + nmemmap.b0dou; case 0:return 2 + ((long)nmemmap.b0size + nmemmap.b0dou);
case 1:return (long)nmemmap.b1size + nmemmap.b1dou; case 1:return 2 + ((long)nmemmap.b1size + nmemmap.b1dou);
case 2:return (long)nmemmap.b2size + nmemmap.b2dou; case 2:return 2 + ((long)nmemmap.b2size + nmemmap.b2dou);
case 3:return (long)nmemmap.b3size + nmemmap.b3dou; case 3:return 2 + ((long)nmemmap.b3size + nmemmap.b3dou);
default:return -1 ; default:return -1 ;
} }
} }
...@@ -189,14 +192,30 @@ build_efi_memmap(void *md, int mdsize) ...@@ -189,14 +192,30 @@ build_efi_memmap(void *md, int mdsize)
for (cnode=0;cnode<numnodes;cnode++) { for (cnode=0;cnode<numnodes;cnode++) {
nasid = GetNasid(cnode) ; nasid = GetNasid(cnode) ;
membank_info = GetMemBankInfo(cnode) ; membank_info = GetMemBankInfo(cnode) ;
for (bank=0;bank<PLAT_CLUMPS_PER_NODE;bank++) { for (bank=0;bank<NR_BANKS_PER_NODE;bank++) {
if (IsBankPresent(bank, membank_info)) { if (IsBankPresent(bank, membank_info)) {
bsize = GetBankSize(bank, membank_info) ; bsize = GetBankSize(bank, membank_info) ;
paddr = PHYS_ADDRESS(nasid, (long)bank<<MD_BANK_SHFT); paddr = PHYS_ADDRESS(nasid, (long)bank<<MD_BANK_SHFT);
numbytes = BankSizeBytes(bsize); numbytes = BankSizeBytes(bsize);
#ifdef CONFIG_IA64_SGI_SN2 #ifdef CONFIG_IA64_SGI_SN2
/*
* Ignore directory.
* Shorten memory chunk by 1 page - makes a better
* testcase & is more like the real PROM.
*/
numbytes = numbytes * 31 / 32; numbytes = numbytes * 31 / 32;
#endif #endif
/*
* Only emulate the memory prom grabs
* if we have lots of memory, to allow
* us to simulate smaller memory configs than
* we can actually run on h/w. Otherwise,
* linux throws away a whole "granule".
*/
if (cnode == 0 && bank == 0 &&
numbytes > 128*1024*1024) {
numbytes -= 1000;
}
/* /*
* Check for the node 0 hole. Since banks cant * Check for the node 0 hole. Since banks cant
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
* License. See the file "COPYING" in the main directory of this archive * License. See the file "COPYING" in the main directory of this archive
* for more details. * for more details.
* *
* Copyright (C) 2000-2001 Silicon Graphics, Inc. All rights reserved. * Copyright (C) 2000-2002 Silicon Graphics, Inc. All rights reserved.
*/ */
#include <linux/config.h> #include <linux/config.h>
...@@ -71,7 +71,8 @@ typedef struct node_memmap_s ...@@ -71,7 +71,8 @@ typedef struct node_memmap_s
} node_memmap_t ; } node_memmap_t ;
#define SN2_BANK_SIZE_SHIFT (MBSHIFT+6) /* 64 MB */ #define SN2_BANK_SIZE_SHIFT (MBSHIFT+6) /* 64 MB */
#define BankSizeBytes(bsize) (1UL<<((bsize)+SN2_BANK_SIZE_SHIFT)) #define BankPresent(bsize) (bsize<6)
#define BankSizeBytes(bsize) (BankPresent(bsize) ? 1UL<<((bsize)+SN2_BANK_SIZE_SHIFT) : 0)
#endif #endif
typedef struct sn_memmap_s typedef struct sn_memmap_s
......
...@@ -180,7 +180,7 @@ initx: ...@@ -180,7 +180,7 @@ initx:
// Now call main & pass it the current LID value. // Now call main & pass it the current LID value.
alloc r0=ar.pfs,0,0,2,0 alloc r2=ar.pfs,0,0,2,0
mov r32=r26 mov r32=r26
mov r33=r8;; mov r33=r8;;
br.call.sptk.few rp=fmain br.call.sptk.few rp=fmain
......
This diff is collapsed.
/* $Id: klgraph_init.c,v 1.2 2001/12/05 16:58:41 jh Exp $ /* $Id: klgraph_init.c,v 1.1 2002/02/28 17:31:25 marcelo Exp $
* *
* This file is subject to the terms and conditions of the GNU General Public * 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 * License. See the file "COPYING" in the main directory of this archive
...@@ -49,8 +49,9 @@ void ...@@ -49,8 +49,9 @@ void
klgraph_init(void) klgraph_init(void)
{ {
#ifdef CONFIG_IA64_SGI_SN1
u64 *temp; u64 *temp;
#endif
/* /*
* Initialize some hub/xbow registers that allows access to * Initialize some hub/xbow registers that allows access to
* Xbridge etc. These are normally done in PROM. * Xbridge etc. These are normally done in PROM.
...@@ -109,6 +110,8 @@ klgraph_init(void) ...@@ -109,6 +110,8 @@ klgraph_init(void)
// [PI] *(volatile u32 *)0xc00000080f000288L = 0xba98; // [PI] *(volatile u32 *)0xc00000080f000288L = 0xba98;
#endif /* CONFIG_IA64_SGI_SN1 */ #endif /* CONFIG_IA64_SGI_SN1 */
#ifdef CONFIG_IA64_SGI_SN1
/* /*
* kldir entries initialization - mankato * kldir entries initialization - mankato
*/ */
...@@ -282,6 +285,7 @@ klgraph_init(void) ...@@ -282,6 +285,7 @@ klgraph_init(void)
convert(0x8000000000002560, 0xffffffffffffffff, 0xffffffffffffffff); convert(0x8000000000002560, 0xffffffffffffffff, 0xffffffffffffffff);
convert(0x8000000000002570, 0xffffffffffffffff, 0xffffffffffffffff); convert(0x8000000000002570, 0xffffffffffffffff, 0xffffffffffffffff);
convert(0x8000000000002580, 0x000000000000ffff, 0x0000000000000000); convert(0x8000000000002580, 0x000000000000ffff, 0x0000000000000000);
#endif
} }
...@@ -98,7 +98,7 @@ synergy_init(int nasid, int syn) ...@@ -98,7 +98,7 @@ synergy_init(int nasid, int syn)
/* /*
* Enable all FSB flashed interrupts. * Enable all FSB flashed interrupts.
* ZZZ - I'd really like defines for this...... * I'd really like defines for this......
*/ */
base = (long*)0x80000e0000000000LL; /* base of synergy regs */ base = (long*)0x80000e0000000000LL; /* base of synergy regs */
for (off = 0x2a0; off < 0x2e0; off+=8) /* offset for VEC_MASK_{0-3}_A/B */ for (off = 0x2a0; off < 0x2e0; off+=8) /* offset for VEC_MASK_{0-3}_A/B */
......
This diff is collapsed.
...@@ -192,9 +192,9 @@ struct alenlist_s { ...@@ -192,9 +192,9 @@ struct alenlist_s {
#define AL_FIXED_SIZE 0x1 /* List is pre-allocated, and of fixed size */ #define AL_FIXED_SIZE 0x1 /* List is pre-allocated, and of fixed size */
zone_t *alenlist_zone = NULL; struct zone *alenlist_zone = NULL;
zone_t *alenlist_chunk_zone = NULL; struct zone *alenlist_chunk_zone = NULL;
zone_t *alenlist_cursor_zone = NULL; struct zone *alenlist_cursor_zone = NULL;
#if DEBUG #if DEBUG
int alenlist_count=0; /* Currently allocated Lists */ int alenlist_count=0; /* Currently allocated Lists */
......
/* $Id$ /* $Id: ate_utils.c,v 1.1 2002/02/28 17:31:25 marcelo Exp $
* *
* This file is subject to the terms and conditions of the GNU General Public * 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 * License. See the file "COPYING" in the main directory of this archive
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
* License. See the file "COPYING" in the main directory of this archive * License. See the file "COPYING" in the main directory of this archive
* for more details. * for more details.
* *
* Copyright (C) 1992 - 1997, 2000-2001 Silicon Graphics, Inc. All rights reserved. * Copyright (C) 1992 - 1997, 2000-2002 Silicon Graphics, Inc. All rights reserved.
*/ */
#include <linux/config.h> #include <linux/config.h>
......
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.
/* $Id: io.c,v 1.2 2001/06/26 14:02:43 pfg Exp $ /* $Id: hub_intr.c,v 1.1 2002/02/28 17:31:25 marcelo Exp $
* *
* This file is subject to the terms and conditions of the GNU General Public * 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 * License. See the file "COPYING" in the main directory of this archive
......
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