direct-io.hg

changeset 5678:1883ec07708b

Manual merge.
author smh22@firebug.cl.cam.ac.uk
date Wed Jul 06 15:38:25 2005 +0000 (2005-07-06)
parents b3a27d7ef999 9a7d86b8147d
children b522a3a4d525
files .hgignore buildconfigs/mk.linux-2.6-xen extras/mini-os/Makefile extras/mini-os/events.c extras/mini-os/hypervisor.c extras/mini-os/include/events.h extras/mini-os/include/hypervisor.h extras/mini-os/include/lib.h extras/mini-os/include/mm.h extras/mini-os/include/os.h extras/mini-os/include/time.h extras/mini-os/include/traps.h extras/mini-os/include/types.h extras/mini-os/kernel.c extras/mini-os/time.c extras/mini-os/traps.c extras/mini-os/x86_32.S linux-2.6.11-xen-sparse/arch/xen/configs/xen_defconfig_x86_32 tools/libxc/xc_linux_build.c
line diff
     1.1 --- a/.hgignore	Wed Jul 06 15:36:57 2005 +0000
     1.2 +++ b/.hgignore	Wed Jul 06 15:38:25 2005 +0000
     1.3 @@ -51,6 +51,7 @@ extras/mini-os/mini-os\..*
     1.4  install/.*
     1.5  linux-.*-xen0/.*
     1.6  linux-.*-xenU/.*
     1.7 +linux-.*-xen/.*
     1.8  linux-.*\.patch
     1.9  linux-2\.6\.10-xen-sparse/include/asm-xen/hypervisor\.h\.smh
    1.10  linux-xen-sparse
     2.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     2.2 +++ b/buildconfigs/mk.linux-2.6-xen	Wed Jul 06 15:38:25 2005 +0000
     2.3 @@ -0,0 +1,48 @@
     2.4 +
     2.5 +OS           = linux
     2.6 +
     2.7 +LINUX_SERIES = 2.6
     2.8 +
     2.9 +EXTRAVERSION = xen
    2.10 +
    2.11 +LINUX_DIR    = $(OS)-$(LINUX_VER)-$(EXTRAVERSION)
    2.12 +
    2.13 +include buildconfigs/Rules.mk
    2.14 +
    2.15 +.PHONY: build clean delete
    2.16 +
    2.17 +# The real action starts here!
    2.18 +build: $(LINUX_DIR)/include/linux/autoconf.h
    2.19 +	if grep "^CONFIG_MODULES=" $(LINUX_DIR)/.config ; then \
    2.20 +	    $(MAKE) -C $(LINUX_DIR) ARCH=xen modules ; \
    2.21 +	    $(MAKE) -C $(LINUX_DIR) ARCH=xen INSTALL_MOD_PATH=$(DESTDIR) modules_install ; \
    2.22 +	fi
    2.23 +	$(MAKE) -C $(LINUX_DIR) ARCH=xen INSTALL_PATH=$(DESTDIR) install
    2.24 +
    2.25 +$(LINUX_DIR)/include/linux/autoconf.h: ref-$(OS)-$(LINUX_VER)/.valid-ref
    2.26 +	rm -rf $(LINUX_DIR)
    2.27 +	cp -al $(<D) $(LINUX_DIR)
    2.28 +	# Apply arch-xen patches
    2.29 +	( cd linux-$(LINUX_VER)-xen-sparse ; \
    2.30 +          ./mkbuildtree ../$(LINUX_DIR) )
    2.31 +	# Re-use config from install dir if one exits else use default config
    2.32 +	CONFIG_VERSION=$$(sed -ne 's/^EXTRAVERSION = //p' $(LINUX_DIR)/Makefile); \
    2.33 +	[ -r $(DESTDIR)/boot/config-$(LINUX_VER)$$CONFIG_VERSION-$(EXTRAVERSION) ] && \
    2.34 +	  cp $(DESTDIR)/boot/config-$(LINUX_VER)$$CONFIG_VERSION-$(EXTRAVERSION) $(LINUX_DIR)/.config \
    2.35 +	  || cp $(LINUX_DIR)/arch/xen/configs/$(EXTRAVERSION)_defconfig_$(XEN_TARGET_ARCH) \
    2.36 +		$(LINUX_DIR)/.config
    2.37 +	# Patch kernel Makefile to set EXTRAVERSION
    2.38 +	( cd $(LINUX_DIR) ; \
    2.39 +	  sed -e 's/^EXTRAVERSION.*/&$$(XENGUEST)\nXENGUEST = -$(EXTRAVERSION)/' Makefile >Mk.tmp ; \
    2.40 +	  rm -f Makefile ; mv Mk.tmp Makefile )
    2.41 +	$(MAKE) -C $(LINUX_DIR) ARCH=xen oldconfig
    2.42 +
    2.43 +config: CONFIGMODE = menuconfig
    2.44 +config: $(LINUX_DIR)/include/linux/autoconf.h
    2.45 +	$(MAKE) -C $(LINUX_DIR) ARCH=xen $(CONFIGMODE)
    2.46 +
    2.47 +clean::
    2.48 +	$(MAKE) -C $(LINUX_DIR) ARCH=xen clean
    2.49 +
    2.50 +delete: 
    2.51 +	rm -rf tmp-$(OS)-$(LINUX_VER) $(LINUX_DIR) 
     3.1 --- a/extras/mini-os/Makefile	Wed Jul 06 15:36:57 2005 +0000
     3.2 +++ b/extras/mini-os/Makefile	Wed Jul 06 15:38:25 2005 +0000
     3.3 @@ -1,11 +1,12 @@
     3.4 +debug ?= y
     3.5  
     3.6 -CC := gcc
     3.7 -LD := ld
     3.8 +include $(CURDIR)/../../Config.mk
     3.9  
    3.10 -TARGET_ARCH := $(shell uname -m | sed -e s/i.86/x86_32/)
    3.11 +# Set TARGET_ARCH
    3.12 +override TARGET_ARCH     := $(XEN_TARGET_ARCH)
    3.13  
    3.14  # NB. '-Wcast-qual' is nasty, so I omitted it.
    3.15 -CFLAGS := -fno-builtin -O3 -Wall -Ih/ -Wredundant-decls -Wno-format
    3.16 +CFLAGS := -fno-builtin -Wall -Werror -Iinclude/ -Wredundant-decls -Wno-format
    3.17  CFLAGS += -Wstrict-prototypes -Wnested-externs -Wpointer-arith -Winline
    3.18  
    3.19  ifeq ($(TARGET_ARCH),x86_32)
    3.20 @@ -19,23 +20,25 @@ CFLAGS += -fno-asynchronous-unwind-table
    3.21  LDFLAGS := -m elf_x86_64
    3.22  endif
    3.23  
    3.24 +ifeq ($(debug),y)
    3.25 +CFLAGS += -g
    3.26 +else
    3.27 +CFLAGS += -O3
    3.28 +endif
    3.29 +
    3.30  TARGET := mini-os
    3.31  
    3.32  OBJS := $(TARGET_ARCH).o
    3.33  OBJS += $(patsubst %.c,%.o,$(wildcard *.c))
    3.34  OBJS += $(patsubst %.c,%.o,$(wildcard lib/*.c))
    3.35  
    3.36 -OBJS := $(subst events.o,,$(OBJS))
    3.37 -OBJS := $(subst hypervisor.o,,$(OBJS))
    3.38 -OBJS := $(subst time.o,,$(OBJS))
    3.39 -
    3.40 -HDRS := $(wildcard h/*.h)
    3.41 -HDRS += $(wildcard h/xen-public/*.h)
    3.42 +HDRS := $(wildcard include/*.h)
    3.43 +HDRS += $(wildcard include/xen/*.h)
    3.44  
    3.45  default: $(TARGET)
    3.46  
    3.47  xen-public:
    3.48 -	[ -e h/xen-public ] || ln -sf ../../../xen/include/public h/xen-public
    3.49 +	[ -e include/xen ] || ln -sf ../../../xen/include/public include/xen
    3.50  
    3.51  $(TARGET): xen-public $(OBJS)
    3.52  	$(LD) -N -T minios-$(TARGET_ARCH).lds $(OBJS) -o $@.elf
    3.53 @@ -51,3 +54,4 @@ clean:
    3.54  
    3.55  %.o: %.S $(HDRS) Makefile
    3.56  	$(CC) $(CFLAGS) -D__ASSEMBLY__ -c $< -o $@
    3.57 +
     4.1 --- a/extras/mini-os/events.c	Wed Jul 06 15:36:57 2005 +0000
     4.2 +++ b/extras/mini-os/events.c	Wed Jul 06 15:38:25 2005 +0000
     4.3 @@ -1,20 +1,19 @@
     4.4  /* -*-  Mode:C; c-basic-offset:4; tab-width:4 -*-
     4.5   ****************************************************************************
     4.6   * (C) 2003 - Rolf Neugebauer - Intel Research Cambridge
     4.7 + * (C) 2005 - Grzegorz Milos - Intel Research Cambridge
     4.8   ****************************************************************************
     4.9   *
    4.10   *        File: events.c
    4.11   *      Author: Rolf Neugebauer (neugebar@dcs.gla.ac.uk)
    4.12 - *     Changes: 
    4.13 + *     Changes: Grzegorz Milos (gm281@cam.ac.uk)
    4.14   *              
    4.15 - *        Date: Jul 2003
    4.16 + *        Date: Jul 2003, changes Jun 2005
    4.17   * 
    4.18   * Environment: Xen Minimal OS
    4.19 - * Description: Deal with events
    4.20 + * Description: Deals with events recieved on event channels
    4.21   *
    4.22   ****************************************************************************
    4.23 - * $Id: c-insert.c,v 1.7 2002/11/08 16:04:34 rn Exp $
    4.24 - ****************************************************************************
    4.25   */
    4.26  
    4.27  #include <os.h>
    4.28 @@ -22,25 +21,25 @@
    4.29  #include <events.h>
    4.30  #include <lib.h>
    4.31  
    4.32 +#include <xen/event_channel.h>
    4.33  static ev_action_t ev_actions[NR_EVS];
    4.34 -void default_handler(int ev, struct pt_regs *regs);
    4.35 +void default_handler(u32 port, struct pt_regs *regs);
    4.36  
    4.37  
    4.38  /*
    4.39 - * demux events to different handlers
    4.40 + * Demux events to different handlers.
    4.41   */
    4.42 -unsigned int do_event(int ev, struct pt_regs *regs)
    4.43 +int do_event(u32 port, struct pt_regs *regs)
    4.44  {
    4.45      ev_action_t  *action;
    4.46  
    4.47 -    if (ev >= NR_EVS) {
    4.48 -        printk("Large event number %d\n", ev);
    4.49 +    if (port >= NR_EVS) {
    4.50 +        printk("Port number too large: %d\n", port);
    4.51          return 0;
    4.52      }
    4.53  
    4.54 -    action = &ev_actions[ev];
    4.55 +    action = &ev_actions[port];
    4.56      action->count++;
    4.57 -    ack_hypervisor_event(ev);
    4.58  
    4.59      if (!action->handler)
    4.60          goto out;
    4.61 @@ -49,45 +48,49 @@ unsigned int do_event(int ev, struct pt_
    4.62          goto out;
    4.63      
    4.64      /* call the handler */
    4.65 -    action->handler(ev, regs);
    4.66 +    action->handler(port, regs);
    4.67 +
    4.68 +	clear_evtchn(port);
    4.69      
    4.70   out:
    4.71      return 1;
    4.72  
    4.73  }
    4.74  
    4.75 -/*
    4.76 - * add a handler
    4.77 - */
    4.78 -unsigned int add_ev_action( int ev, void (*handler)(int, struct pt_regs *) )
    4.79 +int bind_virq( u32 virq, void (*handler)(int, struct pt_regs *) )
    4.80  {
    4.81 -    if (ev_actions[ev].handler) {
    4.82 -        printk ("event[%d] already handled by %p", ev, ev_actions[ev].handler);
    4.83 -        return 0;
    4.84 +	evtchn_op_t op;
    4.85 +	int ret = 0;
    4.86 +	u32 port;
    4.87 +
    4.88 +	/* Try to bind the virq to a port */
    4.89 +	op.cmd = EVTCHNOP_bind_virq;
    4.90 +	op.u.bind_virq.virq = virq;
    4.91 +
    4.92 +	if ( HYPERVISOR_event_channel_op(&op) != 0 )
    4.93 +	{
    4.94 +		ret = 1;
    4.95 +		printk("Failed to bind virtual IRQ %d\n", virq);
    4.96 +		goto out;
    4.97      }
    4.98  
    4.99 -    ev_actions[ev].handler = handler;
   4.100 -    return 1;
   4.101 -}
   4.102 +    port = op.u.bind_virq.port;
   4.103 +	
   4.104 +	if(ev_actions[port].handler)
   4.105 +        printk("WARN: Handler for port %d already registered, replacing\n",
   4.106 +				port);
   4.107  
   4.108 -unsigned int enable_ev_action( int ev )
   4.109 -{
   4.110 -    if (!ev_actions[ev].handler) {
   4.111 -        printk ("enable event[%d], no handler installed", ev);
   4.112 -        return 0;
   4.113 -    }
   4.114 -    ev_actions[ev].status &= ~EVS_DISABLED;
   4.115 -    return 1;
   4.116 -}
   4.117 -
   4.118 -unsigned int disable_ev_action( int ev )
   4.119 -{
   4.120 -    ev_actions[ev].status |= EVS_DISABLED;
   4.121 -    return 1;
   4.122 +	ev_actions[port].handler = handler;
   4.123 +	ev_actions[port].status &= ~EVS_DISABLED;
   4.124 +	
   4.125 +	/* Finally unmask the port */
   4.126 +	unmask_evtchn(port);
   4.127 +out:
   4.128 +	return ret;
   4.129  }
   4.130  
   4.131  /*
   4.132 - * initially all events are without a handler and disabled
   4.133 + * Initially all events are without a handler and disabled
   4.134   */
   4.135  void init_events(void)
   4.136  {
   4.137 @@ -101,6 +104,6 @@ void init_events(void)
   4.138      }
   4.139  }
   4.140  
   4.141 -void default_handler(int ev, struct pt_regs *regs) {
   4.142 -    printk("X[%d] ", ev);
   4.143 +void default_handler(u32 port, struct pt_regs *regs) {
   4.144 +    printk("[Port %d] - event received\n", port);
   4.145  }
     5.1 --- a/extras/mini-os/h/events.h	Wed Jul 06 15:36:57 2005 +0000
     5.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     5.3 @@ -1,53 +0,0 @@
     5.4 -/* -*-  Mode:C; c-basic-offset:4; tab-width:4 -*-
     5.5 - ****************************************************************************
     5.6 - * (C) 2003 - Rolf Neugebauer - Intel Research Cambridge
     5.7 - ****************************************************************************
     5.8 - *
     5.9 - *        File: events.h
    5.10 - *      Author: Rolf Neugebauer (neugebar@dcs.gla.ac.uk)
    5.11 - *     Changes: 
    5.12 - *              
    5.13 - *        Date: Jul 2003
    5.14 - * 
    5.15 - * Environment: Xen Minimal OS
    5.16 - * Description: deal with events
    5.17 - *
    5.18 - ****************************************************************************
    5.19 - * $Id: h-insert.h,v 1.4 2002/11/08 16:03:55 rn Exp $
    5.20 - ****************************************************************************
    5.21 - */
    5.22 -
    5.23 -#ifndef _EVENTS_H_
    5.24 -#define _EVENTS_H_
    5.25 -
    5.26 -/* _EVENT_* are defined in xen-public/xen.h  */
    5.27 -#define EV_BLKDEV _EVENT_BLKDEV
    5.28 -#define EV_TIMER  _EVENT_TIMER
    5.29 -#define EV_DIE    _EVENT_DIE
    5.30 -#define EV_DEBUG  _EVENT_DEBUG
    5.31 -#define EV_NET    _EVENT_NET
    5.32 -#define EV_PS2    _EVENT_PS2
    5.33 -
    5.34 -#define NR_EVS (sizeof(HYPERVISOR_shared_info->events) * 8)
    5.35 -
    5.36 -/* ev handler status */
    5.37 -#define EVS_INPROGRESS	1	/* Event handler active - do not enter! */
    5.38 -#define EVS_DISABLED	2	/* Event disabled - do not enter! */
    5.39 -#define EVS_PENDING	    4	/* Event pending - replay on enable */
    5.40 -#define EVS_REPLAY	    8	/* Event has been replayed but not acked yet */
    5.41 -
    5.42 -/* this represents a event handler. Chaining or sharing is not allowed */
    5.43 -typedef struct _ev_action_t {
    5.44 -	void (*handler)(int, struct pt_regs *);
    5.45 -    unsigned int status;		/* IRQ status */
    5.46 -    u32 count;
    5.47 -} ev_action_t;
    5.48 -
    5.49 -/* prototypes */
    5.50 -unsigned int do_event(int ev, struct pt_regs *regs);
    5.51 -unsigned int add_ev_action( int ev, void (*handler)(int, struct pt_regs *) );
    5.52 -unsigned int enable_ev_action( int ev );
    5.53 -unsigned int disable_ev_action( int ev );
    5.54 -void init_events(void);
    5.55 -
    5.56 -#endif /* _EVENTS_H_ */
     6.1 --- a/extras/mini-os/h/hypervisor.h	Wed Jul 06 15:36:57 2005 +0000
     6.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     6.3 @@ -1,316 +0,0 @@
     6.4 -/******************************************************************************
     6.5 - * hypervisor.h
     6.6 - * 
     6.7 - * Linux-specific hypervisor handling.
     6.8 - * 
     6.9 - * Copyright (c) 2002, K A Fraser
    6.10 - */
    6.11 -
    6.12 -#ifndef _HYPERVISOR_H_
    6.13 -#define _HYPERVISOR_H_
    6.14 -
    6.15 -#include <types.h>
    6.16 -
    6.17 -#include <xen-public/xen.h>
    6.18 -#include <xen-public/io/domain_controller.h>
    6.19 -
    6.20 -/*
    6.21 - * a placeholder for the start of day information passed up from the hypervisor
    6.22 - */
    6.23 -union start_info_union
    6.24 -{
    6.25 -    start_info_t start_info;
    6.26 -    char padding[512];
    6.27 -};
    6.28 -extern union start_info_union start_info_union;
    6.29 -#define start_info (start_info_union.start_info)
    6.30 -
    6.31 -
    6.32 -/* hypervisor.c */
    6.33 -void do_hypervisor_callback(struct pt_regs *regs);
    6.34 -void enable_hypervisor_event(unsigned int ev);
    6.35 -void disable_hypervisor_event(unsigned int ev);
    6.36 -void ack_hypervisor_event(unsigned int ev);
    6.37 -
    6.38 -/*
    6.39 - * Assembler stubs for hyper-calls.
    6.40 - */
    6.41 -
    6.42 -#ifdef __i386__
    6.43 -#define _a1 "b"
    6.44 -#define _a2 "c"
    6.45 -#define _a3 "d"
    6.46 -#define _a4 "S"
    6.47 -#else
    6.48 -#define _a1 "D"
    6.49 -#define _a2 "S"
    6.50 -#define _a3 "d"
    6.51 -#define _a4 "b"
    6.52 -#endif
    6.53 -
    6.54 -static __inline__ int HYPERVISOR_set_trap_table(trap_info_t *table)
    6.55 -{
    6.56 -    int ret;
    6.57 -    __asm__ __volatile__ (
    6.58 -        TRAP_INSTR
    6.59 -        : "=a" (ret) : "0" (__HYPERVISOR_set_trap_table),
    6.60 -        _a1 (table) : "memory" );
    6.61 -
    6.62 -    return ret;
    6.63 -}
    6.64 -
    6.65 -static __inline__ int HYPERVISOR_mmu_update(mmu_update_t *req, 
    6.66 -                                            int count, 
    6.67 -                                            int *success_count)
    6.68 -{
    6.69 -    int ret;
    6.70 -    __asm__ __volatile__ (
    6.71 -        TRAP_INSTR
    6.72 -        : "=a" (ret) : "0" (__HYPERVISOR_mmu_update), 
    6.73 -        _a1 (req), _a2 (count), _a3 (success_count)  : "memory" );
    6.74 -
    6.75 -    return ret;
    6.76 -}
    6.77 -
    6.78 -static __inline__ int HYPERVISOR_set_gdt(unsigned long *frame_list, int entries)
    6.79 -{
    6.80 -    int ret;
    6.81 -    __asm__ __volatile__ (
    6.82 -        TRAP_INSTR
    6.83 -        : "=a" (ret) : "0" (__HYPERVISOR_set_gdt), 
    6.84 -        _a1 (frame_list), _a2 (entries) : "memory" );
    6.85 -
    6.86 -
    6.87 -    return ret;
    6.88 -}
    6.89 -
    6.90 -static __inline__ int HYPERVISOR_stack_switch(unsigned long ss, unsigned long esp)
    6.91 -{
    6.92 -    int ret;
    6.93 -    __asm__ __volatile__ (
    6.94 -        TRAP_INSTR
    6.95 -        : "=a" (ret) : "0" (__HYPERVISOR_stack_switch),
    6.96 -        _a1 (ss), _a2 (esp) : "memory" );
    6.97 -
    6.98 -    return ret;
    6.99 -}
   6.100 -
   6.101 -#ifdef __i386__
   6.102 -static __inline__ int HYPERVISOR_set_callbacks(
   6.103 -    unsigned long event_selector, unsigned long event_address,
   6.104 -    unsigned long failsafe_selector, unsigned long failsafe_address)
   6.105 -{
   6.106 -    int ret;
   6.107 -    __asm__ __volatile__ (
   6.108 -        TRAP_INSTR
   6.109 -        : "=a" (ret) : "0" (__HYPERVISOR_set_callbacks),
   6.110 -        _a1 (event_selector), _a2 (event_address), 
   6.111 -        _a3 (failsafe_selector), _a4 (failsafe_address) : "memory" );
   6.112 -
   6.113 -    return ret;
   6.114 -}
   6.115 -#else
   6.116 -static __inline__ int HYPERVISOR_set_callbacks(
   6.117 -    unsigned long event_address,
   6.118 -    unsigned long failsafe_address,
   6.119 -    unsigned long syscall_address)
   6.120 -{
   6.121 -    int ret;
   6.122 -    __asm__ __volatile__ (
   6.123 -        TRAP_INSTR
   6.124 -        : "=a" (ret) : "0" (__HYPERVISOR_set_callbacks),
   6.125 -        _a1 (event_address), _a2 (failsafe_address), 
   6.126 -        _a3 (syscall_address) : "memory" );
   6.127 -
   6.128 -    return ret;
   6.129 -}
   6.130 -#endif
   6.131 -
   6.132 -static __inline__ int
   6.133 -HYPERVISOR_fpu_taskswitch(
   6.134 -    int set)
   6.135 -{
   6.136 -    int ret;
   6.137 -    unsigned long ign;
   6.138 -
   6.139 -    __asm__ __volatile__ (
   6.140 -        TRAP_INSTR
   6.141 -        : "=a" (ret), "=b" (ign)
   6.142 -        : "0" (__HYPERVISOR_fpu_taskswitch), "1" (set)
   6.143 -        : "memory" );
   6.144 -
   6.145 -    return ret;
   6.146 -}
   6.147 -
   6.148 -static __inline__ int HYPERVISOR_yield(void)
   6.149 -{
   6.150 -    int ret;
   6.151 -    __asm__ __volatile__ (
   6.152 -        TRAP_INSTR
   6.153 -        : "=a" (ret) : "0" (__HYPERVISOR_sched_op),
   6.154 -        _a1 (SCHEDOP_yield) : "memory" );
   6.155 -
   6.156 -    return ret;
   6.157 -}
   6.158 -
   6.159 -static __inline__ int HYPERVISOR_block(void)
   6.160 -{
   6.161 -    int ret;
   6.162 -    __asm__ __volatile__ (
   6.163 -        TRAP_INSTR
   6.164 -        : "=a" (ret) : "0" (__HYPERVISOR_sched_op),
   6.165 -        _a1 (SCHEDOP_block) : "memory" );
   6.166 -
   6.167 -    return ret;
   6.168 -}
   6.169 -
   6.170 -static __inline__ int HYPERVISOR_shutdown(void)
   6.171 -{
   6.172 -    int ret;
   6.173 -    __asm__ __volatile__ (
   6.174 -        TRAP_INSTR
   6.175 -        : "=a" (ret) : "0" (__HYPERVISOR_sched_op),
   6.176 -        _a1 (SCHEDOP_shutdown | (SHUTDOWN_poweroff << SCHEDOP_reasonshift))
   6.177 -        : "memory" );
   6.178 -
   6.179 -    return ret;
   6.180 -}
   6.181 -
   6.182 -static __inline__ int HYPERVISOR_reboot(void)
   6.183 -{
   6.184 -    int ret;
   6.185 -    __asm__ __volatile__ (
   6.186 -        TRAP_INSTR
   6.187 -        : "=a" (ret) : "0" (__HYPERVISOR_sched_op),
   6.188 -        _a1 (SCHEDOP_shutdown | (SHUTDOWN_reboot << SCHEDOP_reasonshift))
   6.189 -        : "memory" );
   6.190 -
   6.191 -    return ret;
   6.192 -}
   6.193 -
   6.194 -static __inline__ int HYPERVISOR_suspend(unsigned long srec)
   6.195 -{
   6.196 -    int ret;
   6.197 -    /* NB. On suspend, control software expects a suspend record in %esi. */
   6.198 -    __asm__ __volatile__ (
   6.199 -        TRAP_INSTR
   6.200 -        : "=a" (ret) : "0" (__HYPERVISOR_sched_op),
   6.201 -        _a1 (SCHEDOP_shutdown | (SHUTDOWN_suspend << SCHEDOP_reasonshift)), 
   6.202 -        "S" (srec) : "memory" );
   6.203 -
   6.204 -    return ret;
   6.205 -}
   6.206 -
   6.207 -static __inline__ long HYPERVISOR_set_timer_op(void *timer_arg)
   6.208 -{
   6.209 -    int ret;
   6.210 -    __asm__ __volatile__ (
   6.211 -        TRAP_INSTR
   6.212 -        : "=a" (ret) : "0" (__HYPERVISOR_set_timer_op),
   6.213 -        _a1 (timer_arg) : "memory" );
   6.214 -
   6.215 -    return ret;
   6.216 -}
   6.217 -
   6.218 -static __inline__ int HYPERVISOR_dom0_op(void *dom0_op)
   6.219 -{
   6.220 -    int ret;
   6.221 -    __asm__ __volatile__ (
   6.222 -        TRAP_INSTR
   6.223 -        : "=a" (ret) : "0" (__HYPERVISOR_dom0_op),
   6.224 -        _a1 (dom0_op) : "memory" );
   6.225 -
   6.226 -    return ret;
   6.227 -}
   6.228 -
   6.229 -static __inline__ int HYPERVISOR_set_debugreg(int reg, unsigned long value)
   6.230 -{
   6.231 -    int ret;
   6.232 -    __asm__ __volatile__ (
   6.233 -        TRAP_INSTR
   6.234 -        : "=a" (ret) : "0" (__HYPERVISOR_set_debugreg),
   6.235 -        _a1 (reg), _a2 (value) : "memory" );
   6.236 -
   6.237 -    return ret;
   6.238 -}
   6.239 -
   6.240 -static __inline__ unsigned long HYPERVISOR_get_debugreg(int reg)
   6.241 -{
   6.242 -    unsigned long ret;
   6.243 -    __asm__ __volatile__ (
   6.244 -        TRAP_INSTR
   6.245 -        : "=a" (ret) : "0" (__HYPERVISOR_get_debugreg),
   6.246 -        _a1 (reg) : "memory" );
   6.247 -
   6.248 -    return ret;
   6.249 -}
   6.250 -
   6.251 -static __inline__ int HYPERVISOR_update_descriptor(
   6.252 -    unsigned long pa, unsigned long word1, unsigned long word2)
   6.253 -{
   6.254 -    int ret;
   6.255 -    __asm__ __volatile__ (
   6.256 -        TRAP_INSTR
   6.257 -        : "=a" (ret) : "0" (__HYPERVISOR_update_descriptor), 
   6.258 -        _a1 (pa), _a2 (word1), _a3 (word2) : "memory" );
   6.259 -
   6.260 -    return ret;
   6.261 -}
   6.262 -
   6.263 -static __inline__ int HYPERVISOR_dom_mem_op(void *dom_mem_op)
   6.264 -{
   6.265 -    int ret;
   6.266 -    __asm__ __volatile__ (
   6.267 -        TRAP_INSTR
   6.268 -        : "=a" (ret) : "0" (__HYPERVISOR_dom_mem_op),
   6.269 -        _a1 (dom_mem_op) : "memory" );
   6.270 -
   6.271 -    return ret;
   6.272 -}
   6.273 -
   6.274 -static __inline__ int HYPERVISOR_multicall(void *call_list, int nr_calls)
   6.275 -{
   6.276 -    int ret;
   6.277 -    __asm__ __volatile__ (
   6.278 -        TRAP_INSTR
   6.279 -        : "=a" (ret) : "0" (__HYPERVISOR_multicall),
   6.280 -        _a1 (call_list), _a2 (nr_calls) : "memory" );
   6.281 -
   6.282 -    return ret;
   6.283 -}
   6.284 -
   6.285 -static __inline__ int HYPERVISOR_update_va_mapping(
   6.286 -    unsigned long page_nr, unsigned long new_val, unsigned long flags)
   6.287 -{
   6.288 -    int ret;
   6.289 -    __asm__ __volatile__ (
   6.290 -        TRAP_INSTR
   6.291 -        : "=a" (ret) : "0" (__HYPERVISOR_update_va_mapping), 
   6.292 -        _a1 (page_nr), _a2 (new_val), _a3 (flags) : "memory" );
   6.293 -
   6.294 -    return ret;
   6.295 -}
   6.296 -
   6.297 -static __inline__ int HYPERVISOR_xen_version(int cmd)
   6.298 -{
   6.299 -    int ret;
   6.300 -    __asm__ __volatile__ (
   6.301 -        TRAP_INSTR
   6.302 -        : "=a" (ret) : "0" (__HYPERVISOR_xen_version), 
   6.303 -        _a1 (cmd) : "memory" );
   6.304 -
   6.305 -    return ret;
   6.306 -}
   6.307 -
   6.308 -static __inline__ int HYPERVISOR_console_io(int cmd, int count, char *str)
   6.309 -{
   6.310 -    int ret;
   6.311 -    __asm__ __volatile__ (
   6.312 -        TRAP_INSTR
   6.313 -        : "=a" (ret) : "0" (__HYPERVISOR_console_io),
   6.314 -        _a1 (cmd), _a2 (count), _a3 (str) : "memory" );
   6.315 -
   6.316 -    return ret;
   6.317 -}
   6.318 -
   6.319 -#endif /* __HYPERVISOR_H__ */
     7.1 --- a/extras/mini-os/h/lib.h	Wed Jul 06 15:36:57 2005 +0000
     7.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     7.3 @@ -1,114 +0,0 @@
     7.4 -/* -*-  Mode:C; c-basic-offset:4; tab-width:4 -*-
     7.5 - ****************************************************************************
     7.6 - * (C) 2003 - Rolf Neugebauer - Intel Research Cambridge
     7.7 - ****************************************************************************
     7.8 - *
     7.9 - *        File: lib.h
    7.10 - *      Author: Rolf Neugebauer (neugebar@dcs.gla.ac.uk)
    7.11 - *     Changes: 
    7.12 - *              
    7.13 - *        Date: Aug 2003
    7.14 - * 
    7.15 - * Environment: Xen Minimal OS
    7.16 - * Description: Random useful library functions, contains some freebsd stuff
    7.17 - *
    7.18 - ****************************************************************************
    7.19 - * $Id: h-insert.h,v 1.4 2002/11/08 16:03:55 rn Exp $
    7.20 - ****************************************************************************
    7.21 - *
    7.22 - *-
    7.23 - * Copyright (c) 1991, 1993
    7.24 - *      The Regents of the University of California.  All rights reserved.
    7.25 - *
    7.26 - * Redistribution and use in source and binary forms, with or without
    7.27 - * modification, are permitted provided that the following conditions
    7.28 - * are met:
    7.29 - * 1. Redistributions of source code must retain the above copyright
    7.30 - *    notice, this list of conditions and the following disclaimer.
    7.31 - * 2. Redistributions in binary form must reproduce the above copyright
    7.32 - *    notice, this list of conditions and the following disclaimer in the
    7.33 - *    documentation and/or other materials provided with the distribution.
    7.34 - * 3. All advertising materials mentioning features or use of this software
    7.35 - *    must display the following acknowledgement:
    7.36 - *      This product includes software developed by the University of
    7.37 - *      California, Berkeley and its contributors.
    7.38 - * 4. Neither the name of the University nor the names of its contributors
    7.39 - *    may be used to endorse or promote products derived from this software
    7.40 - *    without specific prior written permission.
    7.41 - *
    7.42 - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
    7.43 - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    7.44 - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    7.45 - * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
    7.46 - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
    7.47 - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
    7.48 - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
    7.49 - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
    7.50 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
    7.51 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    7.52 - * SUCH DAMAGE.
    7.53 - *
    7.54 - *      @(#)stdarg.h    8.1 (Berkeley) 6/10/93
    7.55 - * $FreeBSD: src/sys/i386/include/stdarg.h,v 1.10 1999/08/28 00:44:26 peter Exp $
    7.56 - */
    7.57 -
    7.58 -#ifndef _LIB_H_
    7.59 -#define _LIB_H_
    7.60 -
    7.61 -#include <stdarg.h>
    7.62 -
    7.63 -/* printing */
    7.64 -#define printk  printf
    7.65 -#define kprintf printf
    7.66 -int printf(const char *fmt, ...);
    7.67 -int vprintf(const char *fmt, va_list ap);
    7.68 -int sprintf(char *buf, const char *cfmt, ...);
    7.69 -int vsprintf(char *buf, const char *cfmt, va_list ap);
    7.70 -
    7.71 -/* string and memory manipulation */
    7.72 -int    memcmp(const void *cs, const void *ct, size_t count);
    7.73 -void  *memcpy(void *dest, const void *src, size_t count);
    7.74 -int    strncmp(const char *cs, const char *ct, size_t count);
    7.75 -int    strcmp(const char *cs, const char *ct);
    7.76 -char  *strcpy(char *dest, const char *src);
    7.77 -char  *strncpy(char *dest, const char *src, size_t count);
    7.78 -void  *memset(void *s,int c, size_t count);
    7.79 -size_t strnlen(const char *s, size_t count);
    7.80 -size_t strlen(const char *s);
    7.81 -char  *strchr(const char *s, int c);
    7.82 -char  *strstr(const char *s1, const char *s2);
    7.83 -
    7.84 -
    7.85 -/* dlmalloc functions */
    7.86 -struct mallinfo {
    7.87 -  int arena;    /* non-mmapped space allocated from system */
    7.88 -  int ordblks;  /* number of free chunks */
    7.89 -  int smblks;   /* number of fastbin blocks */
    7.90 -  int hblks;    /* number of mmapped regions */
    7.91 -  int hblkhd;   /* space in mmapped regions */
    7.92 -  int usmblks;  /* maximum total allocated space */
    7.93 -  int fsmblks;  /* space available in freed fastbin blocks */
    7.94 -  int uordblks; /* total allocated space */
    7.95 -  int fordblks; /* total free space */
    7.96 -  int keepcost; /* top-most, releasable (via malloc_trim) space */
    7.97 -};
    7.98 -
    7.99 -void *malloc(size_t n);
   7.100 -void *calloc(size_t n_elements, size_t element_size);
   7.101 -void  free(void* p);
   7.102 -void *realloc(void* p, size_t n);
   7.103 -void *memalign(size_t alignment, size_t n);
   7.104 -void *valloc(size_t n);
   7.105 -struct mallinfo mallinfo(void);
   7.106 -int  mallopt(int parameter_number, int parameter_value);
   7.107 -
   7.108 -void **independent_calloc(size_t n_elements, size_t size, void* chunks[]);
   7.109 -void **independent_comalloc(size_t n_elements, size_t sizes[], void* chunks[]);
   7.110 -void *pvalloc(size_t n);
   7.111 -void cfree(void* p);
   7.112 -int malloc_trim(size_t pad);
   7.113 -size_t malloc_usable_size(void* p);
   7.114 -void malloc_stats(void);
   7.115 -
   7.116 -
   7.117 -#endif /* _LIB_H_ */
     8.1 --- a/extras/mini-os/h/mm.h	Wed Jul 06 15:36:57 2005 +0000
     8.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     8.3 @@ -1,111 +0,0 @@
     8.4 -/* -*-  Mode:C; c-basic-offset:4; tab-width:4 -*-
     8.5 - *
     8.6 - * (C) 2003 - Rolf Neugebauer - Intel Research Cambridge
     8.7 - * Copyright (c) 2005, Keir A Fraser
     8.8 - *
     8.9 - * Permission is hereby granted, free of charge, to any person obtaining a copy
    8.10 - * of this software and associated documentation files (the "Software"), to
    8.11 - * deal in the Software without restriction, including without limitation the
    8.12 - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
    8.13 - * sell copies of the Software, and to permit persons to whom the Software is
    8.14 - * furnished to do so, subject to the following conditions:
    8.15 - * 
    8.16 - * The above copyright notice and this permission notice shall be included in
    8.17 - * all copies or substantial portions of the Software.
    8.18 - * 
    8.19 - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
    8.20 - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
    8.21 - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
    8.22 - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
    8.23 - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 
    8.24 - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 
    8.25 - * DEALINGS IN THE SOFTWARE.
    8.26 - */
    8.27 -
    8.28 -#ifndef _MM_H_
    8.29 -#define _MM_H_
    8.30 -
    8.31 -#ifdef __x86_64__
    8.32 -
    8.33 -#define L1_PAGETABLE_SHIFT      12
    8.34 -#define L2_PAGETABLE_SHIFT      21
    8.35 -#define L3_PAGETABLE_SHIFT      30
    8.36 -#define L4_PAGETABLE_SHIFT      39
    8.37 -
    8.38 -#define L1_PAGETABLE_ENTRIES    512
    8.39 -#define L2_PAGETABLE_ENTRIES    512
    8.40 -#define L3_PAGETABLE_ENTRIES    512
    8.41 -#define L4_PAGETABLE_ENTRIES    512
    8.42 -
    8.43 -/* These are page-table limitations. Current CPUs support only 40-bit phys. */
    8.44 -#define PADDR_BITS              52
    8.45 -#define VADDR_BITS              48
    8.46 -#define PADDR_MASK              ((1UL << PADDR_BITS)-1)
    8.47 -#define VADDR_MASK              ((1UL << VADDR_BITS)-1)
    8.48 -
    8.49 -#define pte_to_mfn(_pte) (((_pte) & (PADDR_MASK&PAGE_MASK)) >> PAGE_SHIFT)
    8.50 -
    8.51 -/* Given a virtual address, get an entry offset into a page table. */
    8.52 -#define l1_table_offset(_a) \
    8.53 -  (((_a) >> L1_PAGETABLE_SHIFT) & (L1_PAGETABLE_ENTRIES - 1))
    8.54 -#define l2_table_offset(_a) \
    8.55 -  (((_a) >> L2_PAGETABLE_SHIFT) & (L2_PAGETABLE_ENTRIES - 1))
    8.56 -#define l3_table_offset(_a) \
    8.57 -  (((_a) >> L3_PAGETABLE_SHIFT) & (L3_PAGETABLE_ENTRIES - 1))
    8.58 -#define l4_table_offset(_a) \
    8.59 -  (((_a) >> L4_PAGETABLE_SHIFT) & (L4_PAGETABLE_ENTRIES - 1))
    8.60 -#endif
    8.61 -
    8.62 -#define _PAGE_PRESENT  0x001UL
    8.63 -#define _PAGE_RW       0x002UL
    8.64 -#define _PAGE_USER     0x004UL
    8.65 -#define _PAGE_PWT      0x008UL
    8.66 -#define _PAGE_PCD      0x010UL
    8.67 -#define _PAGE_ACCESSED 0x020UL
    8.68 -#define _PAGE_DIRTY    0x040UL
    8.69 -#define _PAGE_PAT      0x080UL
    8.70 -#define _PAGE_PSE      0x080UL
    8.71 -#define _PAGE_GLOBAL   0x100UL
    8.72 -
    8.73 -#define PAGE_SHIFT      12
    8.74 -#define PAGE_SIZE       (1UL << PAGE_SHIFT)
    8.75 -#define PAGE_MASK       (~(PAGE_SIZE-1))
    8.76 -
    8.77 -#define PFN_UP(x)	(((x) + PAGE_SIZE-1) >> PAGE_SHIFT)
    8.78 -#define PFN_DOWN(x)	((x) >> PAGE_SHIFT)
    8.79 -#define PFN_PHYS(x)	((x) << PAGE_SHIFT)
    8.80 -
    8.81 -/* to align the pointer to the (next) page boundary */
    8.82 -#define PAGE_ALIGN(addr)        (((addr)+PAGE_SIZE-1)&PAGE_MASK)
    8.83 -
    8.84 -extern unsigned long *phys_to_machine_mapping;
    8.85 -#define pfn_to_mfn(_pfn) (phys_to_machine_mapping[(_pfn)])
    8.86 -#define mfn_to_pfn(_mfn) (machine_to_phys_mapping[(_mfn)])
    8.87 -static __inline__ unsigned long phys_to_machine(unsigned long phys)
    8.88 -{
    8.89 -    unsigned long machine = pfn_to_mfn(phys >> PAGE_SHIFT);
    8.90 -    machine = (machine << PAGE_SHIFT) | (phys & ~PAGE_MASK);
    8.91 -    return machine;
    8.92 -}
    8.93 -static __inline__ unsigned long machine_to_phys(unsigned long machine)
    8.94 -{
    8.95 -    unsigned long phys = mfn_to_pfn(machine >> PAGE_SHIFT);
    8.96 -    phys = (phys << PAGE_SHIFT) | (machine & ~PAGE_MASK);
    8.97 -    return phys;
    8.98 -}
    8.99 -
   8.100 -#ifdef __x86_64__
   8.101 -#define VIRT_START              0xFFFFFFFF00000000UL
   8.102 -#else
   8.103 -#define VIRT_START              0xC0000000UL
   8.104 -#endif
   8.105 -
   8.106 -#define to_phys(x)                 ((unsigned long)(x)-VIRT_START)
   8.107 -#define to_virt(x)                 ((void *)((unsigned long)(x)+VIRT_START))
   8.108 -#define __va to_virt
   8.109 -#define __pa to_phys
   8.110 -
   8.111 -void init_mm(void);
   8.112 -unsigned long alloc_pages(int order);
   8.113 -
   8.114 -#endif /* _MM_H_ */
     9.1 --- a/extras/mini-os/h/os.h	Wed Jul 06 15:36:57 2005 +0000
     9.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     9.3 @@ -1,280 +0,0 @@
     9.4 -/******************************************************************************
     9.5 - * os.h
     9.6 - * 
     9.7 - * random collection of macros and definition
     9.8 - */
     9.9 -
    9.10 -#ifndef _OS_H_
    9.11 -#define _OS_H_
    9.12 -
    9.13 -#define NULL 0
    9.14 -
    9.15 -#if __GNUC__ == 2 && __GNUC_MINOR__ < 96
    9.16 -#define __builtin_expect(x, expected_value) (x)
    9.17 -#endif
    9.18 -#define unlikely(x)  __builtin_expect((x),0)
    9.19 -
    9.20 -#define smp_processor_id() 0
    9.21 -#define preempt_disable() ((void)0)
    9.22 -#define preempt_enable() ((void)0)
    9.23 -
    9.24 -#define force_evtchn_callback() ((void)HYPERVISOR_xen_version(0))
    9.25 -
    9.26 -#ifndef __ASSEMBLY__
    9.27 -#include <types.h>
    9.28 -#endif
    9.29 -#include <xen-public/xen.h>
    9.30 -
    9.31 -#define __KERNEL_CS  FLAT_KERNEL_CS
    9.32 -#define __KERNEL_DS  FLAT_KERNEL_DS
    9.33 -#define __KERNEL_SS  FLAT_KERNEL_SS
    9.34 -
    9.35 -#define TRAP_divide_error      0
    9.36 -#define TRAP_debug             1
    9.37 -#define TRAP_nmi               2
    9.38 -#define TRAP_int3              3
    9.39 -#define TRAP_overflow          4
    9.40 -#define TRAP_bounds            5
    9.41 -#define TRAP_invalid_op        6
    9.42 -#define TRAP_no_device         7
    9.43 -#define TRAP_double_fault      8
    9.44 -#define TRAP_copro_seg         9
    9.45 -#define TRAP_invalid_tss      10
    9.46 -#define TRAP_no_segment       11
    9.47 -#define TRAP_stack_error      12
    9.48 -#define TRAP_gp_fault         13
    9.49 -#define TRAP_page_fault       14
    9.50 -#define TRAP_spurious_int     15
    9.51 -#define TRAP_copro_error      16
    9.52 -#define TRAP_alignment_check  17
    9.53 -#define TRAP_machine_check    18
    9.54 -#define TRAP_simd_error       19
    9.55 -#define TRAP_deferred_nmi     31
    9.56 -
    9.57 -/* Everything below this point is not included by assembler (.S) files. */
    9.58 -#ifndef __ASSEMBLY__
    9.59 -
    9.60 -#define pt_regs xen_regs
    9.61 -
    9.62 -void trap_init(void);
    9.63 -void dump_regs(struct pt_regs *regs);
    9.64 -
    9.65 -/* 
    9.66 - * The use of 'barrier' in the following reflects their use as local-lock
    9.67 - * operations. Reentrancy must be prevented (e.g., __cli()) /before/ following
    9.68 - * critical operations are executed. All critical operations must complete
    9.69 - * /before/ reentrancy is permitted (e.g., __sti()). Alpha architecture also
    9.70 - * includes these barriers, for example.
    9.71 - */
    9.72 -
    9.73 -#define __cli()								\
    9.74 -do {									\
    9.75 -	vcpu_info_t *_vcpu;						\
    9.76 -	preempt_disable();						\
    9.77 -	_vcpu = &HYPERVISOR_shared_info->vcpu_data[smp_processor_id()];	\
    9.78 -	_vcpu->evtchn_upcall_mask = 1;					\
    9.79 -	preempt_enable_no_resched();					\
    9.80 -	barrier();							\
    9.81 -} while (0)
    9.82 -
    9.83 -#define __sti()								\
    9.84 -do {									\
    9.85 -	vcpu_info_t *_vcpu;						\
    9.86 -	barrier();							\
    9.87 -	preempt_disable();						\
    9.88 -	_vcpu = &HYPERVISOR_shared_info->vcpu_data[smp_processor_id()];	\
    9.89 -	_vcpu->evtchn_upcall_mask = 0;					\
    9.90 -	barrier(); /* unmask then check (avoid races) */		\
    9.91 -	if ( unlikely(_vcpu->evtchn_upcall_pending) )			\
    9.92 -		force_evtchn_callback();				\
    9.93 -	preempt_enable();						\
    9.94 -} while (0)
    9.95 -
    9.96 -#define __save_flags(x)							\
    9.97 -do {									\
    9.98 -	vcpu_info_t *_vcpu;						\
    9.99 -	_vcpu = &HYPERVISOR_shared_info->vcpu_data[smp_processor_id()];	\
   9.100 -	(x) = _vcpu->evtchn_upcall_mask;				\
   9.101 -} while (0)
   9.102 -
   9.103 -#define __restore_flags(x)						\
   9.104 -do {									\
   9.105 -	vcpu_info_t *_vcpu;						\
   9.106 -	barrier();							\
   9.107 -	preempt_disable();						\
   9.108 -	_vcpu = &HYPERVISOR_shared_info->vcpu_data[smp_processor_id()];	\
   9.109 -	if ((_vcpu->evtchn_upcall_mask = (x)) == 0) {			\
   9.110 -		barrier(); /* unmask then check (avoid races) */	\
   9.111 -		if ( unlikely(_vcpu->evtchn_upcall_pending) )		\
   9.112 -			force_evtchn_callback();			\
   9.113 -		preempt_enable();					\
   9.114 -	} else								\
   9.115 -		preempt_enable_no_resched();				\
   9.116 -} while (0)
   9.117 -
   9.118 -#define safe_halt()		((void)0)
   9.119 -
   9.120 -#define __save_and_cli(x)						\
   9.121 -do {									\
   9.122 -	vcpu_info_t *_vcpu;						\
   9.123 -	preempt_disable();						\
   9.124 -	_vcpu = &HYPERVISOR_shared_info->vcpu_data[smp_processor_id()];	\
   9.125 -	(x) = _vcpu->evtchn_upcall_mask;				\
   9.126 -	_vcpu->evtchn_upcall_mask = 1;					\
   9.127 -	preempt_enable_no_resched();					\
   9.128 -	barrier();							\
   9.129 -} while (0)
   9.130 -
   9.131 -#define local_irq_save(x)	__save_and_cli(x)
   9.132 -#define local_irq_restore(x)	__restore_flags(x)
   9.133 -#define local_save_flags(x)	__save_flags(x)
   9.134 -#define local_irq_disable()	__cli()
   9.135 -#define local_irq_enable()	__sti()
   9.136 -
   9.137 -#define irqs_disabled()			\
   9.138 -    HYPERVISOR_shared_info->vcpu_data[smp_processor_id()].evtchn_upcall_mask
   9.139 -
   9.140 -/* This is a barrier for the compiler only, NOT the processor! */
   9.141 -#define barrier() __asm__ __volatile__("": : :"memory")
   9.142 -
   9.143 -#define LOCK_PREFIX ""
   9.144 -#define LOCK ""
   9.145 -#define ADDR (*(volatile long *) addr)
   9.146 -/*
   9.147 - * Make sure gcc doesn't try to be clever and move things around
   9.148 - * on us. We need to use _exactly_ the address the user gave us,
   9.149 - * not some alias that contains the same information.
   9.150 - */
   9.151 -typedef struct { volatile int counter; } atomic_t;
   9.152 -
   9.153 -
   9.154 -#define xchg(ptr,v) \
   9.155 -        ((__typeof__(*(ptr)))__xchg((unsigned long)(v),(ptr),sizeof(*(ptr))))
   9.156 -struct __xchg_dummy { unsigned long a[100]; };
   9.157 -#define __xg(x) ((volatile struct __xchg_dummy *)(x))
   9.158 -static __inline__ unsigned long __xchg(unsigned long x, volatile void * ptr,
   9.159 -                                   int size)
   9.160 -{
   9.161 -    switch (size) {
   9.162 -    case 1:
   9.163 -        __asm__ __volatile__("xchgb %b0,%1"
   9.164 -                             :"=q" (x)
   9.165 -                             :"m" (*__xg(ptr)), "0" (x)
   9.166 -                             :"memory");
   9.167 -        break;
   9.168 -    case 2:
   9.169 -        __asm__ __volatile__("xchgw %w0,%1"
   9.170 -                             :"=r" (x)
   9.171 -                             :"m" (*__xg(ptr)), "0" (x)
   9.172 -                             :"memory");
   9.173 -        break;
   9.174 -    case 4:
   9.175 -        __asm__ __volatile__("xchgl %0,%1"
   9.176 -                             :"=r" (x)
   9.177 -                             :"m" (*__xg(ptr)), "0" (x)
   9.178 -                             :"memory");
   9.179 -        break;
   9.180 -    }
   9.181 -    return x;
   9.182 -}
   9.183 -
   9.184 -/**
   9.185 - * test_and_clear_bit - Clear a bit and return its old value
   9.186 - * @nr: Bit to set
   9.187 - * @addr: Address to count from
   9.188 - *
   9.189 - * This operation is atomic and cannot be reordered.  
   9.190 - * It also implies a memory barrier.
   9.191 - */
   9.192 -static __inline__ int test_and_clear_bit(int nr, volatile void * addr)
   9.193 -{
   9.194 -        int oldbit;
   9.195 -
   9.196 -        __asm__ __volatile__( LOCK_PREFIX
   9.197 -                "btrl %2,%1\n\tsbbl %0,%0"
   9.198 -                :"=r" (oldbit),"=m" (ADDR)
   9.199 -                :"Ir" (nr) : "memory");
   9.200 -        return oldbit;
   9.201 -}
   9.202 -
   9.203 -static __inline__ int constant_test_bit(int nr, const volatile void * addr)
   9.204 -{
   9.205 -    return ((1UL << (nr & 31)) & (((const volatile unsigned int *) addr)[nr >> 5])) != 0;
   9.206 -}
   9.207 -
   9.208 -static __inline__ int variable_test_bit(int nr, volatile void * addr)
   9.209 -{
   9.210 -    int oldbit;
   9.211 -    
   9.212 -    __asm__ __volatile__(
   9.213 -        "btl %2,%1\n\tsbbl %0,%0"
   9.214 -        :"=r" (oldbit)
   9.215 -        :"m" (ADDR),"Ir" (nr));
   9.216 -    return oldbit;
   9.217 -}
   9.218 -
   9.219 -#define test_bit(nr,addr) \
   9.220 -(__builtin_constant_p(nr) ? \
   9.221 - constant_test_bit((nr),(addr)) : \
   9.222 - variable_test_bit((nr),(addr)))
   9.223 -
   9.224 -
   9.225 -/**
   9.226 - * set_bit - Atomically set a bit in memory
   9.227 - * @nr: the bit to set
   9.228 - * @addr: the address to start counting from
   9.229 - *
   9.230 - * This function is atomic and may not be reordered.  See __set_bit()
   9.231 - * if you do not require the atomic guarantees.
   9.232 - * Note that @nr may be almost arbitrarily large; this function is not
   9.233 - * restricted to acting on a single-word quantity.
   9.234 - */
   9.235 -static __inline__ void set_bit(int nr, volatile void * addr)
   9.236 -{
   9.237 -        __asm__ __volatile__( LOCK_PREFIX
   9.238 -                "btsl %1,%0"
   9.239 -                :"=m" (ADDR)
   9.240 -                :"Ir" (nr));
   9.241 -}
   9.242 -
   9.243 -/**
   9.244 - * clear_bit - Clears a bit in memory
   9.245 - * @nr: Bit to clear
   9.246 - * @addr: Address to start counting from
   9.247 - *
   9.248 - * clear_bit() is atomic and may not be reordered.  However, it does
   9.249 - * not contain a memory barrier, so if it is used for locking purposes,
   9.250 - * you should call smp_mb__before_clear_bit() and/or smp_mb__after_clear_bit()
   9.251 - * in order to ensure changes are visible on other processors.
   9.252 - */
   9.253 -static __inline__ void clear_bit(int nr, volatile void * addr)
   9.254 -{
   9.255 -        __asm__ __volatile__( LOCK_PREFIX
   9.256 -                "btrl %1,%0"
   9.257 -                :"=m" (ADDR)
   9.258 -                :"Ir" (nr));
   9.259 -}
   9.260 -
   9.261 -/**
   9.262 - * atomic_inc - increment atomic variable
   9.263 - * @v: pointer of type atomic_t
   9.264 - * 
   9.265 - * Atomically increments @v by 1.  Note that the guaranteed
   9.266 - * useful range of an atomic_t is only 24 bits.
   9.267 - */ 
   9.268 -static __inline__ void atomic_inc(atomic_t *v)
   9.269 -{
   9.270 -        __asm__ __volatile__(
   9.271 -                LOCK "incl %0"
   9.272 -                :"=m" (v->counter)
   9.273 -                :"m" (v->counter));
   9.274 -}
   9.275 -
   9.276 -
   9.277 -#define rdtscll(val) \
   9.278 -     __asm__ __volatile__("rdtsc" : "=A" (val))
   9.279 -
   9.280 -
   9.281 -#endif /* !__ASSEMBLY__ */
   9.282 -
   9.283 -#endif /* _OS_H_ */
    10.1 --- a/extras/mini-os/h/time.h	Wed Jul 06 15:36:57 2005 +0000
    10.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    10.3 @@ -1,57 +0,0 @@
    10.4 -/* -*-  Mode:C; c-basic-offset:4; tab-width:4 -*-
    10.5 - ****************************************************************************
    10.6 - * (C) 2003 - Rolf Neugebauer - Intel Research Cambridge
    10.7 - ****************************************************************************
    10.8 - *
    10.9 - *        File: time.h
   10.10 - *      Author: Rolf Neugebauer (neugebar@dcs.gla.ac.uk)
   10.11 - *     Changes: 
   10.12 - *              
   10.13 - *        Date: Jul 2003
   10.14 - * 
   10.15 - * Environment: Xen Minimal OS
   10.16 - * Description: Time and timer functions
   10.17 - *
   10.18 - ****************************************************************************
   10.19 - * $Id: h-insert.h,v 1.4 2002/11/08 16:03:55 rn Exp $
   10.20 - ****************************************************************************
   10.21 - */
   10.22 -
   10.23 -#ifndef _TIME_H_
   10.24 -#define _TIME_H_
   10.25 -
   10.26 -/*
   10.27 - * System Time
   10.28 - * 64 bit value containing the nanoseconds elapsed since boot time.
   10.29 - * This value is adjusted by frequency drift.
   10.30 - * NOW() returns the current time.
   10.31 - * The other macros are for convenience to approximate short intervals
   10.32 - * of real time into system time 
   10.33 - */
   10.34 -typedef s64 s_time_t;
   10.35 -#define NOW()                   ((s_time_t)get_s_time())
   10.36 -#define SECONDS(_s)             (((s_time_t)(_s))  * 1000000000UL )
   10.37 -#define TENTHS(_ts)             (((s_time_t)(_ts)) * 100000000UL )
   10.38 -#define HUNDREDTHS(_hs)         (((s_time_t)(_hs)) * 10000000UL )
   10.39 -#define MILLISECS(_ms)          (((s_time_t)(_ms)) * 1000000UL )
   10.40 -#define MICROSECS(_us)          (((s_time_t)(_us)) * 1000UL )
   10.41 -#define Time_Max                ((s_time_t) 0x7fffffffffffffffLL)
   10.42 -#define FOREVER                 Time_Max
   10.43 -
   10.44 -
   10.45 -/* wall clock time  */
   10.46 -typedef long time_t;
   10.47 -typedef long suseconds_t;
   10.48 -struct timeval {
   10.49 -	time_t		tv_sec;		/* seconds */
   10.50 -	suseconds_t	tv_usec;	/* microseconds */
   10.51 -};
   10.52 -
   10.53 -
   10.54 -/* prototypes */
   10.55 -void     init_time(void);
   10.56 -s_time_t get_s_time(void);
   10.57 -s_time_t get_v_time(void);
   10.58 -void     gettimeofday(struct timeval *tv);
   10.59 -
   10.60 -#endif /* _TIME_H_ */
    11.1 --- a/extras/mini-os/h/types.h	Wed Jul 06 15:36:57 2005 +0000
    11.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    11.3 @@ -1,52 +0,0 @@
    11.4 -/* -*-  Mode:C; c-basic-offset:4; tab-width:4 -*-
    11.5 - ****************************************************************************
    11.6 - * (C) 2003 - Rolf Neugebauer - Intel Research Cambridge
    11.7 - ****************************************************************************
    11.8 - *
    11.9 - *        File: types.h
   11.10 - *      Author: Rolf Neugebauer (neugebar@dcs.gla.ac.uk)
   11.11 - *     Changes: 
   11.12 - *              
   11.13 - *        Date: May 2003
   11.14 - * 
   11.15 - * Environment: Xen Minimal OS
   11.16 - * Description: a random collection of type definitions
   11.17 - *
   11.18 - ****************************************************************************
   11.19 - * $Id: h-insert.h,v 1.4 2002/11/08 16:03:55 rn Exp $
   11.20 - ****************************************************************************
   11.21 - */
   11.22 -
   11.23 -#ifndef _TYPES_H_
   11.24 -#define _TYPES_H_
   11.25 -
   11.26 -typedef signed char         s8;
   11.27 -typedef unsigned char       u8;
   11.28 -typedef signed short        s16;
   11.29 -typedef unsigned short      u16;
   11.30 -typedef signed int          s32;
   11.31 -typedef unsigned int        u32;
   11.32 -#ifdef __i386__
   11.33 -typedef signed long long    s64;
   11.34 -typedef unsigned long long  u64;
   11.35 -#elif defined(__x86_64__)
   11.36 -typedef signed long         s64;
   11.37 -typedef unsigned long       u64;
   11.38 -#endif
   11.39 -
   11.40 -typedef unsigned int        size_t;
   11.41 -
   11.42 -/* FreeBSD compat types */
   11.43 -typedef unsigned char       u_char;
   11.44 -typedef unsigned int        u_int;
   11.45 -typedef unsigned long       u_long;
   11.46 -#ifdef __i386__
   11.47 -typedef long long           quad_t;
   11.48 -typedef unsigned long long  u_quad_t;
   11.49 -typedef unsigned int        uintptr_t;
   11.50 -#elif defined(__x86_64__)
   11.51 -typedef long                quad_t;
   11.52 -typedef unsigned long       u_quad_t;
   11.53 -typedef unsigned long       uintptr_t;
   11.54 -#endif
   11.55 -#endif /* _TYPES_H_ */
    12.1 --- a/extras/mini-os/hypervisor.c	Wed Jul 06 15:36:57 2005 +0000
    12.2 +++ b/extras/mini-os/hypervisor.c	Wed Jul 06 15:38:25 2005 +0000
    12.3 @@ -4,6 +4,7 @@
    12.4   * Communication to/from hypervisor.
    12.5   * 
    12.6   * Copyright (c) 2002-2003, K A Fraser
    12.7 + * Copyright (c) 2005, Grzegorz Milos, gm281@cam.ac.uk,Intel Research Cambridge
    12.8   * 
    12.9   * Permission is hereby granted, free of charge, to any person obtaining a copy
   12.10   * of this software and associated documentation files (the "Software"), to
   12.11 @@ -26,65 +27,69 @@
   12.12  
   12.13  #include <os.h>
   12.14  #include <hypervisor.h>
   12.15 +#include <events.h>
   12.16  
   12.17 -static unsigned long event_mask = 0;
   12.18 -static unsigned long ev_err_count;
   12.19 +#define active_evtchns(cpu,sh,idx)              \
   12.20 +    ((sh)->evtchn_pending[idx] &                \
   12.21 +     ~(sh)->evtchn_mask[idx])
   12.22  
   12.23  void do_hypervisor_callback(struct pt_regs *regs)
   12.24  {
   12.25 -    unsigned long events, flags;
   12.26 -    shared_info_t *shared = HYPERVISOR_shared_info;
   12.27 -
   12.28 -    do {
   12.29 -        /* Specialised local_irq_save(). */
   12.30 -        flags = test_and_clear_bit(EVENTS_MASTER_ENABLE_BIT, 
   12.31 -                                   &shared->events_mask);
   12.32 -        barrier();
   12.33 -
   12.34 -        events  = xchg(&shared->events, 0);
   12.35 -        events &= event_mask;
   12.36 +    u32 	       l1, l2;
   12.37 +    unsigned int   l1i, l2i, port;
   12.38 +    int            cpu = 0;
   12.39 +    shared_info_t *s = HYPERVISOR_shared_info;
   12.40 +    vcpu_info_t   *vcpu_info = &s->vcpu_data[cpu];
   12.41  
   12.42 -        /* 'events' now contains some pending events to handle. */
   12.43 -        __asm__ __volatile__ (
   12.44 -            "   push %1                            ;"
   12.45 -            "   sub  $4,%%esp                      ;"
   12.46 -            "   jmp  2f                            ;"
   12.47 -            "1: btrl %%eax,%0                      ;" /* clear bit     */
   12.48 -            "   mov  %%eax,(%%esp)                 ;"
   12.49 -            "   call do_event                      ;" /* do_event(event) */
   12.50 -            "2: bsfl %0,%%eax                      ;" /* %eax == bit # */
   12.51 -            "   jnz  1b                            ;"
   12.52 -            "   add  $8,%%esp                      ;"
   12.53 -            /* we use %ebx because it is callee-saved */
   12.54 -            : : "b" (events), "r" (regs)
   12.55 -            /* clobbered by callback function calls */
   12.56 -            : "eax", "ecx", "edx", "memory" ); 
   12.57 +    vcpu_info->evtchn_upcall_pending = 0;
   12.58 +    
   12.59 +    /* NB. No need for a barrier here -- XCHG is a barrier on x86. */
   12.60 +    l1 = xchg(&vcpu_info->evtchn_pending_sel, 0);
   12.61 +    while ( l1 != 0 )
   12.62 +    {
   12.63 +        l1i = __ffs(l1);
   12.64 +        l1 &= ~(1 << l1i);
   12.65 +        
   12.66 +        while ( (l2 = active_evtchns(cpu, s, l1i)) != 0 )
   12.67 +        {
   12.68 +            l2i = __ffs(l2);
   12.69 +            l2 &= ~(1 << l2i);
   12.70  
   12.71 -        /* Specialised local_irq_restore(). */
   12.72 -        if ( flags ) set_bit(EVENTS_MASTER_ENABLE_BIT, &shared->events_mask);
   12.73 -        barrier();
   12.74 +            port = (l1i << 5) + l2i;
   12.75 +			do_event(port, regs);
   12.76 +        }
   12.77      }
   12.78 -    while ( shared->events );
   12.79  }
   12.80  
   12.81 -void enable_hypervisor_event(unsigned int ev)
   12.82 +
   12.83 +inline void mask_evtchn(u32 port)
   12.84  {
   12.85 -    set_bit(ev, &event_mask);
   12.86 -    set_bit(ev, &HYPERVISOR_shared_info->events_mask);
   12.87 -    if ( test_bit(EVENTS_MASTER_ENABLE_BIT, 
   12.88 -                  &HYPERVISOR_shared_info->events_mask) )
   12.89 -        do_hypervisor_callback(NULL);
   12.90 +    shared_info_t *s = HYPERVISOR_shared_info;
   12.91 +    synch_set_bit(port, &s->evtchn_mask[0]);
   12.92  }
   12.93  
   12.94 -void disable_hypervisor_event(unsigned int ev)
   12.95 +inline void unmask_evtchn(u32 port)
   12.96  {
   12.97 -    clear_bit(ev, &event_mask);
   12.98 -    clear_bit(ev, &HYPERVISOR_shared_info->events_mask);
   12.99 +    shared_info_t *s = HYPERVISOR_shared_info;
  12.100 +    vcpu_info_t *vcpu_info = &s->vcpu_data[smp_processor_id()];
  12.101 +
  12.102 +    synch_clear_bit(port, &s->evtchn_mask[0]);
  12.103 +
  12.104 +    /*
  12.105 +     * The following is basically the equivalent of 'hw_resend_irq'. Just like
  12.106 +     * a real IO-APIC we 'lose the interrupt edge' if the channel is masked.
  12.107 +     */
  12.108 +    if (  synch_test_bit        (port,    &s->evtchn_pending[0]) && 
  12.109 +         !synch_test_and_set_bit(port>>5, &vcpu_info->evtchn_pending_sel) )
  12.110 +    {
  12.111 +        vcpu_info->evtchn_upcall_pending = 1;
  12.112 +        if ( !vcpu_info->evtchn_upcall_mask )
  12.113 +            force_evtchn_callback();
  12.114 +    }
  12.115  }
  12.116  
  12.117 -void ack_hypervisor_event(unsigned int ev)
  12.118 +inline void clear_evtchn(u32 port)
  12.119  {
  12.120 -    if ( !(event_mask & (1<<ev)) )
  12.121 -        atomic_inc((atomic_t *)&ev_err_count);
  12.122 -    set_bit(ev, &HYPERVISOR_shared_info->events_mask);
  12.123 +    shared_info_t *s = HYPERVISOR_shared_info;
  12.124 +    synch_clear_bit(port, &s->evtchn_pending[0]);
  12.125  }
    13.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    13.2 +++ b/extras/mini-os/include/events.h	Wed Jul 06 15:38:25 2005 +0000
    13.3 @@ -0,0 +1,44 @@
    13.4 +/* -*-  Mode:C; c-basic-offset:4; tab-width:4 -*-
    13.5 + ****************************************************************************
    13.6 + * (C) 2003 - Rolf Neugebauer - Intel Research Cambridge
    13.7 + * (C) 2005 - Grzegorz Milos - Intel Reseach Cambridge
    13.8 + ****************************************************************************
    13.9 + *
   13.10 + *        File: events.h
   13.11 + *      Author: Rolf Neugebauer (neugebar@dcs.gla.ac.uk)
   13.12 + *     Changes: Grzegorz Milos (gm281@cam.ac.uk)
   13.13 + *              
   13.14 + *        Date: Jul 2003, changes Jun 2005
   13.15 + * 
   13.16 + * Environment: Xen Minimal OS
   13.17 + * Description: Deals with events on the event channels
   13.18 + *
   13.19 + ****************************************************************************
   13.20 + */
   13.21 +
   13.22 +#ifndef _EVENTS_H_
   13.23 +#define _EVENTS_H_
   13.24 +
   13.25 +#include<traps.h>
   13.26 +
   13.27 +#define NR_EVS 1024
   13.28 +
   13.29 +/* ev handler status */
   13.30 +#define EVS_INPROGRESS	1	/* Event handler active - do not enter! */
   13.31 +#define EVS_DISABLED	2	/* Event disabled - do not enter! */
   13.32 +#define EVS_PENDING	    4	/* Event pending - replay on enable */
   13.33 +#define EVS_REPLAY	    8	/* Event has been replayed but not acked yet */
   13.34 +
   13.35 +/* this represents a event handler. Chaining or sharing is not allowed */
   13.36 +typedef struct _ev_action_t {
   13.37 +	void (*handler)(int, struct pt_regs *);
   13.38 +    unsigned int status;		/* IRQ status */
   13.39 +    u32 count;
   13.40 +} ev_action_t;
   13.41 +
   13.42 +/* prototypes */
   13.43 +int do_event(u32 port, struct pt_regs *regs);
   13.44 +int bind_virq( u32 virq, void (*handler)(int, struct pt_regs *) );
   13.45 +void init_events(void);
   13.46 +
   13.47 +#endif /* _EVENTS_H_ */
    14.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    14.2 +++ b/extras/mini-os/include/hypervisor.h	Wed Jul 06 15:38:25 2005 +0000
    14.3 @@ -0,0 +1,357 @@
    14.4 +/******************************************************************************
    14.5 + * hypervisor.h
    14.6 + * 
    14.7 + * Hypervisor handling.
    14.8 + * 
    14.9 + * TODO - x86_64 broken!
   14.10 + *
   14.11 + * Copyright (c) 2002, K A Fraser
   14.12 + * Copyright (c) 2005, Grzegorz Milos
   14.13 + */
   14.14 +
   14.15 +#ifndef _HYPERVISOR_H_
   14.16 +#define _HYPERVISOR_H_
   14.17 +
   14.18 +#include <types.h>
   14.19 +
   14.20 +#include <xen/xen.h>
   14.21 +#include <xen/io/domain_controller.h>
   14.22 +
   14.23 +
   14.24 +
   14.25 +/*
   14.26 + * a placeholder for the start of day information passed up from the hypervisor
   14.27 + */
   14.28 +union start_info_union
   14.29 +{
   14.30 +    start_info_t start_info;
   14.31 +    char padding[512];
   14.32 +};
   14.33 +extern union start_info_union start_info_union;
   14.34 +#define start_info (start_info_union.start_info)
   14.35 +
   14.36 +
   14.37 +/* hypervisor.c */
   14.38 +//void do_hypervisor_callback(struct pt_regs *regs);
   14.39 +void mask_evtchn(u32 port);
   14.40 +void unmask_evtchn(u32 port);
   14.41 +void clear_evtchn(u32 port);
   14.42 +
   14.43 +/*
   14.44 + * Assembler stubs for hyper-calls.
   14.45 + */
   14.46 +
   14.47 +#ifdef __i386__
   14.48 +#define _a1 "b"
   14.49 +#define _a2 "c"
   14.50 +#define _a3 "d"
   14.51 +#define _a4 "S"
   14.52 +#else
   14.53 +#define _a1 "D"
   14.54 +#define _a2 "S"
   14.55 +#define _a3 "d"
   14.56 +#define _a4 "b"
   14.57 +#endif
   14.58 +
   14.59 +static __inline__ int HYPERVISOR_event_channel_op(
   14.60 +    void *op)
   14.61 +{
   14.62 +    int ret;
   14.63 +    unsigned long ignore;
   14.64 +    __asm__ __volatile__ (
   14.65 +        TRAP_INSTR
   14.66 +        : "=a" (ret), "=b" (ignore)
   14.67 +	: "0" (__HYPERVISOR_event_channel_op), "1" (op)
   14.68 +	: "memory" );
   14.69 +
   14.70 +    return ret;
   14.71 +}
   14.72 +
   14.73 +static __inline__ int HYPERVISOR_set_trap_table(trap_info_t *table)
   14.74 +{
   14.75 +    int ret;
   14.76 +    __asm__ __volatile__ (
   14.77 +        TRAP_INSTR
   14.78 +        : "=a" (ret) : "0" (__HYPERVISOR_set_trap_table),
   14.79 +        _a1 (table) : "memory" );
   14.80 +
   14.81 +    return ret;
   14.82 +}
   14.83 +
   14.84 +static __inline__ int HYPERVISOR_mmu_update(mmu_update_t *req, 
   14.85 +                                            int count, 
   14.86 +                                            int *success_count)
   14.87 +{
   14.88 +    int ret;
   14.89 +    __asm__ __volatile__ (
   14.90 +        TRAP_INSTR
   14.91 +        : "=a" (ret) : "0" (__HYPERVISOR_mmu_update), 
   14.92 +        _a1 (req), _a2 (count), _a3 (success_count)  : "memory" );
   14.93 +
   14.94 +    return ret;
   14.95 +}
   14.96 +
   14.97 +static __inline__ int HYPERVISOR_set_gdt(unsigned long *frame_list, int entries)
   14.98 +{
   14.99 +    int ret;
  14.100 +    __asm__ __volatile__ (
  14.101 +        TRAP_INSTR
  14.102 +        : "=a" (ret) : "0" (__HYPERVISOR_set_gdt), 
  14.103 +        _a1 (frame_list), _a2 (entries) : "memory" );
  14.104 +
  14.105 +
  14.106 +    return ret;
  14.107 +}
  14.108 +
  14.109 +static __inline__ int HYPERVISOR_stack_switch(unsigned long ss, unsigned long esp)
  14.110 +{
  14.111 +    int ret;
  14.112 +    __asm__ __volatile__ (
  14.113 +        TRAP_INSTR
  14.114 +        : "=a" (ret) : "0" (__HYPERVISOR_stack_switch),
  14.115 +        _a1 (ss), _a2 (esp) : "memory" );
  14.116 +
  14.117 +    return ret;
  14.118 +}
  14.119 +
  14.120 +#ifdef __i386__
  14.121 +static __inline__ int HYPERVISOR_set_callbacks(
  14.122 +    unsigned long event_selector, unsigned long event_address,
  14.123 +    unsigned long failsafe_selector, unsigned long failsafe_address)
  14.124 +{
  14.125 +    int ret;
  14.126 +    __asm__ __volatile__ (
  14.127 +        TRAP_INSTR
  14.128 +        : "=a" (ret) : "0" (__HYPERVISOR_set_callbacks),
  14.129 +        _a1 (event_selector), _a2 (event_address), 
  14.130 +        _a3 (failsafe_selector), _a4 (failsafe_address) : "memory" );
  14.131 +
  14.132 +    return ret;
  14.133 +}
  14.134 +#else
  14.135 +static __inline__ int HYPERVISOR_set_callbacks(
  14.136 +    unsigned long event_address,
  14.137 +    unsigned long failsafe_address,
  14.138 +    unsigned long syscall_address)
  14.139 +{
  14.140 +    int ret;
  14.141 +    __asm__ __volatile__ (
  14.142 +        TRAP_INSTR
  14.143 +        : "=a" (ret) : "0" (__HYPERVISOR_set_callbacks),
  14.144 +        _a1 (event_address), _a2 (failsafe_address), 
  14.145 +        _a3 (syscall_address) : "memory" );
  14.146 +
  14.147 +    return ret;
  14.148 +}
  14.149 +#endif
  14.150 +
  14.151 +static __inline__ int
  14.152 +HYPERVISOR_fpu_taskswitch(
  14.153 +    int set)
  14.154 +{
  14.155 +    int ret;
  14.156 +    unsigned long ign;
  14.157 +
  14.158 +    __asm__ __volatile__ (
  14.159 +        TRAP_INSTR
  14.160 +        : "=a" (ret), "=b" (ign)
  14.161 +        : "0" (__HYPERVISOR_fpu_taskswitch), "1" (set)
  14.162 +        : "memory" );
  14.163 +
  14.164 +    return ret;
  14.165 +}
  14.166 +
  14.167 +static __inline__ int HYPERVISOR_yield(void)
  14.168 +{
  14.169 +    int ret;
  14.170 +    __asm__ __volatile__ (
  14.171 +        TRAP_INSTR
  14.172 +        : "=a" (ret) : "0" (__HYPERVISOR_sched_op),
  14.173 +        _a1 (SCHEDOP_yield) : "memory" );
  14.174 +
  14.175 +    return ret;
  14.176 +}
  14.177 +
  14.178 +static __inline__ int HYPERVISOR_block(void)
  14.179 +{
  14.180 +    int ret;
  14.181 +    __asm__ __volatile__ (
  14.182 +        TRAP_INSTR
  14.183 +        : "=a" (ret) : "0" (__HYPERVISOR_sched_op),
  14.184 +        _a1 (SCHEDOP_block) : "memory" );
  14.185 +
  14.186 +    return ret;
  14.187 +}
  14.188 +
  14.189 +static __inline__ int HYPERVISOR_shutdown(void)
  14.190 +{
  14.191 +    int ret;
  14.192 +    __asm__ __volatile__ (
  14.193 +        TRAP_INSTR
  14.194 +        : "=a" (ret) : "0" (__HYPERVISOR_sched_op),
  14.195 +        _a1 (SCHEDOP_shutdown | (SHUTDOWN_poweroff << SCHEDOP_reasonshift))
  14.196 +        : "memory" );
  14.197 +
  14.198 +    return ret;
  14.199 +}
  14.200 +
  14.201 +static __inline__ int HYPERVISOR_reboot(void)
  14.202 +{
  14.203 +    int ret;
  14.204 +    __asm__ __volatile__ (
  14.205 +        TRAP_INSTR
  14.206 +        : "=a" (ret) : "0" (__HYPERVISOR_sched_op),
  14.207 +        _a1 (SCHEDOP_shutdown | (SHUTDOWN_reboot << SCHEDOP_reasonshift))
  14.208 +        : "memory" );
  14.209 +
  14.210 +    return ret;
  14.211 +}
  14.212 +
  14.213 +static __inline__ int HYPERVISOR_suspend(unsigned long srec)
  14.214 +{
  14.215 +    int ret;
  14.216 +    /* NB. On suspend, control software expects a suspend record in %esi. */
  14.217 +    __asm__ __volatile__ (
  14.218 +        TRAP_INSTR
  14.219 +        : "=a" (ret) : "0" (__HYPERVISOR_sched_op),
  14.220 +        _a1 (SCHEDOP_shutdown | (SHUTDOWN_suspend << SCHEDOP_reasonshift)), 
  14.221 +        "S" (srec) : "memory" );
  14.222 +
  14.223 +    return ret;
  14.224 +}
  14.225 +
  14.226 +#ifdef __i386__
  14.227 +static __inline__ long HYPERVISOR_set_timer_op( u64 timeout )
  14.228 +{
  14.229 +    int ret;
  14.230 +    unsigned long timeout_hi = (unsigned long)(timeout>>32);
  14.231 +    unsigned long timeout_lo = (unsigned long)timeout;
  14.232 +    unsigned long ign1, ign2;
  14.233 +
  14.234 +    __asm__ __volatile__ (
  14.235 +        TRAP_INSTR
  14.236 +        : "=a" (ret), "=b" (ign1), "=c" (ign2)
  14.237 +	: "0" (__HYPERVISOR_set_timer_op), "b" (timeout_lo), "c" (timeout_hi)
  14.238 +	: "memory");
  14.239 +
  14.240 +    return ret;
  14.241 +}
  14.242 +#else
  14.243 +static __inline__ long HYPERVISOR_set_timer_op( u64 timeout )
  14.244 +{
  14.245 +    int ret;
  14.246 +
  14.247 +    __asm__ __volatile__ (
  14.248 +        TRAP_INSTR
  14.249 +        : "=a" (ret)
  14.250 +	: "0" ((unsigned long)__HYPERVISOR_set_timer_op),
  14.251 +	  "D" (timeout)
  14.252 +	: __syscall_clobber );
  14.253 +
  14.254 +    return ret;
  14.255 +}
  14.256 +#endif
  14.257 +
  14.258 +
  14.259 +static __inline__ int HYPERVISOR_dom0_op(void *dom0_op)
  14.260 +{
  14.261 +    int ret;
  14.262 +    __asm__ __volatile__ (
  14.263 +        TRAP_INSTR
  14.264 +        : "=a" (ret) : "0" (__HYPERVISOR_dom0_op),
  14.265 +        _a1 (dom0_op) : "memory" );
  14.266 +
  14.267 +    return ret;
  14.268 +}
  14.269 +
  14.270 +static __inline__ int HYPERVISOR_set_debugreg(int reg, unsigned long value)
  14.271 +{
  14.272 +    int ret;
  14.273 +    __asm__ __volatile__ (
  14.274 +        TRAP_INSTR
  14.275 +        : "=a" (ret) : "0" (__HYPERVISOR_set_debugreg),
  14.276 +        _a1 (reg), _a2 (value) : "memory" );
  14.277 +
  14.278 +    return ret;
  14.279 +}
  14.280 +
  14.281 +static __inline__ unsigned long HYPERVISOR_get_debugreg(int reg)
  14.282 +{
  14.283 +    unsigned long ret;
  14.284 +    __asm__ __volatile__ (
  14.285 +        TRAP_INSTR
  14.286 +        : "=a" (ret) : "0" (__HYPERVISOR_get_debugreg),
  14.287 +        _a1 (reg) : "memory" );
  14.288 +
  14.289 +    return ret;
  14.290 +}
  14.291 +
  14.292 +static __inline__ int HYPERVISOR_update_descriptor(
  14.293 +    unsigned long pa, unsigned long word1, unsigned long word2)
  14.294 +{
  14.295 +    int ret;
  14.296 +    __asm__ __volatile__ (
  14.297 +        TRAP_INSTR
  14.298 +        : "=a" (ret) : "0" (__HYPERVISOR_update_descriptor), 
  14.299 +        _a1 (pa), _a2 (word1), _a3 (word2) : "memory" );
  14.300 +
  14.301 +    return ret;
  14.302 +}
  14.303 +
  14.304 +static __inline__ int HYPERVISOR_dom_mem_op(void *dom_mem_op)
  14.305 +{
  14.306 +    int ret;
  14.307 +    __asm__ __volatile__ (
  14.308 +        TRAP_INSTR
  14.309 +        : "=a" (ret) : "0" (__HYPERVISOR_dom_mem_op),
  14.310 +        _a1 (dom_mem_op) : "memory" );
  14.311 +
  14.312 +    return ret;
  14.313 +}
  14.314 +
  14.315 +static __inline__ int HYPERVISOR_multicall(void *call_list, int nr_calls)
  14.316 +{
  14.317 +    int ret;
  14.318 +    __asm__ __volatile__ (
  14.319 +        TRAP_INSTR
  14.320 +        : "=a" (ret) : "0" (__HYPERVISOR_multicall),
  14.321 +        _a1 (call_list), _a2 (nr_calls) : "memory" );
  14.322 +
  14.323 +    return ret;
  14.324 +}
  14.325 +
  14.326 +static __inline__ int HYPERVISOR_update_va_mapping(
  14.327 +    unsigned long page_nr, unsigned long new_val, unsigned long flags)
  14.328 +{
  14.329 +    int ret;
  14.330 +    __asm__ __volatile__ (
  14.331 +        TRAP_INSTR
  14.332 +        : "=a" (ret) : "0" (__HYPERVISOR_update_va_mapping), 
  14.333 +        _a1 (page_nr), _a2 (new_val), _a3 (flags) : "memory" );
  14.334 +
  14.335 +    return ret;
  14.336 +}
  14.337 +
  14.338 +static __inline__ int HYPERVISOR_xen_version(int cmd)
  14.339 +{
  14.340 +    int ret;
  14.341 +    __asm__ __volatile__ (
  14.342 +        TRAP_INSTR
  14.343 +        : "=a" (ret) : "0" (__HYPERVISOR_xen_version), 
  14.344 +        _a1 (cmd) : "memory" );
  14.345 +
  14.346 +    return ret;
  14.347 +}
  14.348 +
  14.349 +static __inline__ int HYPERVISOR_console_io(int cmd, int count, char *str)
  14.350 +{
  14.351 +    int ret;
  14.352 +    __asm__ __volatile__ (
  14.353 +        TRAP_INSTR
  14.354 +        : "=a" (ret) : "0" (__HYPERVISOR_console_io),
  14.355 +        _a1 (cmd), _a2 (count), _a3 (str) : "memory" );
  14.356 +
  14.357 +    return ret;
  14.358 +}
  14.359 +
  14.360 +#endif /* __HYPERVISOR_H__ */
    15.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    15.2 +++ b/extras/mini-os/include/lib.h	Wed Jul 06 15:38:25 2005 +0000
    15.3 @@ -0,0 +1,114 @@
    15.4 +/* -*-  Mode:C; c-basic-offset:4; tab-width:4 -*-
    15.5 + ****************************************************************************
    15.6 + * (C) 2003 - Rolf Neugebauer - Intel Research Cambridge
    15.7 + ****************************************************************************
    15.8 + *
    15.9 + *        File: lib.h
   15.10 + *      Author: Rolf Neugebauer (neugebar@dcs.gla.ac.uk)
   15.11 + *     Changes: 
   15.12 + *              
   15.13 + *        Date: Aug 2003
   15.14 + * 
   15.15 + * Environment: Xen Minimal OS
   15.16 + * Description: Random useful library functions, contains some freebsd stuff
   15.17 + *
   15.18 + ****************************************************************************
   15.19 + * $Id: h-insert.h,v 1.4 2002/11/08 16:03:55 rn Exp $
   15.20 + ****************************************************************************
   15.21 + *
   15.22 + *-
   15.23 + * Copyright (c) 1991, 1993
   15.24 + *      The Regents of the University of California.  All rights reserved.
   15.25 + *
   15.26 + * Redistribution and use in source and binary forms, with or without
   15.27 + * modification, are permitted provided that the following conditions
   15.28 + * are met:
   15.29 + * 1. Redistributions of source code must retain the above copyright
   15.30 + *    notice, this list of conditions and the following disclaimer.
   15.31 + * 2. Redistributions in binary form must reproduce the above copyright
   15.32 + *    notice, this list of conditions and the following disclaimer in the
   15.33 + *    documentation and/or other materials provided with the distribution.
   15.34 + * 3. All advertising materials mentioning features or use of this software
   15.35 + *    must display the following acknowledgement:
   15.36 + *      This product includes software developed by the University of
   15.37 + *      California, Berkeley and its contributors.
   15.38 + * 4. Neither the name of the University nor the names of its contributors
   15.39 + *    may be used to endorse or promote products derived from this software
   15.40 + *    without specific prior written permission.
   15.41 + *
   15.42 + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
   15.43 + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   15.44 + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   15.45 + * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
   15.46 + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   15.47 + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
   15.48 + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
   15.49 + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
   15.50 + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
   15.51 + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   15.52 + * SUCH DAMAGE.
   15.53 + *
   15.54 + *      @(#)stdarg.h    8.1 (Berkeley) 6/10/93
   15.55 + * $FreeBSD: src/sys/i386/include/stdarg.h,v 1.10 1999/08/28 00:44:26 peter Exp $
   15.56 + */
   15.57 +
   15.58 +#ifndef _LIB_H_
   15.59 +#define _LIB_H_
   15.60 +
   15.61 +#include <stdarg.h>
   15.62 +
   15.63 +/* printing */
   15.64 +#define printk  printf
   15.65 +#define kprintf printf
   15.66 +int printf(const char *fmt, ...);
   15.67 +int vprintf(const char *fmt, va_list ap);
   15.68 +int sprintf(char *buf, const char *cfmt, ...);
   15.69 +int vsprintf(char *buf, const char *cfmt, va_list ap);
   15.70 +
   15.71 +/* string and memory manipulation */
   15.72 +int    memcmp(const void *cs, const void *ct, size_t count);
   15.73 +void  *memcpy(void *dest, const void *src, size_t count);
   15.74 +int    strncmp(const char *cs, const char *ct, size_t count);
   15.75 +int    strcmp(const char *cs, const char *ct);
   15.76 +char  *strcpy(char *dest, const char *src);
   15.77 +char  *strncpy(char *dest, const char *src, size_t count);
   15.78 +void  *memset(void *s,int c, size_t count);
   15.79 +size_t strnlen(const char *s, size_t count);
   15.80 +size_t strlen(const char *s);
   15.81 +char  *strchr(const char *s, int c);
   15.82 +char  *strstr(const char *s1, const char *s2);
   15.83 +
   15.84 +
   15.85 +/* dlmalloc functions */
   15.86 +struct mallinfo {
   15.87 +  int arena;    /* non-mmapped space allocated from system */
   15.88 +  int ordblks;  /* number of free chunks */
   15.89 +  int smblks;   /* number of fastbin blocks */
   15.90 +  int hblks;    /* number of mmapped regions */
   15.91 +  int hblkhd;   /* space in mmapped regions */
   15.92 +  int usmblks;  /* maximum total allocated space */
   15.93 +  int fsmblks;  /* space available in freed fastbin blocks */
   15.94 +  int uordblks; /* total allocated space */
   15.95 +  int fordblks; /* total free space */
   15.96 +  int keepcost; /* top-most, releasable (via malloc_trim) space */
   15.97 +};
   15.98 +
   15.99 +void *malloc(size_t n);
  15.100 +void *calloc(size_t n_elements, size_t element_size);
  15.101 +void  free(void* p);
  15.102 +void *realloc(void* p, size_t n);
  15.103 +void *memalign(size_t alignment, size_t n);
  15.104 +void *valloc(size_t n);
  15.105 +struct mallinfo mallinfo(void);
  15.106 +int  mallopt(int parameter_number, int parameter_value);
  15.107 +
  15.108 +void **independent_calloc(size_t n_elements, size_t size, void* chunks[]);
  15.109 +void **independent_comalloc(size_t n_elements, size_t sizes[], void* chunks[]);
  15.110 +void *pvalloc(size_t n);
  15.111 +void cfree(void* p);
  15.112 +int malloc_trim(size_t pad);
  15.113 +size_t malloc_usable_size(void* p);
  15.114 +void malloc_stats(void);
  15.115 +
  15.116 +
  15.117 +#endif /* _LIB_H_ */
    16.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    16.2 +++ b/extras/mini-os/include/mm.h	Wed Jul 06 15:38:25 2005 +0000
    16.3 @@ -0,0 +1,111 @@
    16.4 +/* -*-  Mode:C; c-basic-offset:4; tab-width:4 -*-
    16.5 + *
    16.6 + * (C) 2003 - Rolf Neugebauer - Intel Research Cambridge
    16.7 + * Copyright (c) 2005, Keir A Fraser
    16.8 + *
    16.9 + * Permission is hereby granted, free of charge, to any person obtaining a copy
   16.10 + * of this software and associated documentation files (the "Software"), to
   16.11 + * deal in the Software without restriction, including without limitation the
   16.12 + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
   16.13 + * sell copies of the Software, and to permit persons to whom the Software is
   16.14 + * furnished to do so, subject to the following conditions:
   16.15 + * 
   16.16 + * The above copyright notice and this permission notice shall be included in
   16.17 + * all copies or substantial portions of the Software.
   16.18 + * 
   16.19 + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
   16.20 + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
   16.21 + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
   16.22 + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
   16.23 + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 
   16.24 + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 
   16.25 + * DEALINGS IN THE SOFTWARE.
   16.26 + */
   16.27 +
   16.28 +#ifndef _MM_H_
   16.29 +#define _MM_H_
   16.30 +
   16.31 +#ifdef __x86_64__
   16.32 +
   16.33 +#define L1_PAGETABLE_SHIFT      12
   16.34 +#define L2_PAGETABLE_SHIFT      21
   16.35 +#define L3_PAGETABLE_SHIFT      30
   16.36 +#define L4_PAGETABLE_SHIFT      39
   16.37 +
   16.38 +#define L1_PAGETABLE_ENTRIES    512
   16.39 +#define L2_PAGETABLE_ENTRIES    512
   16.40 +#define L3_PAGETABLE_ENTRIES    512
   16.41 +#define L4_PAGETABLE_ENTRIES    512
   16.42 +
   16.43 +/* These are page-table limitations. Current CPUs support only 40-bit phys. */
   16.44 +#define PADDR_BITS              52
   16.45 +#define VADDR_BITS              48
   16.46 +#define PADDR_MASK              ((1UL << PADDR_BITS)-1)
   16.47 +#define VADDR_MASK              ((1UL << VADDR_BITS)-1)
   16.48 +
   16.49 +#define pte_to_mfn(_pte) (((_pte) & (PADDR_MASK&PAGE_MASK)) >> PAGE_SHIFT)
   16.50 +
   16.51 +/* Given a virtual address, get an entry offset into a page table. */
   16.52 +#define l1_table_offset(_a) \
   16.53 +  (((_a) >> L1_PAGETABLE_SHIFT) & (L1_PAGETABLE_ENTRIES - 1))
   16.54 +#define l2_table_offset(_a) \
   16.55 +  (((_a) >> L2_PAGETABLE_SHIFT) & (L2_PAGETABLE_ENTRIES - 1))
   16.56 +#define l3_table_offset(_a) \
   16.57 +  (((_a) >> L3_PAGETABLE_SHIFT) & (L3_PAGETABLE_ENTRIES - 1))
   16.58 +#define l4_table_offset(_a) \
   16.59 +  (((_a) >> L4_PAGETABLE_SHIFT) & (L4_PAGETABLE_ENTRIES - 1))
   16.60 +#endif
   16.61 +
   16.62 +#define _PAGE_PRESENT  0x001UL
   16.63 +#define _PAGE_RW       0x002UL
   16.64 +#define _PAGE_USER     0x004UL
   16.65 +#define _PAGE_PWT      0x008UL
   16.66 +#define _PAGE_PCD      0x010UL
   16.67 +#define _PAGE_ACCESSED 0x020UL
   16.68 +#define _PAGE_DIRTY    0x040UL
   16.69 +#define _PAGE_PAT      0x080UL
   16.70 +#define _PAGE_PSE      0x080UL
   16.71 +#define _PAGE_GLOBAL   0x100UL
   16.72 +
   16.73 +#define PAGE_SHIFT      12
   16.74 +#define PAGE_SIZE       (1UL << PAGE_SHIFT)
   16.75 +#define PAGE_MASK       (~(PAGE_SIZE-1))
   16.76 +
   16.77 +#define PFN_UP(x)	(((x) + PAGE_SIZE-1) >> PAGE_SHIFT)
   16.78 +#define PFN_DOWN(x)	((x) >> PAGE_SHIFT)
   16.79 +#define PFN_PHYS(x)	((x) << PAGE_SHIFT)
   16.80 +
   16.81 +/* to align the pointer to the (next) page boundary */
   16.82 +#define PAGE_ALIGN(addr)        (((addr)+PAGE_SIZE-1)&PAGE_MASK)
   16.83 +
   16.84 +extern unsigned long *phys_to_machine_mapping;
   16.85 +#define pfn_to_mfn(_pfn) (phys_to_machine_mapping[(_pfn)])
   16.86 +#define mfn_to_pfn(_mfn) (machine_to_phys_mapping[(_mfn)])
   16.87 +static __inline__ unsigned long phys_to_machine(unsigned long phys)
   16.88 +{
   16.89 +    unsigned long machine = pfn_to_mfn(phys >> PAGE_SHIFT);
   16.90 +    machine = (machine << PAGE_SHIFT) | (phys & ~PAGE_MASK);
   16.91 +    return machine;
   16.92 +}
   16.93 +static __inline__ unsigned long machine_to_phys(unsigned long machine)
   16.94 +{
   16.95 +    unsigned long phys = mfn_to_pfn(machine >> PAGE_SHIFT);
   16.96 +    phys = (phys << PAGE_SHIFT) | (machine & ~PAGE_MASK);
   16.97 +    return phys;
   16.98 +}
   16.99 +
  16.100 +#ifdef __x86_64__
  16.101 +#define VIRT_START              0xFFFFFFFF00000000UL
  16.102 +#else
  16.103 +#define VIRT_START              0xC0000000UL
  16.104 +#endif
  16.105 +
  16.106 +#define to_phys(x)                 ((unsigned long)(x)-VIRT_START)
  16.107 +#define to_virt(x)                 ((void *)((unsigned long)(x)+VIRT_START))
  16.108 +#define __va to_virt
  16.109 +#define __pa to_phys
  16.110 +
  16.111 +void init_mm(void);
  16.112 +unsigned long alloc_pages(int order);
  16.113 +
  16.114 +#endif /* _MM_H_ */
    17.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    17.2 +++ b/extras/mini-os/include/os.h	Wed Jul 06 15:38:25 2005 +0000
    17.3 @@ -0,0 +1,334 @@
    17.4 +/******************************************************************************
    17.5 + * os.h
    17.6 + * 
    17.7 + * random collection of macros and definition
    17.8 + */
    17.9 +
   17.10 +#ifndef _OS_H_
   17.11 +#define _OS_H_
   17.12 +
   17.13 +#define NULL 0
   17.14 +
   17.15 +#if __GNUC__ == 2 && __GNUC_MINOR__ < 96
   17.16 +#define __builtin_expect(x, expected_value) (x)
   17.17 +#endif
   17.18 +#define unlikely(x)  __builtin_expect((x),0)
   17.19 +
   17.20 +#define smp_processor_id() 0
   17.21 +#define preempt_disable() ((void)0)
   17.22 +#define preempt_enable() ((void)0)
   17.23 +
   17.24 +#define force_evtchn_callback() ((void)HYPERVISOR_xen_version(0))
   17.25 +
   17.26 +#ifndef __ASSEMBLY__
   17.27 +#include <types.h>
   17.28 +#endif
   17.29 +#include <xen/xen.h>
   17.30 +
   17.31 +#define __KERNEL_CS  FLAT_KERNEL_CS
   17.32 +#define __KERNEL_DS  FLAT_KERNEL_DS
   17.33 +#define __KERNEL_SS  FLAT_KERNEL_SS
   17.34 +
   17.35 +#define TRAP_divide_error      0
   17.36 +#define TRAP_debug             1
   17.37 +#define TRAP_nmi               2
   17.38 +#define TRAP_int3              3
   17.39 +#define TRAP_overflow          4
   17.40 +#define TRAP_bounds            5
   17.41 +#define TRAP_invalid_op        6
   17.42 +#define TRAP_no_device         7
   17.43 +#define TRAP_double_fault      8
   17.44 +#define TRAP_copro_seg         9
   17.45 +#define TRAP_invalid_tss      10
   17.46 +#define TRAP_no_segment       11
   17.47 +#define TRAP_stack_error      12
   17.48 +#define TRAP_gp_fault         13
   17.49 +#define TRAP_page_fault       14
   17.50 +#define TRAP_spurious_int     15
   17.51 +#define TRAP_copro_error      16
   17.52 +#define TRAP_alignment_check  17
   17.53 +#define TRAP_machine_check    18
   17.54 +#define TRAP_simd_error       19
   17.55 +#define TRAP_deferred_nmi     31
   17.56 +
   17.57 +/* Everything below this point is not included by assembler (.S) files. */
   17.58 +#ifndef __ASSEMBLY__
   17.59 +
   17.60 +#define pt_regs xen_regs
   17.61 +
   17.62 +void trap_init(void);
   17.63 +
   17.64 +/* 
   17.65 + * The use of 'barrier' in the following reflects their use as local-lock
   17.66 + * operations. Reentrancy must be prevented (e.g., __cli()) /before/ following
   17.67 + * critical operations are executed. All critical operations must complete
   17.68 + * /before/ reentrancy is permitted (e.g., __sti()). Alpha architecture also
   17.69 + * includes these barriers, for example.
   17.70 + */
   17.71 +
   17.72 +#define __cli()								\
   17.73 +do {									\
   17.74 +	vcpu_info_t *_vcpu;						\
   17.75 +	preempt_disable();						\
   17.76 +	_vcpu = &HYPERVISOR_shared_info->vcpu_data[smp_processor_id()];	\
   17.77 +	_vcpu->evtchn_upcall_mask = 1;					\
   17.78 +	preempt_enable_no_resched();					\
   17.79 +	barrier();							\
   17.80 +} while (0)
   17.81 +
   17.82 +#define __sti()								\
   17.83 +do {									\
   17.84 +	vcpu_info_t *_vcpu;						\
   17.85 +	barrier();							\
   17.86 +	preempt_disable();						\
   17.87 +	_vcpu = &HYPERVISOR_shared_info->vcpu_data[smp_processor_id()];	\
   17.88 +	_vcpu->evtchn_upcall_mask = 0;					\
   17.89 +	barrier(); /* unmask then check (avoid races) */		\
   17.90 +	if ( unlikely(_vcpu->evtchn_upcall_pending) )			\
   17.91 +		force_evtchn_callback();				\
   17.92 +	preempt_enable();						\
   17.93 +} while (0)
   17.94 +
   17.95 +#define __save_flags(x)							\
   17.96 +do {									\
   17.97 +	vcpu_info_t *_vcpu;						\
   17.98 +	_vcpu = &HYPERVISOR_shared_info->vcpu_data[smp_processor_id()];	\
   17.99 +	(x) = _vcpu->evtchn_upcall_mask;				\
  17.100 +} while (0)
  17.101 +
  17.102 +#define __restore_flags(x)						\
  17.103 +do {									\
  17.104 +	vcpu_info_t *_vcpu;						\
  17.105 +	barrier();							\
  17.106 +	preempt_disable();						\
  17.107 +	_vcpu = &HYPERVISOR_shared_info->vcpu_data[smp_processor_id()];	\
  17.108 +	if ((_vcpu->evtchn_upcall_mask = (x)) == 0) {			\
  17.109 +		barrier(); /* unmask then check (avoid races) */	\
  17.110 +		if ( unlikely(_vcpu->evtchn_upcall_pending) )		\
  17.111 +			force_evtchn_callback();			\
  17.112 +		preempt_enable();					\
  17.113 +	} else								\
  17.114 +		preempt_enable_no_resched();				\
  17.115 +} while (0)
  17.116 +
  17.117 +#define safe_halt()		((void)0)
  17.118 +
  17.119 +#define __save_and_cli(x)						\
  17.120 +do {									\
  17.121 +	vcpu_info_t *_vcpu;						\
  17.122 +	preempt_disable();						\
  17.123 +	_vcpu = &HYPERVISOR_shared_info->vcpu_data[smp_processor_id()];	\
  17.124 +	(x) = _vcpu->evtchn_upcall_mask;				\
  17.125 +	_vcpu->evtchn_upcall_mask = 1;					\
  17.126 +	preempt_enable_no_resched();					\
  17.127 +	barrier();							\
  17.128 +} while (0)
  17.129 +
  17.130 +#define local_irq_save(x)	__save_and_cli(x)
  17.131 +#define local_irq_restore(x)	__restore_flags(x)
  17.132 +#define local_save_flags(x)	__save_flags(x)
  17.133 +#define local_irq_disable()	__cli()
  17.134 +#define local_irq_enable()	__sti()
  17.135 +
  17.136 +#define irqs_disabled()			\
  17.137 +    HYPERVISOR_shared_info->vcpu_data[smp_processor_id()].evtchn_upcall_mask
  17.138 +
  17.139 +/* This is a barrier for the compiler only, NOT the processor! */
  17.140 +#define barrier() __asm__ __volatile__("": : :"memory")
  17.141 +
  17.142 +#define LOCK_PREFIX ""
  17.143 +#define LOCK ""
  17.144 +#define ADDR (*(volatile long *) addr)
  17.145 +/*
  17.146 + * Make sure gcc doesn't try to be clever and move things around
  17.147 + * on us. We need to use _exactly_ the address the user gave us,
  17.148 + * not some alias that contains the same information.
  17.149 + */
  17.150 +typedef struct { volatile int counter; } atomic_t;
  17.151 +
  17.152 +
  17.153 +#define xchg(ptr,v) \
  17.154 +        ((__typeof__(*(ptr)))__xchg((unsigned long)(v),(ptr),sizeof(*(ptr))))
  17.155 +struct __xchg_dummy { unsigned long a[100]; };
  17.156 +#define __xg(x) ((volatile struct __xchg_dummy *)(x))
  17.157 +static __inline__ unsigned long __xchg(unsigned long x, volatile void * ptr,
  17.158 +                                   int size)
  17.159 +{
  17.160 +    switch (size) {
  17.161 +    case 1:
  17.162 +        __asm__ __volatile__("xchgb %b0,%1"
  17.163 +                             :"=q" (x)
  17.164 +                             :"m" (*__xg(ptr)), "0" (x)
  17.165 +                             :"memory");
  17.166 +        break;
  17.167 +    case 2:
  17.168 +        __asm__ __volatile__("xchgw %w0,%1"
  17.169 +                             :"=r" (x)
  17.170 +                             :"m" (*__xg(ptr)), "0" (x)
  17.171 +                             :"memory");
  17.172 +        break;
  17.173 +    case 4:
  17.174 +        __asm__ __volatile__("xchgl %0,%1"
  17.175 +                             :"=r" (x)
  17.176 +                             :"m" (*__xg(ptr)), "0" (x)
  17.177 +                             :"memory");
  17.178 +        break;
  17.179 +    }
  17.180 +    return x;
  17.181 +}
  17.182 +
  17.183 +/**
  17.184 + * test_and_clear_bit - Clear a bit and return its old value
  17.185 + * @nr: Bit to set
  17.186 + * @addr: Address to count from
  17.187 + *
  17.188 + * This operation is atomic and cannot be reordered.  
  17.189 + * It also implies a memory barrier.
  17.190 + */
  17.191 +static __inline__ int test_and_clear_bit(int nr, volatile void * addr)
  17.192 +{
  17.193 +        int oldbit;
  17.194 +
  17.195 +        __asm__ __volatile__( LOCK_PREFIX
  17.196 +                "btrl %2,%1\n\tsbbl %0,%0"
  17.197 +                :"=r" (oldbit),"=m" (ADDR)
  17.198 +                :"Ir" (nr) : "memory");
  17.199 +        return oldbit;
  17.200 +}
  17.201 +
  17.202 +static __inline__ int constant_test_bit(int nr, const volatile void * addr)
  17.203 +{
  17.204 +    return ((1UL << (nr & 31)) & (((const volatile unsigned int *) addr)[nr >> 5])) != 0;
  17.205 +}
  17.206 +
  17.207 +static __inline__ int variable_test_bit(int nr, volatile void * addr)
  17.208 +{
  17.209 +    int oldbit;
  17.210 +    
  17.211 +    __asm__ __volatile__(
  17.212 +        "btl %2,%1\n\tsbbl %0,%0"
  17.213 +        :"=r" (oldbit)
  17.214 +        :"m" (ADDR),"Ir" (nr));
  17.215 +    return oldbit;
  17.216 +}
  17.217 +
  17.218 +#define test_bit(nr,addr) \
  17.219 +(__builtin_constant_p(nr) ? \
  17.220 + constant_test_bit((nr),(addr)) : \
  17.221 + variable_test_bit((nr),(addr)))
  17.222 +
  17.223 +
  17.224 +/**
  17.225 + * set_bit - Atomically set a bit in memory
  17.226 + * @nr: the bit to set
  17.227 + * @addr: the address to start counting from
  17.228 + *
  17.229 + * This function is atomic and may not be reordered.  See __set_bit()
  17.230 + * if you do not require the atomic guarantees.
  17.231 + * Note that @nr may be almost arbitrarily large; this function is not
  17.232 + * restricted to acting on a single-word quantity.
  17.233 + */
  17.234 +static __inline__ void set_bit(int nr, volatile void * addr)
  17.235 +{
  17.236 +        __asm__ __volatile__( LOCK_PREFIX
  17.237 +                "btsl %1,%0"
  17.238 +                :"=m" (ADDR)
  17.239 +                :"Ir" (nr));
  17.240 +}
  17.241 +
  17.242 +/**
  17.243 + * clear_bit - Clears a bit in memory
  17.244 + * @nr: Bit to clear
  17.245 + * @addr: Address to start counting from
  17.246 + *
  17.247 + * clear_bit() is atomic and may not be reordered.  However, it does
  17.248 + * not contain a memory barrier, so if it is used for locking purposes,
  17.249 + * you should call smp_mb__before_clear_bit() and/or smp_mb__after_clear_bit()
  17.250 + * in order to ensure changes are visible on other processors.
  17.251 + */
  17.252 +static __inline__ void clear_bit(int nr, volatile void * addr)
  17.253 +{
  17.254 +        __asm__ __volatile__( LOCK_PREFIX
  17.255 +                "btrl %1,%0"
  17.256 +                :"=m" (ADDR)
  17.257 +                :"Ir" (nr));
  17.258 +}
  17.259 +
  17.260 +/**
  17.261 + * atomic_inc - increment atomic variable
  17.262 + * @v: pointer of type atomic_t
  17.263 + * 
  17.264 + * Atomically increments @v by 1.  Note that the guaranteed
  17.265 + * useful range of an atomic_t is only 24 bits.
  17.266 + */ 
  17.267 +static __inline__ void atomic_inc(atomic_t *v)
  17.268 +{
  17.269 +        __asm__ __volatile__(
  17.270 +                LOCK "incl %0"
  17.271 +                :"=m" (v->counter)
  17.272 +                :"m" (v->counter));
  17.273 +}
  17.274 +
  17.275 +
  17.276 +#define rdtscll(val) \
  17.277 +     __asm__ __volatile__("rdtsc" : "=A" (val))
  17.278 +
  17.279 +static __inline__ unsigned long __ffs(unsigned long word)
  17.280 +{
  17.281 +        __asm__("bsfl %1,%0"
  17.282 +                :"=r" (word)
  17.283 +                :"rm" (word));
  17.284 +        return word;
  17.285 +}
  17.286 +
  17.287 +#define ADDR (*(volatile long *) addr)
  17.288 +
  17.289 +static __inline__ void synch_set_bit(int nr, volatile void * addr)
  17.290 +{
  17.291 +    __asm__ __volatile__ ( 
  17.292 +        "lock btsl %1,%0"
  17.293 +        : "=m" (ADDR) : "Ir" (nr) : "memory" );
  17.294 +}
  17.295 +
  17.296 +static __inline__ void synch_clear_bit(int nr, volatile void * addr)
  17.297 +{
  17.298 +    __asm__ __volatile__ (
  17.299 +        "lock btrl %1,%0"
  17.300 +        : "=m" (ADDR) : "Ir" (nr) : "memory" );
  17.301 +}
  17.302 +
  17.303 +static __inline__ int synch_test_and_set_bit(int nr, volatile void * addr)
  17.304 +{
  17.305 +    int oldbit;
  17.306 +    __asm__ __volatile__ (
  17.307 +        "lock btsl %2,%1\n\tsbbl %0,%0"
  17.308 +        : "=r" (oldbit), "=m" (ADDR) : "Ir" (nr) : "memory");
  17.309 +    return oldbit;
  17.310 +}
  17.311 +
  17.312 +
  17.313 +static __inline__ int synch_const_test_bit(int nr, const volatile void * addr)
  17.314 +{
  17.315 +    return ((1UL << (nr & 31)) & 
  17.316 +            (((const volatile unsigned int *) addr)[nr >> 5])) != 0;
  17.317 +}
  17.318 +
  17.319 +static __inline__ int synch_var_test_bit(int nr, volatile void * addr)
  17.320 +{
  17.321 +    int oldbit;
  17.322 +    __asm__ __volatile__ (
  17.323 +        "btl %2,%1\n\tsbbl %0,%0"
  17.324 +        : "=r" (oldbit) : "m" (ADDR), "Ir" (nr) );
  17.325 +    return oldbit;
  17.326 +}
  17.327 +
  17.328 +#define synch_test_bit(nr,addr) \
  17.329 +(__builtin_constant_p(nr) ? \
  17.330 + synch_const_test_bit((nr),(addr)) : \
  17.331 + synch_var_test_bit((nr),(addr)))
  17.332 +#endif /* !__ASSEMBLY__ */
  17.333 +
  17.334 +#define rdtsc(low,high) \
  17.335 +     __asm__ __volatile__("rdtsc" : "=a" (low), "=d" (high))
  17.336 +
  17.337 +#endif /* _OS_H_ */
    18.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    18.2 +++ b/extras/mini-os/include/time.h	Wed Jul 06 15:38:25 2005 +0000
    18.3 @@ -0,0 +1,57 @@
    18.4 +/* -*-  Mode:C; c-basic-offset:4; tab-width:4 -*-
    18.5 + ****************************************************************************
    18.6 + * (C) 2003 - Rolf Neugebauer - Intel Research Cambridge
    18.7 + * (C) 2005 - Grzegorz Milos - Intel Research Cambridge
    18.8 + ****************************************************************************
    18.9 + *
   18.10 + *        File: time.h
   18.11 + *      Author: Rolf Neugebauer (neugebar@dcs.gla.ac.uk)
   18.12 + *     Changes: Grzegorz Milos (gm281@cam.ac.uk)
   18.13 + *              
   18.14 + *        Date: Jul 2003, changesJun 2005
   18.15 + * 
   18.16 + * Environment: Xen Minimal OS
   18.17 + * Description: Time and timer functions
   18.18 + *
   18.19 + ****************************************************************************
   18.20 + */
   18.21 +
   18.22 +#ifndef _TIME_H_
   18.23 +#define _TIME_H_
   18.24 +
   18.25 +/*
   18.26 + * System Time
   18.27 + * 64 bit value containing the nanoseconds elapsed since boot time.
   18.28 + * This value is adjusted by frequency drift.
   18.29 + * NOW() returns the current time.
   18.30 + * The other macros are for convenience to approximate short intervals
   18.31 + * of real time into system time 
   18.32 + */
   18.33 +typedef s64 s_time_t;
   18.34 +#define NOW()                   ((s_time_t)get_s_time())
   18.35 +#define SECONDS(_s)             (((s_time_t)(_s))  * 1000000000UL )
   18.36 +#define TENTHS(_ts)             (((s_time_t)(_ts)) * 100000000UL )
   18.37 +#define HUNDREDTHS(_hs)         (((s_time_t)(_hs)) * 10000000UL )
   18.38 +#define MILLISECS(_ms)          (((s_time_t)(_ms)) * 1000000UL )
   18.39 +#define MICROSECS(_us)          (((s_time_t)(_us)) * 1000UL )
   18.40 +#define Time_Max                ((s_time_t) 0x7fffffffffffffffLL)
   18.41 +#define FOREVER                 Time_Max
   18.42 +
   18.43 +
   18.44 +/* wall clock time  */
   18.45 +typedef long time_t;
   18.46 +typedef long suseconds_t;
   18.47 +struct timeval {
   18.48 +	time_t		tv_sec;		/* seconds */
   18.49 +	suseconds_t	tv_usec;	/* microseconds */
   18.50 +};
   18.51 +
   18.52 +
   18.53 +/* prototypes */
   18.54 +void     init_time(void);
   18.55 +s_time_t get_s_time(void);
   18.56 +s_time_t get_v_time(void);
   18.57 +void     gettimeofday(struct timeval *tv);
   18.58 +void     block(u32 millisecs);
   18.59 +
   18.60 +#endif /* _TIME_H_ */
    19.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    19.2 +++ b/extras/mini-os/include/traps.h	Wed Jul 06 15:38:25 2005 +0000
    19.3 @@ -0,0 +1,41 @@
    19.4 +/* 
    19.5 + ****************************************************************************
    19.6 + * (C) 2005 - Grzegorz Milos - Intel Reseach Cambridge
    19.7 + ****************************************************************************
    19.8 + *
    19.9 + *        File: traps.h
   19.10 + *      Author: Grzegorz Milos (gm281@cam.ac.uk)
   19.11 + *              
   19.12 + *        Date: Jun 2005
   19.13 + * 
   19.14 + * Environment: Xen Minimal OS
   19.15 + * Description: Deals with traps
   19.16 + *
   19.17 + ****************************************************************************
   19.18 + */
   19.19 +
   19.20 +#ifndef _TRAPS_H_
   19.21 +#define _TRAPS_H_
   19.22 +
   19.23 +struct pt_regs {
   19.24 +	long ebx;
   19.25 +	long ecx;
   19.26 +	long edx;
   19.27 +	long esi;
   19.28 +	long edi;
   19.29 +	long ebp;
   19.30 +	long eax;
   19.31 +	int  xds;
   19.32 +	int  xes;
   19.33 +	long orig_eax;
   19.34 +	long eip;
   19.35 +	int  xcs;
   19.36 +	long eflags;
   19.37 +	long esp;
   19.38 +	int  xss;
   19.39 +};
   19.40 +
   19.41 +
   19.42 +void dump_regs(struct pt_regs *regs);
   19.43 +
   19.44 +#endif /* _TRAPS_H_ */
    20.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    20.2 +++ b/extras/mini-os/include/types.h	Wed Jul 06 15:38:25 2005 +0000
    20.3 @@ -0,0 +1,52 @@
    20.4 +/* -*-  Mode:C; c-basic-offset:4; tab-width:4 -*-
    20.5 + ****************************************************************************
    20.6 + * (C) 2003 - Rolf Neugebauer - Intel Research Cambridge
    20.7 + ****************************************************************************
    20.8 + *
    20.9 + *        File: types.h
   20.10 + *      Author: Rolf Neugebauer (neugebar@dcs.gla.ac.uk)
   20.11 + *     Changes: 
   20.12 + *              
   20.13 + *        Date: May 2003
   20.14 + * 
   20.15 + * Environment: Xen Minimal OS
   20.16 + * Description: a random collection of type definitions
   20.17 + *
   20.18 + ****************************************************************************
   20.19 + * $Id: h-insert.h,v 1.4 2002/11/08 16:03:55 rn Exp $
   20.20 + ****************************************************************************
   20.21 + */
   20.22 +
   20.23 +#ifndef _TYPES_H_
   20.24 +#define _TYPES_H_
   20.25 +
   20.26 +typedef signed char         s8;
   20.27 +typedef unsigned char       u8;
   20.28 +typedef signed short        s16;
   20.29 +typedef unsigned short      u16;
   20.30 +typedef signed int          s32;
   20.31 +typedef unsigned int        u32;
   20.32 +#ifdef __i386__
   20.33 +typedef signed long long    s64;
   20.34 +typedef unsigned long long  u64;
   20.35 +#elif defined(__x86_64__)
   20.36 +typedef signed long         s64;
   20.37 +typedef unsigned long       u64;
   20.38 +#endif
   20.39 +
   20.40 +typedef unsigned int        size_t;
   20.41 +
   20.42 +/* FreeBSD compat types */
   20.43 +typedef unsigned char       u_char;
   20.44 +typedef unsigned int        u_int;
   20.45 +typedef unsigned long       u_long;
   20.46 +#ifdef __i386__
   20.47 +typedef long long           quad_t;
   20.48 +typedef unsigned long long  u_quad_t;
   20.49 +typedef unsigned int        uintptr_t;
   20.50 +#elif defined(__x86_64__)
   20.51 +typedef long                quad_t;
   20.52 +typedef unsigned long       u_quad_t;
   20.53 +typedef unsigned long       uintptr_t;
   20.54 +#endif
   20.55 +#endif /* _TYPES_H_ */
    21.1 --- a/extras/mini-os/kernel.c	Wed Jul 06 15:36:57 2005 +0000
    21.2 +++ b/extras/mini-os/kernel.c	Wed Jul 06 15:38:25 2005 +0000
    21.3 @@ -5,6 +5,7 @@
    21.4   * from head.S.
    21.5   * 
    21.6   * Copyright (c) 2002-2003, K A Fraser & R Neugebauer
    21.7 + * Copyright (c) 2005, Grzegorz Milos, Intel Research Cambridge
    21.8   * 
    21.9   * Permission is hereby granted, free of charge, to any person obtaining a copy
   21.10   * of this software and associated documentation files (the "Software"), to
   21.11 @@ -56,10 +57,6 @@ char stack[8192];
   21.12  void hypervisor_callback(void);
   21.13  void failsafe_callback(void);
   21.14  
   21.15 -/* default event handlers */
   21.16 -static void exit_handler(int ev, struct pt_regs *regs);
   21.17 -static void debug_handler(int ev, struct pt_regs *regs);
   21.18 -
   21.19  extern char shared_info[PAGE_SIZE];
   21.20  
   21.21  static shared_info_t *map_shared_info(unsigned long pa)
   21.22 @@ -80,6 +77,7 @@ static shared_info_t *map_shared_info(un
   21.23  void start_kernel(start_info_t *si)
   21.24  {
   21.25      static char hello[] = "Bootstrapping...\n";
   21.26 +    int i;
   21.27      (void)HYPERVISOR_console_io(CONSOLEIO_write, strlen(hello), hello);
   21.28  
   21.29      /* Copy the start_info struct to a globally-accessible area. */
   21.30 @@ -126,28 +124,32 @@ void start_kernel(start_info_t *si)
   21.31      init_mm();
   21.32  
   21.33      /* set up events */
   21.34 -//    init_events();
   21.35 -
   21.36 -    /*
   21.37 -     * These need to be replaced with event-channel/control-interface
   21.38 -     * equivalents.
   21.39 -     */
   21.40 -#if 0
   21.41 -    /* Install some handlers. */
   21.42 -    add_ev_action(EV_DIE, &exit_handler);
   21.43 -    enable_ev_action(EV_DIE);
   21.44 -    enable_hypervisor_event(EV_DIE);
   21.45 -
   21.46 -    add_ev_action(EV_DEBUG, &debug_handler);
   21.47 -    enable_ev_action(EV_DEBUG);
   21.48 -    enable_hypervisor_event(EV_DEBUG);
   21.49 -#endif
   21.50 -
   21.51 +    init_events();
   21.52      /* init time and timers */
   21.53 -//    init_time();
   21.54 +    init_time();
   21.55  
   21.56      /* do nothing */
   21.57 -    for ( ; ; ) HYPERVISOR_yield();
   21.58 +    i = 0;
   21.59 +    for ( ; ; ) 
   21.60 +    {      
   21.61 +        if(i >= 1000)         
   21.62 +        {
   21.63 +            {
   21.64 +                unsigned long saved;
   21.65 +                __asm__ ("movl %%esp, %0"
   21.66 +                         :"=r"(saved)  /* y is output operand */
   21.67 +                            /* x is input operand */);
   21.68 +//                        :"a"); /* %eax is clobbered register */
   21.69 +                printk("ESP=0x%lx\n", saved);
   21.70 +            }
   21.71 +            
   21.72 +            printk("1000 bloks\n");
   21.73 +            i=0;            
   21.74 +        }
   21.75 +//        HYPERVISOR_yield();
   21.76 +        block(1);
   21.77 +        i++;
   21.78 +    }
   21.79  }
   21.80  
   21.81  
   21.82 @@ -163,13 +165,3 @@ void do_exit(void)
   21.83      printk("do_exit called!\n");
   21.84      for ( ;; ) HYPERVISOR_shutdown();
   21.85  }
   21.86 -static void exit_handler(int ev, struct pt_regs *regs) {
   21.87 -    do_exit();
   21.88 -}
   21.89 -
   21.90 -/*
   21.91 - * a debug handler to print out some state from the guest
   21.92 - */
   21.93 -static void debug_handler(int ev, struct pt_regs *regs) {
   21.94 -    dump_regs(regs);
   21.95 -}
    22.1 --- a/extras/mini-os/time.c	Wed Jul 06 15:36:57 2005 +0000
    22.2 +++ b/extras/mini-os/time.c	Wed Jul 06 15:38:25 2005 +0000
    22.3 @@ -2,10 +2,12 @@
    22.4   ****************************************************************************
    22.5   * (C) 2003 - Rolf Neugebauer - Intel Research Cambridge
    22.6   * (C) 2002-2003 - Keir Fraser - University of Cambridge 
    22.7 + * (C) 2005 - Grzegorz Milos - Intel Research Cambridge
    22.8   ****************************************************************************
    22.9   *
   22.10   *        File: time.c
   22.11   *      Author: Rolf Neugebauer and Keir Fraser
   22.12 + *     Changes: Grzegorz Milos
   22.13   *
   22.14   * Description: Simple time and timer functions
   22.15   *
   22.16 @@ -30,6 +32,7 @@
   22.17  
   22.18  
   22.19  #include <os.h>
   22.20 +#include <traps.h>
   22.21  #include <types.h>
   22.22  #include <hypervisor.h>
   22.23  #include <events.h>
   22.24 @@ -40,9 +43,13 @@
   22.25   * Time functions
   22.26   *************************************************************************/
   22.27  
   22.28 -static unsigned int rdtsc_bitshift;
   22.29 -static u32 st_scale_f; /* convert ticks -> usecs */
   22.30 -static u32 st_scale_i; /* convert ticks -> usecs */
   22.31 +/* Cached *multiplier* to convert TSC counts to microseconds.
   22.32 + * (see the equation below).
   22.33 + * Equal to 2^32 * (1 / (clocks per usec) ).
   22.34 + * Initialized in time_init.
   22.35 + */
   22.36 +static unsigned long fast_gettimeoffset_quotient;
   22.37 +
   22.38  
   22.39  /* These are peridically updated in shared_info, and then copied here. */
   22.40  static u32 shadow_tsc_stamp;
   22.41 @@ -70,7 +77,7 @@ static void get_time_values_from_xen(voi
   22.42          rmb();
   22.43          shadow_tv.tv_sec    = HYPERVISOR_shared_info->wc_sec;
   22.44          shadow_tv.tv_usec   = HYPERVISOR_shared_info->wc_usec;
   22.45 -        shadow_tsc_stamp    = HYPERVISOR_shared_info->tsc_timestamp.tsc_bits;
   22.46 +        shadow_tsc_stamp    = (u32)HYPERVISOR_shared_info->tsc_timestamp;
   22.47          shadow_system_time  = HYPERVISOR_shared_info->system_time;
   22.48          rmb();
   22.49      }
   22.50 @@ -81,22 +88,33 @@ static void get_time_values_from_xen(voi
   22.51  #define TIME_VALUES_UP_TO_DATE \
   22.52      (shadow_time_version == HYPERVISOR_shared_info->time_version2)
   22.53  
   22.54 -
   22.55 -static __inline__ unsigned long get_time_delta_usecs(void)
   22.56 +static u32  get_time_delta_usecs(void)
   22.57  {
   22.58 -    s32      delta_tsc;
   22.59 -    u32      low;
   22.60 -    u64      delta, tsc;
   22.61 +	register unsigned long eax, edx;
   22.62 +
   22.63 +	/* Read the Time Stamp Counter */
   22.64 +
   22.65 +	rdtsc(eax,edx);
   22.66 +
   22.67 +	/* .. relative to previous jiffy (32 bits is enough) */
   22.68 +	eax -= shadow_tsc_stamp;
   22.69  
   22.70 -    rdtscll(tsc);
   22.71 -    low = (u32)(tsc >> rdtsc_bitshift);
   22.72 -    delta_tsc = (s32)(low - shadow_tsc_stamp);
   22.73 -    if ( unlikely(delta_tsc < 0) ) delta_tsc = 0;
   22.74 -    delta = ((u64)delta_tsc * st_scale_f);
   22.75 -    delta >>= 32;
   22.76 -    delta += ((u64)delta_tsc * st_scale_i);
   22.77 +	/*
   22.78 +	 * Time offset = (tsc_low delta) * fast_gettimeoffset_quotient
   22.79 +	 *             = (tsc_low delta) * (usecs_per_clock)
   22.80 +	 *             = (tsc_low delta) * (usecs_per_jiffy / clocks_per_jiffy)
   22.81 +	 *
   22.82 +	 * Using a mull instead of a divl saves up to 31 clock cycles
   22.83 +	 * in the critical path.
   22.84 +	 */
   22.85  
   22.86 -    return (unsigned long)delta;
   22.87 +	__asm__("mull %2"
   22.88 +		:"=a" (eax), "=d" (edx)
   22.89 +		:"rm" (fast_gettimeoffset_quotient),
   22.90 +		 "0" (eax));
   22.91 +
   22.92 +	/* our adjusted time offset in microseconds */
   22.93 +	return edx;
   22.94  }
   22.95  
   22.96  s64 get_s_time (void)
   22.97 @@ -139,6 +157,25 @@ void gettimeofday(struct timeval *tv)
   22.98      *tv = _tv;
   22.99  }
  22.100  
  22.101 +static void print_current_time(void)
  22.102 +{
  22.103 +    struct timeval tv;
  22.104 +
  22.105 +    get_time_values_from_xen();
  22.106 +
  22.107 +    gettimeofday(&tv);
  22.108 +    printk("T(s=%ld us=%ld)\n", tv.tv_sec, tv.tv_usec);
  22.109 +}
  22.110 +
  22.111 +void block(u32 millisecs)
  22.112 +{
  22.113 +    struct timeval tv;
  22.114 +    gettimeofday(&tv);
  22.115 +    //printk("tv.tv_sec=%ld, tv.tv_usec=%ld, shadow_system_time=%lld\n", tv.tv_sec, tv.tv_usec, shadow_system_time );
  22.116 +    HYPERVISOR_set_timer_op(get_s_time() + 1000000LL * (s64) millisecs);
  22.117 +    HYPERVISOR_block();
  22.118 +}
  22.119 +
  22.120  
  22.121  /*
  22.122   * Just a dummy 
  22.123 @@ -146,41 +183,38 @@ void gettimeofday(struct timeval *tv)
  22.124  static void timer_handler(int ev, struct pt_regs *regs)
  22.125  {
  22.126      static int i;
  22.127 -    struct timeval tv;
  22.128  
  22.129      get_time_values_from_xen();
  22.130  
  22.131      i++;
  22.132      if (i >= 1000) {
  22.133 -        gettimeofday(&tv);
  22.134 -        printf("T(s=%ld us=%ld)\n", tv.tv_sec, tv.tv_usec);
  22.135 +        print_current_time();
  22.136          i = 0;
  22.137      }
  22.138  }
  22.139  
  22.140  
  22.141 +
  22.142  void init_time(void)
  22.143  {
  22.144 -    u64         __cpu_khz, cpu_freq, scale;
  22.145 +    u64         __cpu_khz;
  22.146      unsigned long cpu_khz;
  22.147  
  22.148      __cpu_khz = HYPERVISOR_shared_info->cpu_freq;
  22.149 +
  22.150      cpu_khz = (u32) (__cpu_khz/1000);
  22.151  
  22.152 -    rdtsc_bitshift = HYPERVISOR_shared_info->tsc_timestamp.tsc_bitshift;
  22.153 -    cpu_freq       = HYPERVISOR_shared_info->cpu_freq;
  22.154 -
  22.155 -    scale = 1000000LL << (32 + rdtsc_bitshift);
  22.156 -    scale /= cpu_freq;
  22.157 -
  22.158 -    st_scale_f = scale & 0xffffffff;
  22.159 -    st_scale_i = scale >> 32;
  22.160 -
  22.161      printk("Xen reported: %lu.%03lu MHz processor.\n", 
  22.162             cpu_khz / 1000, cpu_khz % 1000);
  22.163 +	/* (10^6 * 2^32) / cpu_hz = (10^3 * 2^32) / cpu_khz =
  22.164 +	   (2^32 * 1 / (clocks/us)) */
  22.165 +	{	
  22.166 +		unsigned long eax=0, edx=1000;
  22.167 +		__asm__("divl %2"
  22.168 +		    :"=a" (fast_gettimeoffset_quotient), "=d" (edx)
  22.169 +		    :"r" (cpu_khz),
  22.170 +		    "0" (eax), "1" (edx));
  22.171 +	}
  22.172  
  22.173 -    add_ev_action(EV_TIMER, &timer_handler);
  22.174 -    enable_ev_action(EV_TIMER);
  22.175 -    enable_hypervisor_event(EV_TIMER);
  22.176 -
  22.177 +    bind_virq(VIRQ_TIMER, &timer_handler);
  22.178  }
    23.1 --- a/extras/mini-os/traps.c	Wed Jul 06 15:36:57 2005 +0000
    23.2 +++ b/extras/mini-os/traps.c	Wed Jul 06 15:38:25 2005 +0000
    23.3 @@ -1,5 +1,6 @@
    23.4  
    23.5  #include <os.h>
    23.6 +#include <traps.h>
    23.7  #include <hypervisor.h>
    23.8  #include <mm.h>
    23.9  #include <lib.h>
   23.10 @@ -37,21 +38,22 @@ void dump_regs(struct pt_regs *regs)
   23.11  
   23.12  #ifdef __x86_64__
   23.13      esp = regs->rsp;
   23.14 -    ss  = regs->ss;
   23.15 +    ss  = regs->xss;
   23.16  #else
   23.17      esp = (unsigned long) (&regs->esp);
   23.18      ss = __KERNEL_DS;
   23.19 -    if (regs->cs & 2) {
   23.20 +    if (regs->xcs & 2) {
   23.21 +printk("CS is true, esp is %x\n", regs->esp);
   23.22          esp = regs->esp;
   23.23 -        ss = regs->ss & 0xffff;
   23.24 +        ss = regs->xss & 0xffff;
   23.25      }
   23.26  #endif
   23.27 -    printf("EIP:    %04x:[<%p>] %08x\n",
   23.28 -           0xffff & regs->cs , regs->eip, regs->error_code);
   23.29 +    printf("EIP:    %04x:[<%p>]\n",
   23.30 +           0xffff & regs->xcs , regs->eip);
   23.31      printf("EFLAGS: %p\n",regs->eflags);
   23.32 -    printf("eax: %p   ebx: %p   ecx: %p   edx: %p\n",
   23.33 +    printf("eax: %08lx   ebx: %08lx   ecx: %08lx   edx: %08lx\n",
   23.34             regs->eax, regs->ebx, regs->ecx, regs->edx);
   23.35 -    printf("esi: %p   edi: %p   ebp: %p   esp: %p\n",
   23.36 +    printf("esi: %08lx   edi: %08lx   ebp: %08lx   esp: %08lx\n",
   23.37             regs->esi, regs->edi, regs->ebp, esp);
   23.38  #ifdef __x86_64__
   23.39      printf("r8 : %p   r9 : %p   r10: %p   r11: %p\n",
   23.40 @@ -60,40 +62,28 @@ void dump_regs(struct pt_regs *regs)
   23.41             regs->r12, regs->r13, regs->r14, regs->r15);
   23.42  #endif
   23.43      printf("ds: %04x   es: %04x   ss: %04x\n",
   23.44 -           regs->ds & 0xffff, regs->es & 0xffff, ss);
   23.45 +           regs->xds & 0xffff, regs->xes & 0xffff, ss);
   23.46  }	
   23.47  
   23.48  
   23.49 -static __inline__ void dump_code(unsigned long eip)
   23.50 +static void do_trap(int trapnr, char *str, struct pt_regs * regs, unsigned long error_code)
   23.51  {
   23.52 -    unsigned char *ptr = (unsigned char *)eip;
   23.53 -    int x;
   23.54 -    
   23.55 -    printk("Bytes at eip: ");
   23.56 -    for ( x = -4; x < 5; x++ )
   23.57 -        printf("%02x ", ptr[x]);
   23.58 -    printk("\n");
   23.59 -}
   23.60 -
   23.61 -static void __inline__ do_trap(int trapnr, char *str,
   23.62 -                               struct pt_regs * regs)
   23.63 -{
   23.64 -    printk("FATAL:  Unhandled Trap %d (%s)\n", trapnr, str);
   23.65 +    printk("FATAL:  Unhandled Trap %d (%s), error code=0x%lx\n", trapnr, str, error_code);
   23.66 +    printk("Regs address %p\n", regs);
   23.67      dump_regs(regs);
   23.68 -    dump_code(regs->eip);
   23.69      do_exit();
   23.70  }
   23.71  
   23.72  #define DO_ERROR(trapnr, str, name) \
   23.73 -void do_##name(struct pt_regs * regs) \
   23.74 +void do_##name(struct pt_regs * regs, unsigned long error_code) \
   23.75  { \
   23.76 -	do_trap(trapnr, str, regs); \
   23.77 +	do_trap(trapnr, str, regs, error_code); \
   23.78  }
   23.79  
   23.80  #define DO_ERROR_INFO(trapnr, str, name, sicode, siaddr) \
   23.81 -void do_##name(struct pt_regs * regs) \
   23.82 +void do_##name(struct pt_regs * regs, unsigned long error_code) \
   23.83  { \
   23.84 -	do_trap(trapnr, str, regs); \
   23.85 +	do_trap(trapnr, str, regs, error_code); \
   23.86  }
   23.87  
   23.88  DO_ERROR_INFO( 0, "divide error", divide_error, FPE_INTDIV, regs->eip)
   23.89 @@ -109,13 +99,11 @@ DO_ERROR(12, "stack segment", stack_segm
   23.90  DO_ERROR_INFO(17, "alignment check", alignment_check, BUS_ADRALN, 0)
   23.91  DO_ERROR(18, "machine check", machine_check)
   23.92  
   23.93 -extern unsigned long virt_cr2;
   23.94 -void do_page_fault(struct pt_regs *regs)
   23.95 +void do_page_fault(struct pt_regs *regs, unsigned long error_code,
   23.96 +								                     unsigned long addr)
   23.97  {
   23.98 -    unsigned long addr = virt_cr2;
   23.99      printk("Page fault at linear address %p\n", addr);
  23.100      dump_regs(regs);
  23.101 -    dump_code(regs->eip);
  23.102  #ifdef __x86_64__
  23.103      {
  23.104          unsigned long *tab = (unsigned long *)start_info.pt_base;
  23.105 @@ -126,35 +114,33 @@ void do_page_fault(struct pt_regs *regs)
  23.106          page = tab[l4_table_offset(addr)];
  23.107          tab = __va(mfn_to_pfn(pte_to_mfn(page)) << PAGE_SHIFT);
  23.108          printk(" L4 = %p (%p)\n", page, tab);
  23.109 -        if ( !(page & _PAGE_PRESENT) )
  23.110 +        if ( !(page & AGERESENT) )
  23.111              goto out;
  23.112  
  23.113          page = tab[l3_table_offset(addr)];
  23.114          tab = __va(mfn_to_pfn(pte_to_mfn(page)) << PAGE_SHIFT);
  23.115          printk("  L3 = %p (%p)\n", page, tab);
  23.116 -        if ( !(page & _PAGE_PRESENT) )
  23.117 +        if ( !(page & AGERESENT) )
  23.118              goto out;
  23.119          
  23.120          page = tab[l2_table_offset(addr)];
  23.121          tab = __va(mfn_to_pfn(pte_to_mfn(page)) << PAGE_SHIFT);
  23.122          printk("   L2 = %p (%p) %s\n", page, tab,
  23.123 -               (page & _PAGE_PSE) ? "(2MB)" : "");
  23.124 -        if ( !(page & _PAGE_PRESENT) || (page & _PAGE_PSE) )
  23.125 +               (page & AGESE) ? "(2MB)" : "");
  23.126 +        if ( !(page & AGERESENT) || (page & AGESE) )
  23.127              goto out;
  23.128          
  23.129          page = tab[l1_table_offset(addr)];
  23.130          printk("    L1 = %p\n", page);
  23.131      }
  23.132  #endif
  23.133 - out:
  23.134      do_exit();
  23.135  }
  23.136  
  23.137 -void do_general_protection(struct pt_regs *regs)
  23.138 +void do_general_protection(struct pt_regs *regs, long error_code)
  23.139  {
  23.140 -    printk("GPF\n");
  23.141 +    printk("GPF %p, error_code=%lx\n", regs, error_code);
  23.142      dump_regs(regs);
  23.143 -    dump_code(regs->eip);
  23.144      do_exit();
  23.145  }
  23.146  
  23.147 @@ -172,7 +158,6 @@ void do_coprocessor_error(struct pt_regs
  23.148  {
  23.149      printk("Copro error\n");
  23.150      dump_regs(regs);
  23.151 -    dump_code(regs->eip);
  23.152      do_exit();
  23.153  }
  23.154  
  23.155 @@ -196,28 +181,25 @@ void do_spurious_interrupt_bug(struct pt
  23.156   * The 'privilege ring' field specifies the least-privileged ring that
  23.157   * can trap to that vector using a software-interrupt instruction (INT).
  23.158   */
  23.159 -#ifdef __x86_64__
  23.160 -#define _P 0,
  23.161 -#endif
  23.162  static trap_info_t trap_table[] = {
  23.163 -    {  0, 0, __KERNEL_CS, _P (unsigned long)divide_error                },
  23.164 -    {  1, 0, __KERNEL_CS, _P (unsigned long)debug                       },
  23.165 -    {  3, 3, __KERNEL_CS, _P (unsigned long)int3                        },
  23.166 -    {  4, 3, __KERNEL_CS, _P (unsigned long)overflow                    },
  23.167 -    {  5, 3, __KERNEL_CS, _P (unsigned long)bounds                      },
  23.168 -    {  6, 0, __KERNEL_CS, _P (unsigned long)invalid_op                  },
  23.169 -    {  7, 0, __KERNEL_CS, _P (unsigned long)device_not_available        },
  23.170 -    {  9, 0, __KERNEL_CS, _P (unsigned long)coprocessor_segment_overrun },
  23.171 -    { 10, 0, __KERNEL_CS, _P (unsigned long)invalid_TSS                 },
  23.172 -    { 11, 0, __KERNEL_CS, _P (unsigned long)segment_not_present         },
  23.173 -    { 12, 0, __KERNEL_CS, _P (unsigned long)stack_segment               },
  23.174 -    { 13, 0, __KERNEL_CS, _P (unsigned long)general_protection          },
  23.175 -    { 14, 0, __KERNEL_CS, _P (unsigned long)page_fault                  },
  23.176 -    { 15, 0, __KERNEL_CS, _P (unsigned long)spurious_interrupt_bug      },
  23.177 -    { 16, 0, __KERNEL_CS, _P (unsigned long)coprocessor_error           },
  23.178 -    { 17, 0, __KERNEL_CS, _P (unsigned long)alignment_check             },
  23.179 -    { 18, 0, __KERNEL_CS, _P (unsigned long)machine_check               },
  23.180 -    { 19, 0, __KERNEL_CS, _P (unsigned long)simd_coprocessor_error      },
  23.181 +    {  0, 0, __KERNEL_CS, (unsigned long)divide_error                },
  23.182 +    {  1, 0, __KERNEL_CS, (unsigned long)debug                       },
  23.183 +    {  3, 3, __KERNEL_CS, (unsigned long)int3                        },
  23.184 +    {  4, 3, __KERNEL_CS, (unsigned long)overflow                    },
  23.185 +    {  5, 3, __KERNEL_CS, (unsigned long)bounds                      },
  23.186 +    {  6, 0, __KERNEL_CS, (unsigned long)invalid_op                  },
  23.187 +    {  7, 0, __KERNEL_CS, (unsigned long)device_not_available        },
  23.188 +    {  9, 0, __KERNEL_CS, (unsigned long)coprocessor_segment_overrun },
  23.189 +    { 10, 0, __KERNEL_CS, (unsigned long)invalid_TSS                 },
  23.190 +    { 11, 0, __KERNEL_CS, (unsigned long)segment_not_present         },
  23.191 +    { 12, 0, __KERNEL_CS, (unsigned long)stack_segment               },
  23.192 +    { 13, 0, __KERNEL_CS, (unsigned long)general_protection          },
  23.193 +    { 14, 0, __KERNEL_CS, (unsigned long)page_fault                  },
  23.194 +    { 15, 0, __KERNEL_CS, (unsigned long)spurious_interrupt_bug      },
  23.195 +    { 16, 0, __KERNEL_CS, (unsigned long)coprocessor_error           },
  23.196 +    { 17, 0, __KERNEL_CS, (unsigned long)alignment_check             },
  23.197 +    { 18, 0, __KERNEL_CS, (unsigned long)machine_check               },
  23.198 +    { 19, 0, __KERNEL_CS, (unsigned long)simd_coprocessor_error      },
  23.199      {  0, 0,           0, 0                           }
  23.200  };
  23.201      
  23.202 @@ -227,3 +209,4 @@ void trap_init(void)
  23.203  {
  23.204      HYPERVISOR_set_trap_table(trap_table);    
  23.205  }
  23.206 +
    24.1 --- a/extras/mini-os/x86_32.S	Wed Jul 06 15:36:57 2005 +0000
    24.2 +++ b/extras/mini-os/x86_32.S	Wed Jul 06 15:38:25 2005 +0000
    24.3 @@ -1,4 +1,6 @@
    24.4  #include <os.h>
    24.5 +#include <xen/arch-x86_32.h>
    24.6 +
    24.7  
    24.8  .section __xen_guest
    24.9          .asciz  "XEN_VER=3.0,LOADER=generic,PT_MODE_WRITABLE"
   24.10 @@ -21,6 +23,7 @@ stack_start:
   24.11  shared_info:
   24.12          .org 0x2000
   24.13          
   24.14 +
   24.15  ES		= 0x20
   24.16  ORIG_EAX	= 0x24
   24.17  EIP		= 0x28
   24.18 @@ -62,6 +65,31 @@ ENTRY(divide_error)
   24.19  do_exception:
   24.20  	pushl %ds
   24.21  	pushl %eax
   24.22 +	xorl %eax, %eax
   24.23 +	pushl %ebp
   24.24 +	pushl %edi
   24.25 +	pushl %esi
   24.26 +	pushl %edx
   24.27 +	decl %eax			# eax = -1
   24.28 +	pushl %ecx
   24.29 +	pushl %ebx
   24.30 +	cld
   24.31 +	movl %es, %ecx
   24.32 +	movl ES(%esp), %edi		# get the function address
   24.33 +	movl ORIG_EAX(%esp), %edx	# get the error code
   24.34 +	movl %eax, ORIG_EAX(%esp)
   24.35 +	movl %ecx, ES(%esp)
   24.36 +	movl $(__KERNEL_DS), %ecx
   24.37 +	movl %ecx, %ds
   24.38 +	movl %ecx, %es
   24.39 +	movl %esp,%eax			# pt_regs pointer
   24.40 +    pushl %edx
   24.41 +    pushl %eax
   24.42 +	call *%edi
   24.43 +    addl $8,%esp
   24.44 +    
   24.45 +/*    pushl %ds
   24.46 +	pushl %eax
   24.47  	xorl %eax,%eax
   24.48  	pushl %ebp
   24.49  	pushl %edi
   24.50 @@ -83,7 +111,7 @@ do_exception:
   24.51  	movl %edx,%ds
   24.52  	movl %edx,%es
   24.53  	call *%edi
   24.54 -	addl $8,%esp
   24.55 +	addl $8,%esp  */
   24.56  
   24.57          
   24.58  ret_from_exception:
   24.59 @@ -112,19 +140,19 @@ ENTRY(hypervisor_callback)
   24.60          cmpl $ecrit,%eax
   24.61          jb   critical_region_fixup
   24.62  11:     push %esp
   24.63 -#        call do_hypervisor_callback
   24.64 +        call do_hypervisor_callback
   24.65          add  $4,%esp
   24.66          movl HYPERVISOR_shared_info,%esi
   24.67          xorl %eax,%eax
   24.68          movb CS(%esp),%cl
   24.69      	test $2,%cl          # slow return to ring 2 or 3
   24.70          jne  safesti
   24.71 -safesti:btsl $31,4(%esi)     # reenable event callbacks
   24.72 +safesti:movb $0,1(%esi)     # reenable event callbacks
   24.73  scrit:  /**** START OF CRITICAL REGION ****/
   24.74 -        cmpl %eax,(%esi)
   24.75 -        jne  14f              # process more events if necessary...
   24.76 +        testb $0xFF,(%esi)
   24.77 +        jnz  14f              # process more events if necessary...
   24.78          RESTORE_ALL
   24.79 -14:     btrl %eax,4(%esi)
   24.80 +14:     movb $1,1(%esi)
   24.81          jmp  11b
   24.82  ecrit:  /**** END OF CRITICAL REGION ****/
   24.83  # [How we do the fixup]. We want to merge the current stack frame with the
   24.84 @@ -153,7 +181,7 @@ 16:     movl %edi,%esp        # final %e
   24.85          jmp  11b
   24.86           
   24.87  critical_fixup_table:        
   24.88 -        .byte 0x00,0x00                       # cmpl %eax,(%esi)
   24.89 +        .byte 0x00,0x00,0x00                  # testb $0xff,(%esi)
   24.90          .byte 0x00,0x00                       # jne  14f
   24.91          .byte 0x00                            # pop  %ebx
   24.92          .byte 0x04                            # pop  %ecx
   24.93 @@ -166,7 +194,7 @@ critical_fixup_table:
   24.94          .byte 0x20                            # pop  %es
   24.95          .byte 0x24,0x24,0x24                  # add  $4,%esp
   24.96          .byte 0x28                            # iret
   24.97 -        .byte 0x00,0x00,0x00,0x00,0x00        # btrl $31,4(%esi)
   24.98 +        .byte 0x00,0x00,0x00,0x00             # movb $1,1(%esi)
   24.99          .byte 0x00,0x00                       # jmp  11b
  24.100         
  24.101  # Hypervisor uses this for application faults while it executes.
  24.102 @@ -220,10 +248,6 @@ ENTRY(coprocessor_segment_overrun)
  24.103  	pushl $do_coprocessor_segment_overrun
  24.104  	jmp do_exception
  24.105  
  24.106 -ENTRY(double_fault)
  24.107 -	pushl $do_double_fault
  24.108 -	jmp do_exception
  24.109 -
  24.110  ENTRY(invalid_TSS)
  24.111  	pushl $do_invalid_TSS
  24.112  	jmp do_exception
  24.113 @@ -246,32 +270,30 @@ ENTRY(alignment_check)
  24.114  
  24.115  # This handler is special, because it gets an extra value on its stack,
  24.116  # which is the linear faulting address.
  24.117 +# fastcall register usage:  %eax = pt_regs, %edx = error code,
  24.118 +#			    %ecx = fault address
  24.119  ENTRY(page_fault)
  24.120  	pushl %ds
  24.121  	pushl %eax
  24.122 -	xorl %eax,%eax
  24.123 +	xorl %eax, %eax
  24.124  	pushl %ebp
  24.125  	pushl %edi
  24.126  	pushl %esi
  24.127  	pushl %edx
  24.128 -	decl %eax			# eax = -1
  24.129 +	decl %eax			/* eax = -1 */
  24.130  	pushl %ecx
  24.131  	pushl %ebx
  24.132  	cld
  24.133 -	movl %es,%ecx
  24.134 -	movl ORIG_EAX(%esp), %esi	# get the error code
  24.135 -	movl ES(%esp), %edi		# get the faulting address
  24.136 +	movl %es,%edi
  24.137 +	movl ES(%esp), %ecx		/* get the faulting address */
  24.138 +	movl ORIG_EAX(%esp), %edx	/* get the error code */
  24.139  	movl %eax, ORIG_EAX(%esp)
  24.140 -	movl %ecx, ES(%esp)
  24.141 -	movl %esp,%edx
  24.142 -        pushl %edi                      # push the faulting address
  24.143 -	pushl %esi			# push the error code
  24.144 -	pushl %edx			# push the pt_regs pointer
  24.145 -	movl $(__KERNEL_DS),%edx
  24.146 -	movl %edx,%ds
  24.147 -	movl %edx,%es
  24.148 +	movl %edi, ES(%esp)
  24.149 +	movl $(__KERNEL_DS),%eax
  24.150 +	movl %eax, %ds
  24.151 +	movl %eax, %es
  24.152 +	movl %esp,%eax			/* pt_regs pointer */
  24.153  	call do_page_fault
  24.154 -	addl $12,%esp
  24.155  	jmp ret_from_exception
  24.156  
  24.157  ENTRY(machine_check)
    25.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    25.2 +++ b/linux-2.6.11-xen-sparse/arch/xen/configs/xen_defconfig_x86_32	Wed Jul 06 15:38:25 2005 +0000
    25.3 @@ -0,0 +1,2936 @@
    25.4 +#
    25.5 +# Automatically generated make config: don't edit
    25.6 +# Linux kernel version: 2.6.11.12-xen
    25.7 +# Thu Jun 30 16:58:00 2005
    25.8 +#
    25.9 +CONFIG_XEN=y
   25.10 +CONFIG_ARCH_XEN=y
   25.11 +CONFIG_NO_IDLE_HZ=y
   25.12 +
   25.13 +#
   25.14 +# XEN
   25.15 +#
   25.16 +CONFIG_XEN_PRIVILEGED_GUEST=y
   25.17 +CONFIG_XEN_PHYSDEV_ACCESS=y
   25.18 +CONFIG_XEN_BLKDEV_BACKEND=y
   25.19 +# CONFIG_XEN_BLKDEV_TAP_BE is not set
   25.20 +CONFIG_XEN_BLKDEV_GRANT=y
   25.21 +CONFIG_XEN_NETDEV_BACKEND=y
   25.22 +CONFIG_XEN_BLKDEV_FRONTEND=y
   25.23 +CONFIG_XEN_NETDEV_FRONTEND=y
   25.24 +# CONFIG_XEN_NETDEV_FRONTEND_PIPELINED_TRANSMITTER is not set
   25.25 +# CONFIG_XEN_BLKDEV_TAP is not set
   25.26 +# CONFIG_XEN_SHADOW_MODE is not set
   25.27 +CONFIG_XEN_SCRUB_PAGES=y
   25.28 +CONFIG_XEN_X86=y
   25.29 +# CONFIG_XEN_X86_64 is not set
   25.30 +CONFIG_HAVE_ARCH_DEV_ALLOC_SKB=y
   25.31 +
   25.32 +#
   25.33 +# Code maturity level options
   25.34 +#
   25.35 +CONFIG_EXPERIMENTAL=y
   25.36 +# CONFIG_CLEAN_COMPILE is not set
   25.37 +CONFIG_BROKEN=y
   25.38 +CONFIG_BROKEN_ON_SMP=y
   25.39 +CONFIG_LOCK_KERNEL=y
   25.40 +
   25.41 +#
   25.42 +# General setup
   25.43 +#
   25.44 +CONFIG_LOCALVERSION=""
   25.45 +CONFIG_SWAP=y
   25.46 +CONFIG_SYSVIPC=y
   25.47 +CONFIG_POSIX_MQUEUE=y
   25.48 +CONFIG_BSD_PROCESS_ACCT=y
   25.49 +# CONFIG_BSD_PROCESS_ACCT_V3 is not set
   25.50 +CONFIG_SYSCTL=y
   25.51 +# CONFIG_AUDIT is not set
   25.52 +CONFIG_LOG_BUF_SHIFT=14
   25.53 +CONFIG_HOTPLUG=y
   25.54 +CONFIG_KOBJECT_UEVENT=y
   25.55 +# CONFIG_IKCONFIG is not set
   25.56 +CONFIG_EMBEDDED=y
   25.57 +CONFIG_KALLSYMS=y
   25.58 +# CONFIG_KALLSYMS_ALL is not set
   25.59 +# CONFIG_KALLSYMS_EXTRA_PASS is not set
   25.60 +CONFIG_FUTEX=y
   25.61 +CONFIG_EPOLL=y
   25.62 +# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
   25.63 +CONFIG_SHMEM=y
   25.64 +CONFIG_CC_ALIGN_FUNCTIONS=0
   25.65 +CONFIG_CC_ALIGN_LABELS=0
   25.66 +CONFIG_CC_ALIGN_LOOPS=0
   25.67 +CONFIG_CC_ALIGN_JUMPS=0
   25.68 +# CONFIG_TINY_SHMEM is not set
   25.69 +
   25.70 +#
   25.71 +# Loadable module support
   25.72 +#
   25.73 +CONFIG_MODULES=y
   25.74 +CONFIG_MODULE_UNLOAD=y
   25.75 +CONFIG_MODULE_FORCE_UNLOAD=y
   25.76 +CONFIG_OBSOLETE_MODPARM=y
   25.77 +CONFIG_MODVERSIONS=y
   25.78 +# CONFIG_MODULE_SRCVERSION_ALL is not set
   25.79 +CONFIG_KMOD=y
   25.80 +CONFIG_STOP_MACHINE=y
   25.81 +
   25.82 +#
   25.83 +# X86 Processor Configuration
   25.84 +#
   25.85 +CONFIG_XENARCH="i386"
   25.86 +CONFIG_X86=y
   25.87 +CONFIG_MMU=y
   25.88 +CONFIG_UID16=y
   25.89 +CONFIG_GENERIC_ISA_DMA=y
   25.90 +CONFIG_GENERIC_IOMAP=y
   25.91 +# CONFIG_M386 is not set
   25.92 +# CONFIG_M486 is not set
   25.93 +# CONFIG_M586 is not set
   25.94 +# CONFIG_M586TSC is not set
   25.95 +# CONFIG_M586MMX is not set
   25.96 +CONFIG_M686=y
   25.97 +# CONFIG_MPENTIUMII is not set
   25.98 +# CONFIG_MPENTIUMIII is not set
   25.99 +# CONFIG_MPENTIUMM is not set
  25.100 +# CONFIG_MPENTIUM4 is not set
  25.101 +# CONFIG_MK6 is not set
  25.102 +# CONFIG_MK7 is not set
  25.103 +# CONFIG_MK8 is not set
  25.104 +# CONFIG_MCRUSOE is not set
  25.105 +# CONFIG_MEFFICEON is not set
  25.106 +# CONFIG_MWINCHIPC6 is not set
  25.107 +# CONFIG_MWINCHIP2 is not set
  25.108 +# CONFIG_MWINCHIP3D is not set
  25.109 +# CONFIG_MCYRIXIII is not set
  25.110 +# CONFIG_MVIAC3_2 is not set
  25.111 +# CONFIG_X86_GENERIC is not set
  25.112 +CONFIG_X86_CMPXCHG=y
  25.113 +CONFIG_X86_XADD=y
  25.114 +CONFIG_X86_L1_CACHE_SHIFT=5
  25.115 +CONFIG_RWSEM_XCHGADD_ALGORITHM=y
  25.116 +CONFIG_GENERIC_CALIBRATE_DELAY=y
  25.117 +CONFIG_X86_PPRO_FENCE=y
  25.118 +CONFIG_X86_WP_WORKS_OK=y
  25.119 +CONFIG_X86_INVLPG=y
  25.120 +CONFIG_X86_BSWAP=y
  25.121 +CONFIG_X86_POPAD_OK=y
  25.122 +CONFIG_X86_GOOD_APIC=y
  25.123 +CONFIG_X86_USE_PPRO_CHECKSUM=y
  25.124 +# CONFIG_HPET_TIMER is not set
  25.125 +# CONFIG_HPET_EMULATE_RTC is not set
  25.126 +CONFIG_SMP=y
  25.127 +CONFIG_SMP_ALTERNATIVES=y
  25.128 +CONFIG_NR_CPUS=8
  25.129 +# CONFIG_SCHED_SMT is not set
  25.130 +CONFIG_PREEMPT=y
  25.131 +CONFIG_PREEMPT_BKL=y
  25.132 +CONFIG_MICROCODE=m
  25.133 +CONFIG_X86_CPUID=m
  25.134 +
  25.135 +#
  25.136 +# Firmware Drivers
  25.137 +#
  25.138 +CONFIG_EDD=m
  25.139 +# CONFIG_NOHIGHMEM is not set
  25.140 +CONFIG_HIGHMEM4G=y
  25.141 +CONFIG_HIGHMEM=y
  25.142 +CONFIG_MTRR=y
  25.143 +CONFIG_HAVE_DEC_LOCK=y
  25.144 +# CONFIG_REGPARM is not set
  25.145 +CONFIG_X86_LOCAL_APIC=y
  25.146 +CONFIG_X86_IO_APIC=y
  25.147 +# CONFIG_HOTPLUG_CPU is not set
  25.148 +
  25.149 +#
  25.150 +# Bus options (PCI, PCMCIA, EISA, MCA, ISA)
  25.151 +#
  25.152 +CONFIG_PCI=y
  25.153 +# CONFIG_PCI_GOBIOS is not set
  25.154 +# CONFIG_PCI_GOMMCONFIG is not set
  25.155 +# CONFIG_PCI_GODIRECT is not set
  25.156 +CONFIG_PCI_GOANY=y
  25.157 +CONFIG_PCI_BIOS=y
  25.158 +CONFIG_PCI_DIRECT=y
  25.159 +CONFIG_PCI_MMCONFIG=y
  25.160 +# CONFIG_PCIEPORTBUS is not set
  25.161 +# CONFIG_PCI_MSI is not set
  25.162 +# CONFIG_PCI_LEGACY_PROC is not set
  25.163 +CONFIG_PCI_NAMES=y
  25.164 +CONFIG_ISA=y
  25.165 +# CONFIG_EISA is not set
  25.166 +# CONFIG_MCA is not set
  25.167 +CONFIG_SCx200=m
  25.168 +
  25.169 +#
  25.170 +# PCCARD (PCMCIA/CardBus) support
  25.171 +#
  25.172 +CONFIG_PCCARD=m
  25.173 +# CONFIG_PCMCIA_DEBUG is not set
  25.174 +CONFIG_PCMCIA=m
  25.175 +CONFIG_CARDBUS=y
  25.176 +
  25.177 +#
  25.178 +# PC-card bridges
  25.179 +#
  25.180 +CONFIG_YENTA=m
  25.181 +CONFIG_PD6729=m
  25.182 +CONFIG_I82092=m
  25.183 +CONFIG_I82365=m
  25.184 +CONFIG_TCIC=m
  25.185 +CONFIG_PCMCIA_PROBE=y
  25.186 +CONFIG_PCCARD_NONSTATIC=m
  25.187 +
  25.188 +#
  25.189 +# PCI Hotplug Support
  25.190 +#
  25.191 +CONFIG_HOTPLUG_PCI=m
  25.192 +CONFIG_HOTPLUG_PCI_FAKE=m
  25.193 +# CONFIG_HOTPLUG_PCI_COMPAQ is not set
  25.194 +# CONFIG_HOTPLUG_PCI_IBM is not set
  25.195 +# CONFIG_HOTPLUG_PCI_ACPI is not set
  25.196 +CONFIG_HOTPLUG_PCI_CPCI=y
  25.197 +CONFIG_HOTPLUG_PCI_CPCI_ZT5550=m
  25.198 +CONFIG_HOTPLUG_PCI_CPCI_GENERIC=m
  25.199 +CONFIG_HOTPLUG_PCI_SHPC=m
  25.200 +# CONFIG_HOTPLUG_PCI_SHPC_POLL_EVENT_MODE is not set
  25.201 +
  25.202 +#
  25.203 +# Kernel hacking
  25.204 +#
  25.205 +CONFIG_DEBUG_KERNEL=y
  25.206 +CONFIG_MAGIC_SYSRQ=y
  25.207 +# CONFIG_SCHEDSTATS is not set
  25.208 +# CONFIG_DEBUG_SLAB is not set
  25.209 +CONFIG_DEBUG_PREEMPT=y
  25.210 +# CONFIG_DEBUG_SPINLOCK is not set
  25.211 +# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
  25.212 +# CONFIG_DEBUG_KOBJECT is not set
  25.213 +# CONFIG_DEBUG_HIGHMEM is not set
  25.214 +# CONFIG_DEBUG_BUGVERBOSE is not set
  25.215 +# CONFIG_DEBUG_INFO is not set
  25.216 +# CONFIG_DEBUG_FS is not set
  25.217 +# CONFIG_FRAME_POINTER is not set
  25.218 +# CONFIG_EARLY_PRINTK is not set
  25.219 +# CONFIG_DEBUG_STACKOVERFLOW is not set
  25.220 +# CONFIG_KPROBES is not set
  25.221 +# CONFIG_DEBUG_STACK_USAGE is not set
  25.222 +# CONFIG_DEBUG_PAGEALLOC is not set
  25.223 +# CONFIG_4KSTACKS is not set
  25.224 +CONFIG_X86_FIND_SMP_CONFIG=y
  25.225 +CONFIG_X86_MPPARSE=y
  25.226 +CONFIG_GENERIC_HARDIRQS=y
  25.227 +CONFIG_GENERIC_IRQ_PROBE=y
  25.228 +CONFIG_X86_SMP=y
  25.229 +CONFIG_X86_BIOS_REBOOT=y
  25.230 +CONFIG_X86_TRAMPOLINE=y
  25.231 +
  25.232 +#
  25.233 +# Executable file formats
  25.234 +#
  25.235 +CONFIG_BINFMT_ELF=y
  25.236 +CONFIG_BINFMT_AOUT=m
  25.237 +CONFIG_BINFMT_MISC=m
  25.238 +
  25.239 +#
  25.240 +# Device Drivers
  25.241 +#
  25.242 +
  25.243 +#
  25.244 +# Generic Driver Options
  25.245 +#
  25.246 +CONFIG_STANDALONE=y
  25.247 +CONFIG_PREVENT_FIRMWARE_BUILD=y
  25.248 +CONFIG_FW_LOADER=m
  25.249 +# CONFIG_DEBUG_DRIVER is not set
  25.250 +
  25.251 +#
  25.252 +# Memory Technology Devices (MTD)
  25.253 +#
  25.254 +CONFIG_MTD=m
  25.255 +# CONFIG_MTD_DEBUG is not set
  25.256 +CONFIG_MTD_PARTITIONS=y
  25.257 +CONFIG_MTD_CONCAT=m
  25.258 +CONFIG_MTD_REDBOOT_PARTS=m
  25.259 +CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1
  25.260 +# CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED is not set
  25.261 +# CONFIG_MTD_REDBOOT_PARTS_READONLY is not set
  25.262 +# CONFIG_MTD_CMDLINE_PARTS is not set
  25.263 +
  25.264 +#
  25.265 +# User Modules And Translation Layers
  25.266 +#
  25.267 +CONFIG_MTD_CHAR=m
  25.268 +CONFIG_MTD_BLOCK=m
  25.269 +CONFIG_MTD_BLOCK_RO=m
  25.270 +CONFIG_FTL=m
  25.271 +CONFIG_NFTL=m
  25.272 +CONFIG_NFTL_RW=y
  25.273 +CONFIG_INFTL=m
  25.274 +
  25.275 +#
  25.276 +# RAM/ROM/Flash chip drivers
  25.277 +#
  25.278 +CONFIG_MTD_CFI=m
  25.279 +CONFIG_MTD_JEDECPROBE=m
  25.280 +CONFIG_MTD_GEN_PROBE=m
  25.281 +# CONFIG_MTD_CFI_ADV_OPTIONS is not set
  25.282 +CONFIG_MTD_MAP_BANK_WIDTH_1=y
  25.283 +CONFIG_MTD_MAP_BANK_WIDTH_2=y
  25.284 +CONFIG_MTD_MAP_BANK_WIDTH_4=y
  25.285 +# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
  25.286 +# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
  25.287 +# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
  25.288 +CONFIG_MTD_CFI_I1=y
  25.289 +CONFIG_MTD_CFI_I2=y
  25.290 +# CONFIG_MTD_CFI_I4 is not set
  25.291 +# CONFIG_MTD_CFI_I8 is not set
  25.292 +CONFIG_MTD_CFI_INTELEXT=m
  25.293 +CONFIG_MTD_CFI_AMDSTD=m
  25.294 +CONFIG_MTD_CFI_AMDSTD_RETRY=0
  25.295 +CONFIG_MTD_CFI_STAA=m
  25.296 +CONFIG_MTD_CFI_UTIL=m
  25.297 +CONFIG_MTD_RAM=m
  25.298 +CONFIG_MTD_ROM=m
  25.299 +CONFIG_MTD_ABSENT=m
  25.300 +# CONFIG_MTD_OBSOLETE_CHIPS is not set
  25.301 +
  25.302 +#
  25.303 +# Mapping drivers for chip access
  25.304 +#
  25.305 +CONFIG_MTD_COMPLEX_MAPPINGS=y
  25.306 +CONFIG_MTD_PHYSMAP=m
  25.307 +CONFIG_MTD_PHYSMAP_START=0x8000000
  25.308 +CONFIG_MTD_PHYSMAP_LEN=0x4000000
  25.309 +CONFIG_MTD_PHYSMAP_BANKWIDTH=2
  25.310 +CONFIG_MTD_PNC2000=m
  25.311 +CONFIG_MTD_SC520CDP=m
  25.312 +CONFIG_MTD_NETSC520=m
  25.313 +CONFIG_MTD_TS5500=m
  25.314 +CONFIG_MTD_SBC_GXX=m
  25.315 +CONFIG_MTD_ELAN_104NC=m
  25.316 +CONFIG_MTD_SCx200_DOCFLASH=m
  25.317 +# CONFIG_MTD_AMD76XROM is not set
  25.318 +# CONFIG_MTD_ICHXROM is not set
  25.319 +# CONFIG_MTD_SCB2_FLASH is not set
  25.320 +CONFIG_MTD_NETtel=m
  25.321 +CONFIG_MTD_DILNETPC=m
  25.322 +CONFIG_MTD_DILNETPC_BOOTSIZE=0x80000
  25.323 +# CONFIG_MTD_L440GX is not set
  25.324 +CONFIG_MTD_PCI=m
  25.325 +CONFIG_MTD_PCMCIA=m
  25.326 +
  25.327 +#
  25.328 +# Self-contained MTD device drivers
  25.329 +#
  25.330 +CONFIG_MTD_PMC551=m
  25.331 +# CONFIG_MTD_PMC551_BUGFIX is not set
  25.332 +# CONFIG_MTD_PMC551_DEBUG is not set
  25.333 +CONFIG_MTD_SLRAM=m
  25.334 +CONFIG_MTD_PHRAM=m
  25.335 +CONFIG_MTD_MTDRAM=m
  25.336 +CONFIG_MTDRAM_TOTAL_SIZE=4096
  25.337 +CONFIG_MTDRAM_ERASE_SIZE=128
  25.338 +CONFIG_MTD_BLKMTD=m
  25.339 +# CONFIG_MTD_BLOCK2MTD is not set
  25.340 +
  25.341 +#
  25.342 +# Disk-On-Chip Device Drivers
  25.343 +#
  25.344 +CONFIG_MTD_DOC2000=m
  25.345 +CONFIG_MTD_DOC2001=m
  25.346 +CONFIG_MTD_DOC2001PLUS=m
  25.347 +CONFIG_MTD_DOCPROBE=m
  25.348 +CONFIG_MTD_DOCECC=m
  25.349 +# CONFIG_MTD_DOCPROBE_ADVANCED is not set
  25.350 +CONFIG_MTD_DOCPROBE_ADDRESS=0
  25.351 +
  25.352 +#
  25.353 +# NAND Flash Device Drivers
  25.354 +#
  25.355 +CONFIG_MTD_NAND=m
  25.356 +# CONFIG_MTD_NAND_VERIFY_WRITE is not set
  25.357 +CONFIG_MTD_NAND_IDS=m
  25.358 +CONFIG_MTD_NAND_DISKONCHIP=m
  25.359 +# CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADVANCED is not set
  25.360 +CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADDRESS=0
  25.361 +# CONFIG_MTD_NAND_DISKONCHIP_BBTWRITE is not set
  25.362 +# CONFIG_MTD_NAND_NANDSIM is not set
  25.363 +
  25.364 +#
  25.365 +# Parallel port support
  25.366 +#
  25.367 +CONFIG_PARPORT=m
  25.368 +CONFIG_PARPORT_PC=m
  25.369 +CONFIG_PARPORT_PC_CML1=m
  25.370 +CONFIG_PARPORT_SERIAL=m
  25.371 +CONFIG_PARPORT_PC_FIFO=y
  25.372 +# CONFIG_PARPORT_PC_SUPERIO is not set
  25.373 +CONFIG_PARPORT_PC_PCMCIA=m
  25.374 +# CONFIG_PARPORT_OTHER is not set
  25.375 +CONFIG_PARPORT_1284=y
  25.376 +
  25.377 +#
  25.378 +# Plug and Play support
  25.379 +#
  25.380 +CONFIG_PNP=y
  25.381 +# CONFIG_PNP_DEBUG is not set
  25.382 +
  25.383 +#
  25.384 +# Protocols
  25.385 +#
  25.386 +CONFIG_ISAPNP=y
  25.387 +# CONFIG_PNPBIOS is not set
  25.388 +CONFIG_PNPACPI=y
  25.389 +
  25.390 +#
  25.391 +# Block devices
  25.392 +#
  25.393 +CONFIG_BLK_DEV_FD=m
  25.394 +CONFIG_BLK_DEV_XD=m
  25.395 +CONFIG_PARIDE=m
  25.396 +CONFIG_PARIDE_PARPORT=m
  25.397 +
  25.398 +#
  25.399 +# Parallel IDE high-level drivers
  25.400 +#
  25.401 +CONFIG_PARIDE_PD=m
  25.402 +CONFIG_PARIDE_PCD=m
  25.403 +CONFIG_PARIDE_PF=m
  25.404 +CONFIG_PARIDE_PT=m
  25.405 +CONFIG_PARIDE_PG=m
  25.406 +
  25.407 +#
  25.408 +# Parallel IDE protocol modules
  25.409 +#
  25.410 +CONFIG_PARIDE_ATEN=m
  25.411 +CONFIG_PARIDE_BPCK=m
  25.412 +CONFIG_PARIDE_BPCK6=m
  25.413 +CONFIG_PARIDE_COMM=m
  25.414 +CONFIG_PARIDE_DSTR=m
  25.415 +CONFIG_PARIDE_FIT2=m
  25.416 +CONFIG_PARIDE_FIT3=m
  25.417 +CONFIG_PARIDE_EPAT=m
  25.418 +# CONFIG_PARIDE_EPATC8 is not set
  25.419 +CONFIG_PARIDE_EPIA=m
  25.420 +CONFIG_PARIDE_FRIQ=m
  25.421 +CONFIG_PARIDE_FRPW=m
  25.422 +CONFIG_PARIDE_KBIC=m
  25.423 +CONFIG_PARIDE_KTTI=m
  25.424 +CONFIG_PARIDE_ON20=m
  25.425 +CONFIG_PARIDE_ON26=m
  25.426 +CONFIG_BLK_CPQ_DA=m
  25.427 +CONFIG_BLK_CPQ_CISS_DA=m
  25.428 +CONFIG_CISS_SCSI_TAPE=y
  25.429 +CONFIG_BLK_DEV_DAC960=m
  25.430 +CONFIG_BLK_DEV_UMEM=m
  25.431 +# CONFIG_BLK_DEV_COW_COMMON is not set
  25.432 +CONFIG_BLK_DEV_LOOP=m
  25.433 +CONFIG_BLK_DEV_CRYPTOLOOP=m
  25.434 +CONFIG_BLK_DEV_NBD=m
  25.435 +CONFIG_BLK_DEV_SX8=m
  25.436 +# CONFIG_BLK_DEV_UB is not set
  25.437 +CONFIG_BLK_DEV_RAM=y
  25.438 +CONFIG_BLK_DEV_RAM_COUNT=16
  25.439 +CONFIG_BLK_DEV_RAM_SIZE=8192
  25.440 +CONFIG_BLK_DEV_INITRD=y
  25.441 +CONFIG_INITRAMFS_SOURCE=""
  25.442 +CONFIG_LBD=y
  25.443 +CONFIG_CDROM_PKTCDVD=m
  25.444 +CONFIG_CDROM_PKTCDVD_BUFFERS=8
  25.445 +# CONFIG_CDROM_PKTCDVD_WCACHE is not set
  25.446 +
  25.447 +#
  25.448 +# IO Schedulers
  25.449 +#
  25.450 +CONFIG_IOSCHED_NOOP=y
  25.451 +CONFIG_IOSCHED_AS=y
  25.452 +CONFIG_IOSCHED_DEADLINE=y
  25.453 +CONFIG_IOSCHED_CFQ=y
  25.454 +# CONFIG_ATA_OVER_ETH is not set
  25.455 +
  25.456 +#
  25.457 +# ATA/ATAPI/MFM/RLL support
  25.458 +#
  25.459 +CONFIG_IDE=m
  25.460 +CONFIG_BLK_DEV_IDE=m
  25.461 +
  25.462 +#
  25.463 +# Please see Documentation/ide.txt for help/info on IDE drives
  25.464 +#
  25.465 +# CONFIG_BLK_DEV_IDE_SATA is not set
  25.466 +# CONFIG_BLK_DEV_HD_IDE is not set
  25.467 +CONFIG_BLK_DEV_IDEDISK=m
  25.468 +# CONFIG_IDEDISK_MULTI_MODE is not set
  25.469 +CONFIG_BLK_DEV_IDECS=m
  25.470 +CONFIG_BLK_DEV_IDECD=m
  25.471 +CONFIG_BLK_DEV_IDETAPE=m
  25.472 +CONFIG_BLK_DEV_IDEFLOPPY=m
  25.473 +CONFIG_BLK_DEV_IDESCSI=m
  25.474 +# CONFIG_IDE_TASK_IOCTL is not set
  25.475 +
  25.476 +#
  25.477 +# IDE chipset support/bugfixes
  25.478 +#
  25.479 +CONFIG_IDE_GENERIC=m
  25.480 +CONFIG_BLK_DEV_CMD640=y
  25.481 +# CONFIG_BLK_DEV_CMD640_ENHANCED is not set
  25.482 +# CONFIG_BLK_DEV_IDEPNP is not set
  25.483 +CONFIG_BLK_DEV_IDEPCI=y
  25.484 +CONFIG_IDEPCI_SHARE_IRQ=y
  25.485 +# CONFIG_BLK_DEV_OFFBOARD is not set
  25.486 +CONFIG_BLK_DEV_GENERIC=m
  25.487 +CONFIG_BLK_DEV_OPTI621=m
  25.488 +CONFIG_BLK_DEV_RZ1000=m
  25.489 +CONFIG_BLK_DEV_IDEDMA_PCI=y
  25.490 +# CONFIG_BLK_DEV_IDEDMA_FORCED is not set
  25.491 +CONFIG_IDEDMA_PCI_AUTO=y
  25.492 +# CONFIG_IDEDMA_ONLYDISK is not set
  25.493 +CONFIG_BLK_DEV_AEC62XX=m
  25.494 +CONFIG_BLK_DEV_ALI15X3=m
  25.495 +# CONFIG_WDC_ALI15X3 is not set
  25.496 +CONFIG_BLK_DEV_AMD74XX=m
  25.497 +CONFIG_BLK_DEV_ATIIXP=m
  25.498 +CONFIG_BLK_DEV_CMD64X=m
  25.499 +CONFIG_BLK_DEV_TRIFLEX=m
  25.500 +CONFIG_BLK_DEV_CY82C693=m
  25.501 +CONFIG_BLK_DEV_CS5520=m
  25.502 +CONFIG_BLK_DEV_CS5530=m
  25.503 +CONFIG_BLK_DEV_HPT34X=m
  25.504 +# CONFIG_HPT34X_AUTODMA is not set
  25.505 +CONFIG_BLK_DEV_HPT366=m
  25.506 +CONFIG_BLK_DEV_SC1200=m
  25.507 +CONFIG_BLK_DEV_PIIX=m
  25.508 +CONFIG_BLK_DEV_NS87415=m
  25.509 +CONFIG_BLK_DEV_PDC202XX_OLD=m
  25.510 +CONFIG_PDC202XX_BURST=y
  25.511 +CONFIG_BLK_DEV_PDC202XX_NEW=m
  25.512 +CONFIG_PDC202XX_FORCE=y
  25.513 +CONFIG_BLK_DEV_SVWKS=m
  25.514 +CONFIG_BLK_DEV_SIIMAGE=m
  25.515 +CONFIG_BLK_DEV_SIS5513=m
  25.516 +CONFIG_BLK_DEV_SLC90E66=m
  25.517 +CONFIG_BLK_DEV_TRM290=m
  25.518 +CONFIG_BLK_DEV_VIA82CXXX=m
  25.519 +# CONFIG_IDE_ARM is not set
  25.520 +# CONFIG_IDE_CHIPSETS is not set
  25.521 +CONFIG_BLK_DEV_IDEDMA=y
  25.522 +# CONFIG_IDEDMA_IVB is not set
  25.523 +CONFIG_IDEDMA_AUTO=y
  25.524 +# CONFIG_BLK_DEV_HD is not set
  25.525 +
  25.526 +#
  25.527 +# SCSI device support
  25.528 +#
  25.529 +CONFIG_SCSI=m
  25.530 +CONFIG_SCSI_PROC_FS=y
  25.531 +
  25.532 +#
  25.533 +# SCSI support type (disk, tape, CD-ROM)
  25.534 +#
  25.535 +CONFIG_BLK_DEV_SD=m
  25.536 +CONFIG_CHR_DEV_ST=m
  25.537 +CONFIG_CHR_DEV_OSST=m
  25.538 +CONFIG_BLK_DEV_SR=m
  25.539 +# CONFIG_BLK_DEV_SR_VENDOR is not set
  25.540 +CONFIG_CHR_DEV_SG=m
  25.541 +
  25.542 +#
  25.543 +# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
  25.544 +#
  25.545 +CONFIG_SCSI_MULTI_LUN=y
  25.546 +CONFIG_SCSI_CONSTANTS=y
  25.547 +CONFIG_SCSI_LOGGING=y
  25.548 +
  25.549 +#
  25.550 +# SCSI Transport Attributes
  25.551 +#
  25.552 +CONFIG_SCSI_SPI_ATTRS=m
  25.553 +CONFIG_SCSI_FC_ATTRS=m
  25.554 +# CONFIG_SCSI_ISCSI_ATTRS is not set
  25.555 +
  25.556 +#
  25.557 +# SCSI low-level drivers
  25.558 +#
  25.559 +CONFIG_BLK_DEV_3W_XXXX_RAID=m
  25.560 +CONFIG_SCSI_3W_9XXX=m
  25.561 +# CONFIG_SCSI_7000FASST is not set
  25.562 +CONFIG_SCSI_ACARD=m
  25.563 +CONFIG_SCSI_AHA152X=m
  25.564 +# CONFIG_SCSI_AHA1542 is not set
  25.565 +CONFIG_SCSI_AACRAID=m
  25.566 +CONFIG_SCSI_AIC7XXX=m
  25.567 +CONFIG_AIC7XXX_CMDS_PER_DEVICE=8
  25.568 +CONFIG_AIC7XXX_RESET_DELAY_MS=15000
  25.569 +CONFIG_AIC7XXX_DEBUG_ENABLE=y
  25.570 +CONFIG_AIC7XXX_DEBUG_MASK=0
  25.571 +CONFIG_AIC7XXX_REG_PRETTY_PRINT=y
  25.572 +CONFIG_SCSI_AIC7XXX_OLD=m
  25.573 +CONFIG_SCSI_AIC79XX=m
  25.574 +CONFIG_AIC79XX_CMDS_PER_DEVICE=32
  25.575 +CONFIG_AIC79XX_RESET_DELAY_MS=15000
  25.576 +CONFIG_AIC79XX_ENABLE_RD_STRM=y
  25.577 +CONFIG_AIC79XX_DEBUG_ENABLE=y
  25.578 +CONFIG_AIC79XX_DEBUG_MASK=0
  25.579 +CONFIG_AIC79XX_REG_PRETTY_PRINT=y
  25.580 +CONFIG_SCSI_DPT_I2O=m
  25.581 +CONFIG_SCSI_ADVANSYS=m
  25.582 +CONFIG_SCSI_IN2000=m
  25.583 +# CONFIG_MEGARAID_NEWGEN is not set
  25.584 +CONFIG_MEGARAID_LEGACY=m
  25.585 +CONFIG_SCSI_SATA=y
  25.586 +CONFIG_SCSI_SATA_AHCI=m
  25.587 +CONFIG_SCSI_SATA_SVW=m
  25.588 +CONFIG_SCSI_ATA_PIIX=m
  25.589 +CONFIG_SCSI_SATA_NV=m
  25.590 +CONFIG_SCSI_SATA_PROMISE=m
  25.591 +# CONFIG_SCSI_SATA_QSTOR is not set
  25.592 +CONFIG_SCSI_SATA_SX4=m
  25.593 +CONFIG_SCSI_SATA_SIL=m
  25.594 +CONFIG_SCSI_SATA_SIS=m
  25.595 +CONFIG_SCSI_SATA_ULI=m
  25.596 +CONFIG_SCSI_SATA_VIA=m
  25.597 +CONFIG_SCSI_SATA_VITESSE=m
  25.598 +CONFIG_SCSI_BUSLOGIC=m
  25.599 +# CONFIG_SCSI_OMIT_FLASHPOINT is not set
  25.600 +# CONFIG_SCSI_CPQFCTS is not set
  25.601 +CONFIG_SCSI_DMX3191D=m
  25.602 +CONFIG_SCSI_DTC3280=m
  25.603 +CONFIG_SCSI_EATA=m
  25.604 +CONFIG_SCSI_EATA_TAGGED_QUEUE=y
  25.605 +CONFIG_SCSI_EATA_LINKED_COMMANDS=y
  25.606 +CONFIG_SCSI_EATA_MAX_TAGS=16
  25.607 +CONFIG_SCSI_EATA_PIO=m
  25.608 +CONFIG_SCSI_FUTURE_DOMAIN=m
  25.609 +CONFIG_SCSI_GDTH=m
  25.610 +CONFIG_SCSI_GENERIC_NCR5380=m
  25.611 +CONFIG_SCSI_GENERIC_NCR5380_MMIO=m
  25.612 +CONFIG_SCSI_GENERIC_NCR53C400=y
  25.613 +CONFIG_SCSI_IPS=m
  25.614 +# CONFIG_SCSI_INITIO is not set
  25.615 +# CONFIG_SCSI_INIA100 is not set
  25.616 +CONFIG_SCSI_PPA=m
  25.617 +CONFIG_SCSI_IMM=m
  25.618 +# CONFIG_SCSI_IZIP_EPP16 is not set
  25.619 +# CONFIG_SCSI_IZIP_SLOW_CTR is not set
  25.620 +CONFIG_SCSI_NCR53C406A=m
  25.621 +CONFIG_SCSI_SYM53C8XX_2=m
  25.622 +CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1
  25.623 +CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
  25.624 +CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
  25.625 +# CONFIG_SCSI_SYM53C8XX_IOMAPPED is not set
  25.626 +CONFIG_SCSI_IPR=m
  25.627 +# CONFIG_SCSI_IPR_TRACE is not set
  25.628 +# CONFIG_SCSI_IPR_DUMP is not set
  25.629 +CONFIG_SCSI_PAS16=m
  25.630 +# CONFIG_SCSI_PCI2000 is not set
  25.631 +# CONFIG_SCSI_PCI2220I is not set
  25.632 +CONFIG_SCSI_PSI240I=m
  25.633 +CONFIG_SCSI_QLOGIC_FAS=m
  25.634 +CONFIG_SCSI_QLOGIC_ISP=m
  25.635 +CONFIG_SCSI_QLOGIC_FC=m
  25.636 +CONFIG_SCSI_QLOGIC_FC_FIRMWARE=y
  25.637 +CONFIG_SCSI_QLOGIC_1280=m
  25.638 +CONFIG_SCSI_QLOGIC_1280_1040=y
  25.639 +CONFIG_SCSI_QLA2XXX=m
  25.640 +# CONFIG_SCSI_QLA21XX is not set
  25.641 +# CONFIG_SCSI_QLA22XX is not set
  25.642 +# CONFIG_SCSI_QLA2300 is not set
  25.643 +# CONFIG_SCSI_QLA2322 is not set
  25.644 +# CONFIG_SCSI_QLA6312 is not set
  25.645 +# CONFIG_SCSI_SEAGATE is not set
  25.646 +CONFIG_SCSI_SYM53C416=m
  25.647 +CONFIG_SCSI_DC395x=m
  25.648 +CONFIG_SCSI_DC390T=m
  25.649 +CONFIG_SCSI_T128=m
  25.650 +CONFIG_SCSI_U14_34F=m
  25.651 +CONFIG_SCSI_U14_34F_TAGGED_QUEUE=y
  25.652 +CONFIG_SCSI_U14_34F_LINKED_COMMANDS=y
  25.653 +CONFIG_SCSI_U14_34F_MAX_TAGS=8
  25.654 +# CONFIG_SCSI_ULTRASTOR is not set
  25.655 +CONFIG_SCSI_NSP32=m
  25.656 +CONFIG_SCSI_DEBUG=m
  25.657 +
  25.658 +#
  25.659 +# PCMCIA SCSI adapter support
  25.660 +#
  25.661 +CONFIG_PCMCIA_AHA152X=m
  25.662 +CONFIG_PCMCIA_FDOMAIN=m
  25.663 +CONFIG_PCMCIA_NINJA_SCSI=m
  25.664 +CONFIG_PCMCIA_QLOGIC=m
  25.665 +CONFIG_PCMCIA_SYM53C500=m
  25.666 +
  25.667 +#
  25.668 +# Old CD-ROM drivers (not SCSI, not IDE)
  25.669 +#
  25.670 +CONFIG_CD_NO_IDESCSI=y
  25.671 +CONFIG_AZTCD=m
  25.672 +CONFIG_GSCD=m
  25.673 +CONFIG_SBPCD=m
  25.674 +CONFIG_MCD=m
  25.675 +CONFIG_MCD_IRQ=11
  25.676 +CONFIG_MCD_BASE=0x300
  25.677 +CONFIG_MCDX=m
  25.678 +CONFIG_OPTCD=m
  25.679 +CONFIG_CM206=m
  25.680 +CONFIG_SJCD=m
  25.681 +CONFIG_ISP16_CDI=m
  25.682 +CONFIG_CDU31A=m
  25.683 +CONFIG_CDU535=m
  25.684 +
  25.685 +#
  25.686 +# Multi-device support (RAID and LVM)
  25.687 +#
  25.688 +CONFIG_MD=y
  25.689 +CONFIG_BLK_DEV_MD=m
  25.690 +CONFIG_MD_LINEAR=m
  25.691 +CONFIG_MD_RAID0=m
  25.692 +CONFIG_MD_RAID1=m
  25.693 +CONFIG_MD_RAID10=m
  25.694 +CONFIG_MD_RAID5=m
  25.695 +CONFIG_MD_RAID6=m
  25.696 +CONFIG_MD_MULTIPATH=m
  25.697 +CONFIG_MD_FAULTY=m
  25.698 +CONFIG_BLK_DEV_DM=m
  25.699 +CONFIG_DM_CRYPT=m
  25.700 +CONFIG_DM_SNAPSHOT=m
  25.701 +CONFIG_DM_MIRROR=m
  25.702 +CONFIG_DM_ZERO=m
  25.703 +
  25.704 +#
  25.705 +# Fusion MPT device support
  25.706 +#
  25.707 +CONFIG_FUSION=m
  25.708 +CONFIG_FUSION_MAX_SGE=40
  25.709 +CONFIG_FUSION_CTL=m
  25.710 +CONFIG_FUSION_LAN=m
  25.711 +
  25.712 +#
  25.713 +# IEEE 1394 (FireWire) support
  25.714 +#
  25.715 +CONFIG_IEEE1394=m
  25.716 +
  25.717 +#
  25.718 +# Subsystem Options
  25.719 +#
  25.720 +# CONFIG_IEEE1394_VERBOSEDEBUG is not set
  25.721 +# CONFIG_IEEE1394_OUI_DB is not set
  25.722 +CONFIG_IEEE1394_EXTRA_CONFIG_ROMS=y
  25.723 +CONFIG_IEEE1394_CONFIG_ROM_IP1394=y
  25.724 +
  25.725 +#
  25.726 +# Device Drivers
  25.727 +#
  25.728 +CONFIG_IEEE1394_PCILYNX=m
  25.729 +CONFIG_IEEE1394_OHCI1394=m
  25.730 +
  25.731 +#
  25.732 +# Protocol Drivers
  25.733 +#
  25.734 +CONFIG_IEEE1394_VIDEO1394=m
  25.735 +CONFIG_IEEE1394_SBP2=m
  25.736 +# CONFIG_IEEE1394_SBP2_PHYS_DMA is not set
  25.737 +CONFIG_IEEE1394_ETH1394=m
  25.738 +CONFIG_IEEE1394_DV1394=m
  25.739 +CONFIG_IEEE1394_RAWIO=m
  25.740 +CONFIG_IEEE1394_CMP=m
  25.741 +CONFIG_IEEE1394_AMDTP=m
  25.742 +
  25.743 +#
  25.744 +# I2O device support
  25.745 +#
  25.746 +CONFIG_I2O=m
  25.747 +CONFIG_I2O_CONFIG=m
  25.748 +CONFIG_I2O_BLOCK=m
  25.749 +CONFIG_I2O_SCSI=m
  25.750 +CONFIG_I2O_PROC=m
  25.751 +
  25.752 +#
  25.753 +# Networking support
  25.754 +#
  25.755 +CONFIG_NET=y
  25.756 +
  25.757 +#
  25.758 +# Networking options
  25.759 +#
  25.760 +CONFIG_PACKET=m
  25.761 +CONFIG_PACKET_MMAP=y
  25.762 +CONFIG_NETLINK_DEV=m
  25.763 +CONFIG_UNIX=m
  25.764 +CONFIG_NET_KEY=m
  25.765 +CONFIG_INET=y
  25.766 +CONFIG_IP_MULTICAST=y
  25.767 +CONFIG_IP_ADVANCED_ROUTER=y
  25.768 +CONFIG_IP_MULTIPLE_TABLES=y
  25.769 +CONFIG_IP_ROUTE_FWMARK=y
  25.770 +CONFIG_IP_ROUTE_MULTIPATH=y
  25.771 +CONFIG_IP_ROUTE_VERBOSE=y
  25.772 +# CONFIG_IP_PNP is not set
  25.773 +CONFIG_NET_IPIP=m
  25.774 +CONFIG_NET_IPGRE=m
  25.775 +CONFIG_NET_IPGRE_BROADCAST=y
  25.776 +CONFIG_IP_MROUTE=y
  25.777 +CONFIG_IP_PIMSM_V1=y
  25.778 +CONFIG_IP_PIMSM_V2=y
  25.779 +# CONFIG_ARPD is not set
  25.780 +CONFIG_SYN_COOKIES=y
  25.781 +CONFIG_INET_AH=m
  25.782 +CONFIG_INET_ESP=m
  25.783 +CONFIG_INET_IPCOMP=m
  25.784 +CONFIG_INET_TUNNEL=m
  25.785 +CONFIG_IP_TCPDIAG=m
  25.786 +CONFIG_IP_TCPDIAG_IPV6=y
  25.787 +
  25.788 +#
  25.789 +# IP: Virtual Server Configuration
  25.790 +#
  25.791 +CONFIG_IP_VS=m
  25.792 +# CONFIG_IP_VS_DEBUG is not set
  25.793 +CONFIG_IP_VS_TAB_BITS=12
  25.794 +
  25.795 +#
  25.796 +# IPVS transport protocol load balancing support
  25.797 +#
  25.798 +CONFIG_IP_VS_PROTO_TCP=y
  25.799 +CONFIG_IP_VS_PROTO_UDP=y
  25.800 +CONFIG_IP_VS_PROTO_ESP=y
  25.801 +CONFIG_IP_VS_PROTO_AH=y
  25.802 +
  25.803 +#
  25.804 +# IPVS scheduler
  25.805 +#
  25.806 +CONFIG_IP_VS_RR=m
  25.807 +CONFIG_IP_VS_WRR=m
  25.808 +CONFIG_IP_VS_LC=m
  25.809 +CONFIG_IP_VS_WLC=m
  25.810 +CONFIG_IP_VS_LBLC=m
  25.811 +CONFIG_IP_VS_LBLCR=m
  25.812 +CONFIG_IP_VS_DH=m
  25.813 +CONFIG_IP_VS_SH=m
  25.814 +CONFIG_IP_VS_SED=m
  25.815 +CONFIG_IP_VS_NQ=m
  25.816 +
  25.817 +#
  25.818 +# IPVS application helper
  25.819 +#
  25.820 +CONFIG_IP_VS_FTP=m
  25.821 +CONFIG_IPV6=m
  25.822 +CONFIG_IPV6_PRIVACY=y
  25.823 +CONFIG_INET6_AH=m
  25.824 +CONFIG_INET6_ESP=m
  25.825 +CONFIG_INET6_IPCOMP=m
  25.826 +CONFIG_INET6_TUNNEL=m
  25.827 +CONFIG_IPV6_TUNNEL=m
  25.828 +CONFIG_NETFILTER=y
  25.829 +# CONFIG_NETFILTER_DEBUG is not set
  25.830 +CONFIG_BRIDGE_NETFILTER=y
  25.831 +
  25.832 +#
  25.833 +# IP: Netfilter Configuration
  25.834 +#
  25.835 +CONFIG_IP_NF_CONNTRACK=m
  25.836 +CONFIG_IP_NF_CT_ACCT=y
  25.837 +CONFIG_IP_NF_CONNTRACK_MARK=y
  25.838 +CONFIG_IP_NF_CT_PROTO_SCTP=m
  25.839 +CONFIG_IP_NF_FTP=m
  25.840 +CONFIG_IP_NF_IRC=m
  25.841 +CONFIG_IP_NF_TFTP=m
  25.842 +CONFIG_IP_NF_AMANDA=m
  25.843 +CONFIG_IP_NF_QUEUE=m
  25.844 +CONFIG_IP_NF_IPTABLES=m
  25.845 +CONFIG_IP_NF_MATCH_LIMIT=m
  25.846 +CONFIG_IP_NF_MATCH_IPRANGE=m
  25.847 +CONFIG_IP_NF_MATCH_MAC=m
  25.848 +CONFIG_IP_NF_MATCH_PKTTYPE=m
  25.849 +CONFIG_IP_NF_MATCH_MARK=m
  25.850 +CONFIG_IP_NF_MATCH_MULTIPORT=m
  25.851 +CONFIG_IP_NF_MATCH_TOS=m
  25.852 +CONFIG_IP_NF_MATCH_RECENT=m
  25.853 +CONFIG_IP_NF_MATCH_ECN=m
  25.854 +CONFIG_IP_NF_MATCH_DSCP=m
  25.855 +CONFIG_IP_NF_MATCH_AH_ESP=m
  25.856 +CONFIG_IP_NF_MATCH_LENGTH=m
  25.857 +CONFIG_IP_NF_MATCH_TTL=m
  25.858 +CONFIG_IP_NF_MATCH_TCPMSS=m
  25.859 +CONFIG_IP_NF_MATCH_HELPER=m
  25.860 +CONFIG_IP_NF_MATCH_STATE=m
  25.861 +CONFIG_IP_NF_MATCH_CONNTRACK=m
  25.862 +CONFIG_IP_NF_MATCH_OWNER=m
  25.863 +CONFIG_IP_NF_MATCH_PHYSDEV=m
  25.864 +CONFIG_IP_NF_MATCH_ADDRTYPE=m
  25.865 +CONFIG_IP_NF_MATCH_REALM=m
  25.866 +CONFIG_IP_NF_MATCH_SCTP=m
  25.867 +CONFIG_IP_NF_MATCH_COMMENT=m
  25.868 +CONFIG_IP_NF_MATCH_CONNMARK=m
  25.869 +CONFIG_IP_NF_MATCH_HASHLIMIT=m
  25.870 +CONFIG_IP_NF_FILTER=m
  25.871 +CONFIG_IP_NF_TARGET_REJECT=m
  25.872 +CONFIG_IP_NF_TARGET_LOG=m
  25.873 +CONFIG_IP_NF_TARGET_ULOG=m
  25.874 +CONFIG_IP_NF_TARGET_TCPMSS=m
  25.875 +CONFIG_IP_NF_NAT=m
  25.876 +CONFIG_IP_NF_NAT_NEEDED=y
  25.877 +CONFIG_IP_NF_TARGET_MASQUERADE=m
  25.878 +CONFIG_IP_NF_TARGET_REDIRECT=m
  25.879 +CONFIG_IP_NF_TARGET_NETMAP=m
  25.880 +CONFIG_IP_NF_TARGET_SAME=m
  25.881 +CONFIG_IP_NF_NAT_SNMP_BASIC=m
  25.882 +CONFIG_IP_NF_NAT_IRC=m
  25.883 +CONFIG_IP_NF_NAT_FTP=m
  25.884 +CONFIG_IP_NF_NAT_TFTP=m
  25.885 +CONFIG_IP_NF_NAT_AMANDA=m
  25.886 +CONFIG_IP_NF_MANGLE=m
  25.887 +CONFIG_IP_NF_TARGET_TOS=m
  25.888 +CONFIG_IP_NF_TARGET_ECN=m
  25.889 +CONFIG_IP_NF_TARGET_DSCP=m
  25.890 +CONFIG_IP_NF_TARGET_MARK=m
  25.891 +CONFIG_IP_NF_TARGET_CLASSIFY=m
  25.892 +CONFIG_IP_NF_TARGET_CONNMARK=m
  25.893 +CONFIG_IP_NF_TARGET_CLUSTERIP=m
  25.894 +CONFIG_IP_NF_RAW=m
  25.895 +CONFIG_IP_NF_TARGET_NOTRACK=m
  25.896 +CONFIG_IP_NF_ARPTABLES=m
  25.897 +CONFIG_IP_NF_ARPFILTER=m
  25.898 +CONFIG_IP_NF_ARP_MANGLE=m
  25.899 +
  25.900 +#
  25.901 +# IPv6: Netfilter Configuration
  25.902 +#
  25.903 +CONFIG_IP6_NF_QUEUE=m
  25.904 +CONFIG_IP6_NF_IPTABLES=m
  25.905 +CONFIG_IP6_NF_MATCH_LIMIT=m
  25.906 +CONFIG_IP6_NF_MATCH_MAC=m
  25.907 +CONFIG_IP6_NF_MATCH_RT=m
  25.908 +CONFIG_IP6_NF_MATCH_OPTS=m
  25.909 +CONFIG_IP6_NF_MATCH_FRAG=m
  25.910 +CONFIG_IP6_NF_MATCH_HL=m
  25.911 +CONFIG_IP6_NF_MATCH_MULTIPORT=m
  25.912 +CONFIG_IP6_NF_MATCH_OWNER=m
  25.913 +CONFIG_IP6_NF_MATCH_MARK=m
  25.914 +CONFIG_IP6_NF_MATCH_IPV6HEADER=m
  25.915 +CONFIG_IP6_NF_MATCH_AHESP=m
  25.916 +CONFIG_IP6_NF_MATCH_LENGTH=m
  25.917 +CONFIG_IP6_NF_MATCH_EUI64=m
  25.918 +CONFIG_IP6_NF_MATCH_PHYSDEV=m
  25.919 +CONFIG_IP6_NF_FILTER=m
  25.920 +CONFIG_IP6_NF_TARGET_LOG=m
  25.921 +CONFIG_IP6_NF_MANGLE=m
  25.922 +CONFIG_IP6_NF_TARGET_MARK=m
  25.923 +CONFIG_IP6_NF_RAW=m
  25.924 +
  25.925 +#
  25.926 +# DECnet: Netfilter Configuration
  25.927 +#
  25.928 +CONFIG_DECNET_NF_GRABULATOR=m
  25.929 +
  25.930 +#
  25.931 +# Bridge: Netfilter Configuration
  25.932 +#
  25.933 +CONFIG_BRIDGE_NF_EBTABLES=m
  25.934 +CONFIG_BRIDGE_EBT_BROUTE=m
  25.935 +CONFIG_BRIDGE_EBT_T_FILTER=m
  25.936 +CONFIG_BRIDGE_EBT_T_NAT=m
  25.937 +CONFIG_BRIDGE_EBT_802_3=m
  25.938 +CONFIG_BRIDGE_EBT_AMONG=m
  25.939 +CONFIG_BRIDGE_EBT_ARP=m
  25.940 +CONFIG_BRIDGE_EBT_IP=m
  25.941 +CONFIG_BRIDGE_EBT_LIMIT=m
  25.942 +CONFIG_BRIDGE_EBT_MARK=m
  25.943 +CONFIG_BRIDGE_EBT_PKTTYPE=m
  25.944 +CONFIG_BRIDGE_EBT_STP=m
  25.945 +CONFIG_BRIDGE_EBT_VLAN=m
  25.946 +CONFIG_BRIDGE_EBT_ARPREPLY=m
  25.947 +CONFIG_BRIDGE_EBT_DNAT=m
  25.948 +CONFIG_BRIDGE_EBT_MARK_T=m
  25.949 +CONFIG_BRIDGE_EBT_REDIRECT=m
  25.950 +CONFIG_BRIDGE_EBT_SNAT=m
  25.951 +CONFIG_BRIDGE_EBT_LOG=m
  25.952 +# CONFIG_BRIDGE_EBT_ULOG is not set
  25.953 +CONFIG_XFRM=y
  25.954 +CONFIG_XFRM_USER=m
  25.955 +
  25.956 +#
  25.957 +# SCTP Configuration (EXPERIMENTAL)
  25.958 +#
  25.959 +CONFIG_IP_SCTP=m
  25.960 +# CONFIG_SCTP_DBG_MSG is not set
  25.961 +# CONFIG_SCTP_DBG_OBJCNT is not set
  25.962 +# CONFIG_SCTP_HMAC_NONE is not set
  25.963 +# CONFIG_SCTP_HMAC_SHA1 is not set
  25.964 +CONFIG_SCTP_HMAC_MD5=y
  25.965 +CONFIG_ATM=y
  25.966 +CONFIG_ATM_CLIP=y
  25.967 +# CONFIG_ATM_CLIP_NO_ICMP is not set
  25.968 +CONFIG_ATM_LANE=m
  25.969 +CONFIG_ATM_MPOA=m
  25.970 +CONFIG_ATM_BR2684=m
  25.971 +# CONFIG_ATM_BR2684_IPFILTER is not set
  25.972 +CONFIG_BRIDGE=m
  25.973 +CONFIG_VLAN_8021Q=m
  25.974 +CONFIG_DECNET=m
  25.975 +# CONFIG_DECNET_ROUTER is not set
  25.976 +CONFIG_LLC=y
  25.977 +CONFIG_LLC2=m
  25.978 +CONFIG_IPX=m
  25.979 +# CONFIG_IPX_INTERN is not set
  25.980 +CONFIG_ATALK=m
  25.981 +CONFIG_DEV_APPLETALK=y
  25.982 +CONFIG_LTPC=m
  25.983 +CONFIG_COPS=m
  25.984 +CONFIG_COPS_DAYNA=y
  25.985 +CONFIG_COPS_TANGENT=y
  25.986 +CONFIG_IPDDP=m
  25.987 +CONFIG_IPDDP_ENCAP=y
  25.988 +CONFIG_IPDDP_DECAP=y
  25.989 +CONFIG_X25=m
  25.990 +CONFIG_LAPB=m
  25.991 +# CONFIG_NET_DIVERT is not set
  25.992 +CONFIG_ECONET=m
  25.993 +CONFIG_ECONET_AUNUDP=y
  25.994 +CONFIG_ECONET_NATIVE=y
  25.995 +CONFIG_WAN_ROUTER=m
  25.996 +
  25.997 +#
  25.998 +# QoS and/or fair queueing
  25.999 +#
 25.1000 +CONFIG_NET_SCHED=y
 25.1001 +CONFIG_NET_SCH_CLK_JIFFIES=y
 25.1002 +# CONFIG_NET_SCH_CLK_GETTIMEOFDAY is not set
 25.1003 +# CONFIG_NET_SCH_CLK_CPU is not set
 25.1004 +CONFIG_NET_SCH_CBQ=m
 25.1005 +CONFIG_NET_SCH_HTB=m
 25.1006 +CONFIG_NET_SCH_HFSC=m
 25.1007 +CONFIG_NET_SCH_ATM=m
 25.1008 +CONFIG_NET_SCH_PRIO=m
 25.1009 +CONFIG_NET_SCH_RED=m
 25.1010 +CONFIG_NET_SCH_SFQ=m
 25.1011 +CONFIG_NET_SCH_TEQL=m
 25.1012 +CONFIG_NET_SCH_TBF=m
 25.1013 +CONFIG_NET_SCH_GRED=m
 25.1014 +CONFIG_NET_SCH_DSMARK=m
 25.1015 +CONFIG_NET_SCH_NETEM=m
 25.1016 +CONFIG_NET_SCH_INGRESS=m
 25.1017 +CONFIG_NET_QOS=y
 25.1018 +CONFIG_NET_ESTIMATOR=y
 25.1019 +CONFIG_NET_CLS=y
 25.1020 +CONFIG_NET_CLS_TCINDEX=m
 25.1021 +CONFIG_NET_CLS_ROUTE4=m
 25.1022 +CONFIG_NET_CLS_ROUTE=y
 25.1023 +CONFIG_NET_CLS_FW=m
 25.1024 +CONFIG_NET_CLS_U32=m
 25.1025 +# CONFIG_CLS_U32_PERF is not set
 25.1026 +# CONFIG_NET_CLS_IND is not set
 25.1027 +# CONFIG_CLS_U32_MARK is not set
 25.1028 +CONFIG_NET_CLS_RSVP=m
 25.1029 +CONFIG_NET_CLS_RSVP6=m
 25.1030 +# CONFIG_NET_CLS_ACT is not set
 25.1031 +CONFIG_NET_CLS_POLICE=y
 25.1032 +
 25.1033 +#
 25.1034 +# Network testing
 25.1035 +#
 25.1036 +CONFIG_NET_PKTGEN=m
 25.1037 +CONFIG_NETPOLL=y
 25.1038 +# CONFIG_NETPOLL_RX is not set
 25.1039 +# CONFIG_NETPOLL_TRAP is not set
 25.1040 +CONFIG_NET_POLL_CONTROLLER=y
 25.1041 +CONFIG_HAMRADIO=y
 25.1042 +
 25.1043 +#
 25.1044 +# Packet Radio protocols
 25.1045 +#
 25.1046 +CONFIG_AX25=m
 25.1047 +# CONFIG_AX25_DAMA_SLAVE is not set
 25.1048 +CONFIG_NETROM=m
 25.1049 +CONFIG_ROSE=m
 25.1050 +
 25.1051 +#
 25.1052 +# AX.25 network device drivers
 25.1053 +#
 25.1054 +CONFIG_MKISS=m
 25.1055 +CONFIG_6PACK=m
 25.1056 +CONFIG_BPQETHER=m
 25.1057 +CONFIG_DMASCC=m
 25.1058 +CONFIG_SCC=m
 25.1059 +# CONFIG_SCC_DELAY is not set
 25.1060 +# CONFIG_SCC_TRXECHO is not set
 25.1061 +CONFIG_BAYCOM_SER_FDX=m
 25.1062 +CONFIG_BAYCOM_SER_HDX=m
 25.1063 +CONFIG_BAYCOM_PAR=m
 25.1064 +CONFIG_BAYCOM_EPP=m
 25.1065 +CONFIG_YAM=m
 25.1066 +CONFIG_IRDA=m
 25.1067 +
 25.1068 +#
 25.1069 +# IrDA protocols
 25.1070 +#
 25.1071 +CONFIG_IRLAN=m
 25.1072 +CONFIG_IRNET=m
 25.1073 +CONFIG_IRCOMM=m
 25.1074 +# CONFIG_IRDA_ULTRA is not set
 25.1075 +
 25.1076 +#
 25.1077 +# IrDA options
 25.1078 +#
 25.1079 +CONFIG_IRDA_CACHE_LAST_LSAP=y
 25.1080 +CONFIG_IRDA_FAST_RR=y
 25.1081 +CONFIG_IRDA_DEBUG=y
 25.1082 +
 25.1083 +#
 25.1084 +# Infrared-port device drivers
 25.1085 +#
 25.1086 +
 25.1087 +#
 25.1088 +# SIR device drivers
 25.1089 +#
 25.1090 +CONFIG_IRTTY_SIR=m
 25.1091 +
 25.1092 +#
 25.1093 +# Dongle support
 25.1094 +#
 25.1095 +CONFIG_DONGLE=y
 25.1096 +CONFIG_ESI_DONGLE=m
 25.1097 +CONFIG_ACTISYS_DONGLE=m
 25.1098 +CONFIG_TEKRAM_DONGLE=m
 25.1099 +CONFIG_LITELINK_DONGLE=m
 25.1100 +CONFIG_MA600_DONGLE=m
 25.1101 +CONFIG_GIRBIL_DONGLE=m
 25.1102 +CONFIG_MCP2120_DONGLE=m
 25.1103 +CONFIG_OLD_BELKIN_DONGLE=m
 25.1104 +CONFIG_ACT200L_DONGLE=m
 25.1105 +
 25.1106 +#
 25.1107 +# Old SIR device drivers
 25.1108 +#
 25.1109 +CONFIG_IRPORT_SIR=m
 25.1110 +
 25.1111 +#
 25.1112 +# Old Serial dongle support
 25.1113 +#
 25.1114 +# CONFIG_DONGLE_OLD is not set
 25.1115 +
 25.1116 +#
 25.1117 +# FIR device drivers
 25.1118 +#
 25.1119 +CONFIG_USB_IRDA=m
 25.1120 +CONFIG_SIGMATEL_FIR=m
 25.1121 +CONFIG_NSC_FIR=m
 25.1122 +CONFIG_WINBOND_FIR=m
 25.1123 +# CONFIG_TOSHIBA_FIR is not set
 25.1124 +CONFIG_SMC_IRCC_FIR=m
 25.1125 +CONFIG_ALI_FIR=m
 25.1126 +CONFIG_VLSI_FIR=m
 25.1127 +CONFIG_VIA_FIR=m
 25.1128 +CONFIG_BT=m
 25.1129 +CONFIG_BT_L2CAP=m
 25.1130 +CONFIG_BT_SCO=m
 25.1131 +CONFIG_BT_RFCOMM=m
 25.1132 +CONFIG_BT_RFCOMM_TTY=y
 25.1133 +CONFIG_BT_BNEP=m
 25.1134 +CONFIG_BT_BNEP_MC_FILTER=y
 25.1135 +CONFIG_BT_BNEP_PROTO_FILTER=y
 25.1136 +CONFIG_BT_CMTP=m
 25.1137 +CONFIG_BT_HIDP=m
 25.1138 +
 25.1139 +#
 25.1140 +# Bluetooth device drivers
 25.1141 +#
 25.1142 +CONFIG_BT_HCIUSB=m
 25.1143 +CONFIG_BT_HCIUSB_SCO=y
 25.1144 +CONFIG_BT_HCIUART=m
 25.1145 +CONFIG_BT_HCIUART_H4=y
 25.1146 +CONFIG_BT_HCIUART_BCSP=y
 25.1147 +# CONFIG_BT_HCIUART_BCSP_TXCRC is not set
 25.1148 +CONFIG_BT_HCIBCM203X=m
 25.1149 +# CONFIG_BT_HCIBPA10X is not set
 25.1150 +CONFIG_BT_HCIBFUSB=m
 25.1151 +CONFIG_BT_HCIDTL1=m
 25.1152 +CONFIG_BT_HCIBT3C=m
 25.1153 +CONFIG_BT_HCIBLUECARD=m
 25.1154 +CONFIG_BT_HCIBTUART=m
 25.1155 +CONFIG_BT_HCIVHCI=m
 25.1156 +CONFIG_NETDEVICES=y
 25.1157 +CONFIG_DUMMY=m
 25.1158 +CONFIG_BONDING=m
 25.1159 +CONFIG_EQUALIZER=m
 25.1160 +CONFIG_TUN=m
 25.1161 +CONFIG_ETHERTAP=m
 25.1162 +CONFIG_NET_SB1000=m
 25.1163 +
 25.1164 +#
 25.1165 +# ARCnet devices
 25.1166 +#
 25.1167 +CONFIG_ARCNET=m
 25.1168 +CONFIG_ARCNET_1201=m
 25.1169 +CONFIG_ARCNET_1051=m
 25.1170 +CONFIG_ARCNET_RAW=m
 25.1171 +# CONFIG_ARCNET_CAP is not set
 25.1172 +CONFIG_ARCNET_COM90xx=m
 25.1173 +CONFIG_ARCNET_COM90xxIO=m
 25.1174 +CONFIG_ARCNET_RIM_I=m
 25.1175 +CONFIG_ARCNET_COM20020=m
 25.1176 +CONFIG_ARCNET_COM20020_ISA=m
 25.1177 +CONFIG_ARCNET_COM20020_PCI=m
 25.1178 +
 25.1179 +#
 25.1180 +# Ethernet (10 or 100Mbit)
 25.1181 +#
 25.1182 +CONFIG_NET_ETHERNET=y
 25.1183 +CONFIG_MII=m
 25.1184 +CONFIG_HAPPYMEAL=m
 25.1185 +CONFIG_SUNGEM=m
 25.1186 +CONFIG_NET_VENDOR_3COM=y
 25.1187 +CONFIG_EL1=m
 25.1188 +CONFIG_EL2=m
 25.1189 +# CONFIG_ELPLUS is not set
 25.1190 +CONFIG_EL16=m
 25.1191 +CONFIG_EL3=m
 25.1192 +# CONFIG_3C515 is not set
 25.1193 +CONFIG_VORTEX=m
 25.1194 +CONFIG_TYPHOON=m
 25.1195 +# CONFIG_LANCE is not set
 25.1196 +CONFIG_NET_VENDOR_SMC=y
 25.1197 +CONFIG_WD80x3=m
 25.1198 +CONFIG_ULTRA=m
 25.1199 +CONFIG_SMC9194=m
 25.1200 +CONFIG_NET_VENDOR_RACAL=y
 25.1201 +CONFIG_NI5010=m
 25.1202 +CONFIG_NI52=m
 25.1203 +# CONFIG_NI65 is not set
 25.1204 +
 25.1205 +#
 25.1206 +# Tulip family network device support
 25.1207 +#
 25.1208 +CONFIG_NET_TULIP=y
 25.1209 +CONFIG_DE2104X=m
 25.1210 +CONFIG_TULIP=m
 25.1211 +# CONFIG_TULIP_MWI is not set
 25.1212 +# CONFIG_TULIP_MMIO is not set
 25.1213 +# CONFIG_TULIP_NAPI is not set
 25.1214 +CONFIG_DE4X5=m
 25.1215 +CONFIG_WINBOND_840=m
 25.1216 +CONFIG_DM9102=m
 25.1217 +CONFIG_PCMCIA_XIRCOM=m
 25.1218 +CONFIG_PCMCIA_XIRTULIP=m
 25.1219 +CONFIG_AT1700=m
 25.1220 +CONFIG_DEPCA=m
 25.1221 +CONFIG_HP100=m
 25.1222 +CONFIG_NET_ISA=y
 25.1223 +CONFIG_E2100=m
 25.1224 +CONFIG_EWRK3=m
 25.1225 +CONFIG_EEXPRESS=m
 25.1226 +CONFIG_EEXPRESS_PRO=m
 25.1227 +CONFIG_HPLAN_PLUS=m
 25.1228 +CONFIG_HPLAN=m
 25.1229 +CONFIG_LP486E=m
 25.1230 +CONFIG_ETH16I=m
 25.1231 +CONFIG_NE2000=m
 25.1232 +CONFIG_ZNET=m
 25.1233 +CONFIG_SEEQ8005=m
 25.1234 +CONFIG_NET_PCI=y
 25.1235 +CONFIG_PCNET32=m
 25.1236 +CONFIG_AMD8111_ETH=m
 25.1237 +# CONFIG_AMD8111E_NAPI is not set
 25.1238 +CONFIG_ADAPTEC_STARFIRE=m
 25.1239 +# CONFIG_ADAPTEC_STARFIRE_NAPI is not set
 25.1240 +CONFIG_AC3200=m
 25.1241 +CONFIG_APRICOT=m
 25.1242 +CONFIG_B44=m
 25.1243 +CONFIG_FORCEDETH=m
 25.1244 +CONFIG_CS89x0=m
 25.1245 +# CONFIG_DGRS is not set
 25.1246 +CONFIG_EEPRO100=m
 25.1247 +CONFIG_E100=m
 25.1248 +# CONFIG_E100_NAPI is not set
 25.1249 +CONFIG_FEALNX=m
 25.1250 +CONFIG_NATSEMI=m
 25.1251 +CONFIG_NE2K_PCI=m
 25.1252 +CONFIG_8139CP=m
 25.1253 +CONFIG_8139TOO=m
 25.1254 +CONFIG_8139TOO_PIO=y
 25.1255 +CONFIG_8139TOO_TUNE_TWISTER=y
 25.1256 +CONFIG_8139TOO_8129=y
 25.1257 +# CONFIG_8139_OLD_RX_RESET is not set
 25.1258 +CONFIG_SIS900=m
 25.1259 +CONFIG_EPIC100=m
 25.1260 +CONFIG_SUNDANCE=m
 25.1261 +# CONFIG_SUNDANCE_MMIO is not set
 25.1262 +CONFIG_TLAN=m
 25.1263 +CONFIG_VIA_RHINE=m
 25.1264 +# CONFIG_VIA_RHINE_MMIO is not set
 25.1265 +CONFIG_NET_POCKET=y
 25.1266 +CONFIG_ATP=m
 25.1267 +CONFIG_DE600=m
 25.1268 +CONFIG_DE620=m
 25.1269 +
 25.1270 +#
 25.1271 +# Ethernet (1000 Mbit)
 25.1272 +#
 25.1273 +# CONFIG_ACENIC is not set
 25.1274 +CONFIG_DL2K=m
 25.1275 +CONFIG_E1000=m
 25.1276 +# CONFIG_E1000_NAPI is not set
 25.1277 +CONFIG_NS83820=m
 25.1278 +CONFIG_HAMACHI=m
 25.1279 +CONFIG_YELLOWFIN=m
 25.1280 +CONFIG_R8169=m
 25.1281 +# CONFIG_R8169_NAPI is not set
 25.1282 +# CONFIG_R8169_VLAN is not set
 25.1283 +CONFIG_SK98LIN=m
 25.1284 +CONFIG_VIA_VELOCITY=m
 25.1285 +CONFIG_TIGON3=m
 25.1286 +
 25.1287 +#
 25.1288 +# Ethernet (10000 Mbit)
 25.1289 +#
 25.1290 +CONFIG_IXGB=m
 25.1291 +# CONFIG_IXGB_NAPI is not set
 25.1292 +CONFIG_S2IO=m
 25.1293 +# CONFIG_S2IO_NAPI is not set
 25.1294 +# CONFIG_2BUFF_MODE is not set
 25.1295 +
 25.1296 +#
 25.1297 +# Token Ring devices
 25.1298 +#
 25.1299 +CONFIG_TR=y
 25.1300 +CONFIG_IBMTR=m
 25.1301 +CONFIG_IBMOL=m
 25.1302 +CONFIG_IBMLS=m
 25.1303 +CONFIG_3C359=m
 25.1304 +CONFIG_TMS380TR=m
 25.1305 +CONFIG_TMSPCI=m
 25.1306 +CONFIG_SKISA=m
 25.1307 +CONFIG_PROTEON=m
 25.1308 +CONFIG_ABYSS=m
 25.1309 +# CONFIG_SMCTR is not set
 25.1310 +
 25.1311 +#
 25.1312 +# Wireless LAN (non-hamradio)
 25.1313 +#
 25.1314 +CONFIG_NET_RADIO=y
 25.1315 +
 25.1316 +#
 25.1317 +# Obsolete Wireless cards support (pre-802.11)
 25.1318 +#
 25.1319 +CONFIG_STRIP=m
 25.1320 +CONFIG_ARLAN=m
 25.1321 +CONFIG_WAVELAN=m
 25.1322 +CONFIG_PCMCIA_WAVELAN=m
 25.1323 +CONFIG_PCMCIA_NETWAVE=m
 25.1324 +
 25.1325 +#
 25.1326 +# Wireless 802.11 Frequency Hopping cards support
 25.1327 +#
 25.1328 +CONFIG_PCMCIA_RAYCS=m
 25.1329 +
 25.1330 +#
 25.1331 +# Wireless 802.11b ISA/PCI cards support
 25.1332 +#
 25.1333 +CONFIG_AIRO=m
 25.1334 +CONFIG_HERMES=m
 25.1335 +CONFIG_PLX_HERMES=m
 25.1336 +CONFIG_TMD_HERMES=m
 25.1337 +CONFIG_PCI_HERMES=m
 25.1338 +CONFIG_ATMEL=m
 25.1339 +CONFIG_PCI_ATMEL=m
 25.1340 +
 25.1341 +#
 25.1342 +# Wireless 802.11b Pcmcia/Cardbus cards support
 25.1343 +#
 25.1344 +CONFIG_PCMCIA_HERMES=m
 25.1345 +CONFIG_AIRO_CS=m
 25.1346 +CONFIG_PCMCIA_ATMEL=m
 25.1347 +CONFIG_PCMCIA_WL3501=m
 25.1348 +
 25.1349 +#
 25.1350 +# Prism GT/Duette 802.11(a/b/g) PCI/Cardbus support
 25.1351 +#
 25.1352 +CONFIG_PRISM54=m
 25.1353 +CONFIG_NET_WIRELESS=y
 25.1354 +
 25.1355 +#
 25.1356 +# PCMCIA network device support
 25.1357 +#
 25.1358 +CONFIG_NET_PCMCIA=y
 25.1359 +CONFIG_PCMCIA_3C589=m
 25.1360 +CONFIG_PCMCIA_3C574=m
 25.1361 +CONFIG_PCMCIA_FMVJ18X=m
 25.1362 +CONFIG_PCMCIA_PCNET=m
 25.1363 +CONFIG_PCMCIA_NMCLAN=m
 25.1364 +CONFIG_PCMCIA_SMC91C92=m
 25.1365 +CONFIG_PCMCIA_XIRC2PS=m
 25.1366 +CONFIG_PCMCIA_AXNET=m
 25.1367 +CONFIG_ARCNET_COM20020_CS=m
 25.1368 +CONFIG_PCMCIA_IBMTR=m
 25.1369 +
 25.1370 +#
 25.1371 +# Wan interfaces
 25.1372 +#
 25.1373 +CONFIG_WAN=y
 25.1374 +CONFIG_HOSTESS_SV11=m
 25.1375 +CONFIG_COSA=m
 25.1376 +CONFIG_DSCC4=m
 25.1377 +CONFIG_DSCC4_PCISYNC=y
 25.1378 +CONFIG_DSCC4_PCI_RST=y
 25.1379 +CONFIG_LANMEDIA=m
 25.1380 +CONFIG_SEALEVEL_4021=m
 25.1381 +CONFIG_SYNCLINK_SYNCPPP=m
 25.1382 +CONFIG_HDLC=m
 25.1383 +CONFIG_HDLC_RAW=y
 25.1384 +CONFIG_HDLC_RAW_ETH=y
 25.1385 +CONFIG_HDLC_CISCO=y
 25.1386 +CONFIG_HDLC_FR=y
 25.1387 +CONFIG_HDLC_PPP=y
 25.1388 +CONFIG_HDLC_X25=y
 25.1389 +CONFIG_PCI200SYN=m
 25.1390 +CONFIG_WANXL=m
 25.1391 +CONFIG_PC300=m
 25.1392 +CONFIG_PC300_MLPPP=y
 25.1393 +CONFIG_N2=m
 25.1394 +CONFIG_C101=m
 25.1395 +CONFIG_FARSYNC=m
 25.1396 +CONFIG_DLCI=m
 25.1397 +CONFIG_DLCI_COUNT=24
 25.1398 +CONFIG_DLCI_MAX=8
 25.1399 +CONFIG_SDLA=m
 25.1400 +CONFIG_WAN_ROUTER_DRIVERS=y
 25.1401 +# CONFIG_VENDOR_SANGOMA is not set
 25.1402 +CONFIG_CYCLADES_SYNC=m
 25.1403 +CONFIG_CYCLOMX_X25=y
 25.1404 +CONFIG_LAPBETHER=m
 25.1405 +CONFIG_X25_ASY=m
 25.1406 +CONFIG_SBNI=m
 25.1407 +# CONFIG_SBNI_MULTILINE is not set
 25.1408 +
 25.1409 +#
 25.1410 +# ATM drivers
 25.1411 +#
 25.1412 +CONFIG_ATM_TCP=m
 25.1413 +CONFIG_ATM_LANAI=m
 25.1414 +CONFIG_ATM_ENI=m
 25.1415 +# CONFIG_ATM_ENI_DEBUG is not set
 25.1416 +# CONFIG_ATM_ENI_TUNE_BURST is not set
 25.1417 +CONFIG_ATM_FIRESTREAM=m
 25.1418 +CONFIG_ATM_ZATM=m
 25.1419 +# CONFIG_ATM_ZATM_DEBUG is not set
 25.1420 +CONFIG_ATM_NICSTAR=m
 25.1421 +# CONFIG_ATM_NICSTAR_USE_SUNI is not set
 25.1422 +# CONFIG_ATM_NICSTAR_USE_IDT77105 is not set
 25.1423 +CONFIG_ATM_IDT77252=m
 25.1424 +# CONFIG_ATM_IDT77252_DEBUG is not set
 25.1425 +# CONFIG_ATM_IDT77252_RCV_ALL is not set
 25.1426 +CONFIG_ATM_IDT77252_USE_SUNI=y
 25.1427 +CONFIG_ATM_AMBASSADOR=m
 25.1428 +# CONFIG_ATM_AMBASSADOR_DEBUG is not set
 25.1429 +CONFIG_ATM_HORIZON=m
 25.1430 +# CONFIG_ATM_HORIZON_DEBUG is not set
 25.1431 +CONFIG_ATM_IA=m
 25.1432 +# CONFIG_ATM_IA_DEBUG is not set
 25.1433 +CONFIG_ATM_FORE200E_MAYBE=m
 25.1434 +CONFIG_ATM_FORE200E_PCA=y
 25.1435 +CONFIG_ATM_FORE200E_PCA_DEFAULT_FW=y
 25.1436 +# CONFIG_ATM_FORE200E_USE_TASKLET is not set
 25.1437 +CONFIG_ATM_FORE200E_TX_RETRY=16
 25.1438 +CONFIG_ATM_FORE200E_DEBUG=0
 25.1439 +CONFIG_ATM_FORE200E=m
 25.1440 +CONFIG_ATM_HE=m
 25.1441 +CONFIG_ATM_HE_USE_SUNI=y
 25.1442 +CONFIG_FDDI=y
 25.1443 +CONFIG_DEFXX=m
 25.1444 +CONFIG_SKFP=m
 25.1445 +CONFIG_HIPPI=y
 25.1446 +CONFIG_ROADRUNNER=m
 25.1447 +# CONFIG_ROADRUNNER_LARGE_RINGS is not set
 25.1448 +CONFIG_PLIP=m
 25.1449 +CONFIG_PPP=m
 25.1450 +CONFIG_PPP_MULTILINK=y
 25.1451 +CONFIG_PPP_FILTER=y
 25.1452 +CONFIG_PPP_ASYNC=m
 25.1453 +CONFIG_PPP_SYNC_TTY=m
 25.1454 +CONFIG_PPP_DEFLATE=m
 25.1455 +CONFIG_PPP_BSDCOMP=m
 25.1456 +CONFIG_PPPOE=m
 25.1457 +CONFIG_PPPOATM=m
 25.1458 +CONFIG_SLIP=m
 25.1459 +CONFIG_SLIP_COMPRESSED=y
 25.1460 +CONFIG_SLIP_SMART=y
 25.1461 +CONFIG_SLIP_MODE_SLIP6=y
 25.1462 +CONFIG_NET_FC=y
 25.1463 +# CONFIG_IPHASE5526 is not set
 25.1464 +CONFIG_SHAPER=m
 25.1465 +CONFIG_NETCONSOLE=m
 25.1466 +
 25.1467 +#
 25.1468 +# ISDN subsystem
 25.1469 +#
 25.1470 +CONFIG_ISDN=m
 25.1471 +
 25.1472 +#
 25.1473 +# Old ISDN4Linux
 25.1474 +#
 25.1475 +CONFIG_ISDN_I4L=m
 25.1476 +CONFIG_ISDN_PPP=y
 25.1477 +CONFIG_ISDN_PPP_VJ=y
 25.1478 +CONFIG_ISDN_MPP=y
 25.1479 +CONFIG_IPPP_FILTER=y
 25.1480 +CONFIG_ISDN_PPP_BSDCOMP=m
 25.1481 +CONFIG_ISDN_AUDIO=y
 25.1482 +CONFIG_ISDN_TTY_FAX=y
 25.1483 +CONFIG_ISDN_X25=y
 25.1484 +
 25.1485 +#
 25.1486 +# ISDN feature submodules
 25.1487 +#
 25.1488 +CONFIG_ISDN_DRV_LOOP=m
 25.1489 +# CONFIG_ISDN_DIVERSION is not set
 25.1490 +
 25.1491 +#
 25.1492 +# ISDN4Linux hardware drivers
 25.1493 +#
 25.1494 +
 25.1495 +#
 25.1496 +# Passive cards
 25.1497 +#
 25.1498 +CONFIG_ISDN_DRV_HISAX=m
 25.1499 +
 25.1500 +#
 25.1501 +# D-channel protocol features
 25.1502 +#
 25.1503 +CONFIG_HISAX_EURO=y
 25.1504 +CONFIG_DE_AOC=y
 25.1505 +# CONFIG_HISAX_NO_SENDCOMPLETE is not set
 25.1506 +# CONFIG_HISAX_NO_LLC is not set
 25.1507 +# CONFIG_HISAX_NO_KEYPAD is not set
 25.1508 +CONFIG_HISAX_1TR6=y
 25.1509 +CONFIG_HISAX_NI1=y
 25.1510 +CONFIG_HISAX_MAX_CARDS=8
 25.1511 +
 25.1512 +#
 25.1513 +# HiSax supported cards
 25.1514 +#
 25.1515 +CONFIG_HISAX_16_0=y
 25.1516 +CONFIG_HISAX_16_3=y
 25.1517 +CONFIG_HISAX_TELESPCI=y
 25.1518 +CONFIG_HISAX_S0BOX=y
 25.1519 +CONFIG_HISAX_AVM_A1=y
 25.1520 +CONFIG_HISAX_FRITZPCI=y
 25.1521 +CONFIG_HISAX_AVM_A1_PCMCIA=y
 25.1522 +CONFIG_HISAX_ELSA=y
 25.1523 +CONFIG_HISAX_IX1MICROR2=y
 25.1524 +CONFIG_HISAX_DIEHLDIVA=y
 25.1525 +CONFIG_HISAX_ASUSCOM=y
 25.1526 +CONFIG_HISAX_TELEINT=y
 25.1527 +CONFIG_HISAX_HFCS=y
 25.1528 +CONFIG_HISAX_SEDLBAUER=y
 25.1529 +CONFIG_HISAX_SPORTSTER=y
 25.1530 +CONFIG_HISAX_MIC=y
 25.1531 +CONFIG_HISAX_NETJET=y
 25.1532 +CONFIG_HISAX_NETJET_U=y
 25.1533 +CONFIG_HISAX_NICCY=y
 25.1534 +CONFIG_HISAX_ISURF=y
 25.1535 +CONFIG_HISAX_HSTSAPHIR=y
 25.1536 +CONFIG_HISAX_BKM_A4T=y
 25.1537 +CONFIG_HISAX_SCT_QUADRO=y
 25.1538 +CONFIG_HISAX_GAZEL=y
 25.1539 +CONFIG_HISAX_HFC_PCI=y
 25.1540 +CONFIG_HISAX_W6692=y
 25.1541 +CONFIG_HISAX_HFC_SX=y
 25.1542 +CONFIG_HISAX_ENTERNOW_PCI=y
 25.1543 +# CONFIG_HISAX_DEBUG is not set
 25.1544 +
 25.1545 +#
 25.1546 +# HiSax PCMCIA card service modules
 25.1547 +#
 25.1548 +CONFIG_HISAX_SEDLBAUER_CS=m
 25.1549 +CONFIG_HISAX_ELSA_CS=m
 25.1550 +CONFIG_HISAX_AVM_A1_CS=m
 25.1551 +CONFIG_HISAX_TELES_CS=m
 25.1552 +
 25.1553 +#
 25.1554 +# HiSax sub driver modules
 25.1555 +#
 25.1556 +CONFIG_HISAX_ST5481=m
 25.1557 +CONFIG_HISAX_HFCUSB=m
 25.1558 +CONFIG_HISAX_FRITZ_PCIPNP=m
 25.1559 +CONFIG_HISAX_HDLC=y
 25.1560 +
 25.1561 +#
 25.1562 +# Active cards
 25.1563 +#
 25.1564 +CONFIG_ISDN_DRV_ICN=m
 25.1565 +CONFIG_ISDN_DRV_PCBIT=m
 25.1566 +CONFIG_ISDN_DRV_SC=m
 25.1567 +CONFIG_ISDN_DRV_ACT2000=m
 25.1568 +CONFIG_ISDN_DRV_TPAM=m
 25.1569 +CONFIG_HYSDN=m
 25.1570 +CONFIG_HYSDN_CAPI=y
 25.1571 +
 25.1572 +#
 25.1573 +# CAPI subsystem
 25.1574 +#
 25.1575 +CONFIG_ISDN_CAPI=m
 25.1576 +CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON=y
 25.1577 +CONFIG_ISDN_CAPI_MIDDLEWARE=y
 25.1578 +CONFIG_ISDN_CAPI_CAPI20=m
 25.1579 +CONFIG_ISDN_CAPI_CAPIFS_BOOL=y
 25.1580 +CONFIG_ISDN_CAPI_CAPIFS=m
 25.1581 +CONFIG_ISDN_CAPI_CAPIDRV=m
 25.1582 +
 25.1583 +#
 25.1584 +# CAPI hardware drivers
 25.1585 +#
 25.1586 +
 25.1587 +#
 25.1588 +# Active AVM cards
 25.1589 +#
 25.1590 +CONFIG_CAPI_AVM=y
 25.1591 +CONFIG_ISDN_DRV_AVMB1_B1ISA=m
 25.1592 +CONFIG_ISDN_DRV_AVMB1_B1PCI=m
 25.1593 +CONFIG_ISDN_DRV_AVMB1_B1PCIV4=y
 25.1594 +CONFIG_ISDN_DRV_AVMB1_T1ISA=m
 25.1595 +CONFIG_ISDN_DRV_AVMB1_B1PCMCIA=m
 25.1596 +CONFIG_ISDN_DRV_AVMB1_AVM_CS=m
 25.1597 +CONFIG_ISDN_DRV_AVMB1_T1PCI=m
 25.1598 +CONFIG_ISDN_DRV_AVMB1_C4=m
 25.1599 +
 25.1600 +#
 25.1601 +# Active Eicon DIVA Server cards
 25.1602 +#
 25.1603 +CONFIG_CAPI_EICON=y
 25.1604 +CONFIG_ISDN_DIVAS=m
 25.1605 +CONFIG_ISDN_DIVAS_BRIPCI=y
 25.1606 +CONFIG_ISDN_DIVAS_PRIPCI=y
 25.1607 +CONFIG_ISDN_DIVAS_DIVACAPI=m
 25.1608 +CONFIG_ISDN_DIVAS_USERIDI=m
 25.1609 +CONFIG_ISDN_DIVAS_MAINT=m
 25.1610 +
 25.1611 +#
 25.1612 +# Telephony Support
 25.1613 +#
 25.1614 +CONFIG_PHONE=m
 25.1615 +CONFIG_PHONE_IXJ=m
 25.1616 +CONFIG_PHONE_IXJ_PCMCIA=m
 25.1617 +
 25.1618 +#
 25.1619 +# Input device support
 25.1620 +#
 25.1621 +CONFIG_INPUT=y
 25.1622 +
 25.1623 +#
 25.1624 +# Userland interfaces
 25.1625 +#
 25.1626 +CONFIG_INPUT_MOUSEDEV=m
 25.1627 +CONFIG_INPUT_MOUSEDEV_PSAUX=y
 25.1628 +CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
 25.1629 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
 25.1630 +CONFIG_INPUT_JOYDEV=m
 25.1631 +CONFIG_INPUT_TSDEV=m
 25.1632 +CONFIG_INPUT_TSDEV_SCREEN_X=240
 25.1633 +CONFIG_INPUT_TSDEV_SCREEN_Y=320
 25.1634 +CONFIG_INPUT_EVDEV=m
 25.1635 +CONFIG_INPUT_EVBUG=m
 25.1636 +
 25.1637 +#
 25.1638 +# Input I/O drivers
 25.1639 +#
 25.1640 +CONFIG_GAMEPORT=m
 25.1641 +CONFIG_SOUND_GAMEPORT=m
 25.1642 +CONFIG_GAMEPORT_NS558=m
 25.1643 +CONFIG_GAMEPORT_L4=m
 25.1644 +CONFIG_GAMEPORT_EMU10K1=m
 25.1645 +CONFIG_GAMEPORT_VORTEX=m
 25.1646 +CONFIG_GAMEPORT_FM801=m
 25.1647 +# CONFIG_GAMEPORT_CS461X is not set
 25.1648 +CONFIG_SERIO=y
 25.1649 +CONFIG_SERIO_I8042=y
 25.1650 +CONFIG_SERIO_SERPORT=m
 25.1651 +CONFIG_SERIO_CT82C710=m
 25.1652 +CONFIG_SERIO_PARKBD=m
 25.1653 +CONFIG_SERIO_PCIPS2=m
 25.1654 +CONFIG_SERIO_LIBPS2=y
 25.1655 +CONFIG_SERIO_RAW=m
 25.1656 +
 25.1657 +#
 25.1658 +# Input Device Drivers
 25.1659 +#
 25.1660 +CONFIG_INPUT_KEYBOARD=y
 25.1661 +CONFIG_KEYBOARD_ATKBD=y
 25.1662 +CONFIG_KEYBOARD_SUNKBD=m
 25.1663 +CONFIG_KEYBOARD_LKKBD=m
 25.1664 +CONFIG_KEYBOARD_XTKBD=m
 25.1665 +CONFIG_KEYBOARD_NEWTON=m
 25.1666 +CONFIG_INPUT_MOUSE=y
 25.1667 +CONFIG_MOUSE_PS2=m
 25.1668 +CONFIG_MOUSE_SERIAL=m
 25.1669 +CONFIG_MOUSE_INPORT=m
 25.1670 +# CONFIG_MOUSE_ATIXL is not set
 25.1671 +CONFIG_MOUSE_LOGIBM=m
 25.1672 +CONFIG_MOUSE_PC110PAD=m
 25.1673 +CONFIG_MOUSE_VSXXXAA=m
 25.1674 +CONFIG_INPUT_JOYSTICK=y
 25.1675 +CONFIG_JOYSTICK_ANALOG=m
 25.1676 +CONFIG_JOYSTICK_A3D=m
 25.1677 +CONFIG_JOYSTICK_ADI=m
 25.1678 +CONFIG_JOYSTICK_COBRA=m
 25.1679 +CONFIG_JOYSTICK_GF2K=m
 25.1680 +CONFIG_JOYSTICK_GRIP=m
 25.1681 +CONFIG_JOYSTICK_GRIP_MP=m
 25.1682 +CONFIG_JOYSTICK_GUILLEMOT=m
 25.1683 +CONFIG_JOYSTICK_INTERACT=m
 25.1684 +CONFIG_JOYSTICK_SIDEWINDER=m
 25.1685 +CONFIG_JOYSTICK_TMDC=m
 25.1686 +CONFIG_JOYSTICK_IFORCE=m
 25.1687 +CONFIG_JOYSTICK_IFORCE_USB=y
 25.1688 +CONFIG_JOYSTICK_IFORCE_232=y
 25.1689 +CONFIG_JOYSTICK_WARRIOR=m
 25.1690 +CONFIG_JOYSTICK_MAGELLAN=m
 25.1691 +CONFIG_JOYSTICK_SPACEORB=m
 25.1692 +CONFIG_JOYSTICK_SPACEBALL=m
 25.1693 +CONFIG_JOYSTICK_STINGER=m
 25.1694 +CONFIG_JOYSTICK_TWIDDLER=m
 25.1695 +CONFIG_JOYSTICK_DB9=m
 25.1696 +CONFIG_JOYSTICK_GAMECON=m
 25.1697 +CONFIG_JOYSTICK_TURBOGRAFX=m
 25.1698 +CONFIG_JOYSTICK_JOYDUMP=m
 25.1699 +CONFIG_INPUT_TOUCHSCREEN=y
 25.1700 +CONFIG_TOUCHSCREEN_GUNZE=m
 25.1701 +CONFIG_INPUT_MISC=y
 25.1702 +CONFIG_INPUT_PCSPKR=m
 25.1703 +CONFIG_INPUT_UINPUT=m
 25.1704 +
 25.1705 +#
 25.1706 +# Character devices
 25.1707 +#
 25.1708 +CONFIG_VT=y
 25.1709 +CONFIG_VT_CONSOLE=y
 25.1710 +CONFIG_HW_CONSOLE=y
 25.1711 +# CONFIG_SERIAL_NONSTANDARD is not set
 25.1712 +
 25.1713 +#
 25.1714 +# Serial drivers
 25.1715 +#
 25.1716 +CONFIG_SERIAL_8250=m
 25.1717 +# CONFIG_SERIAL_8250_CS is not set
 25.1718 +# CONFIG_SERIAL_8250_ACPI is not set
 25.1719 +CONFIG_SERIAL_8250_NR_UARTS=4
 25.1720 +# CONFIG_SERIAL_8250_EXTENDED is not set
 25.1721 +
 25.1722 +#
 25.1723 +# Non-8250 serial port support
 25.1724 +#
 25.1725 +CONFIG_SERIAL_CORE=m
 25.1726 +CONFIG_UNIX98_PTYS=y
 25.1727 +CONFIG_LEGACY_PTYS=y
 25.1728 +CONFIG_LEGACY_PTY_COUNT=256
 25.1729 +CONFIG_PRINTER=m
 25.1730 +# CONFIG_LP_CONSOLE is not set
 25.1731 +CONFIG_PPDEV=m
 25.1732 +CONFIG_TIPAR=m
 25.1733 +
 25.1734 +#
 25.1735 +# IPMI
 25.1736 +#
 25.1737 +CONFIG_IPMI_HANDLER=m
 25.1738 +# CONFIG_IPMI_PANIC_EVENT is not set
 25.1739 +CONFIG_IPMI_DEVICE_INTERFACE=m
 25.1740 +CONFIG_IPMI_SI=m
 25.1741 +CONFIG_IPMI_WATCHDOG=m
 25.1742 +CONFIG_IPMI_POWEROFF=m
 25.1743 +
 25.1744 +#
 25.1745 +# Watchdog Cards
 25.1746 +#
 25.1747 +CONFIG_WATCHDOG=y
 25.1748 +# CONFIG_WATCHDOG_NOWAYOUT is not set
 25.1749 +
 25.1750 +#
 25.1751 +# Watchdog Device Drivers
 25.1752 +#
 25.1753 +CONFIG_SOFT_WATCHDOG=m
 25.1754 +CONFIG_ACQUIRE_WDT=m
 25.1755 +CONFIG_ADVANTECH_WDT=m
 25.1756 +CONFIG_ALIM1535_WDT=m
 25.1757 +CONFIG_ALIM7101_WDT=m
 25.1758 +CONFIG_SC520_WDT=m
 25.1759 +CONFIG_EUROTECH_WDT=m
 25.1760 +CONFIG_IB700_WDT=m
 25.1761 +CONFIG_WAFER_WDT=m
 25.1762 +CONFIG_I8XX_TCO=m
 25.1763 +CONFIG_SC1200_WDT=m
 25.1764 +CONFIG_SCx200_WDT=m
 25.1765 +CONFIG_60XX_WDT=m
 25.1766 +CONFIG_CPU5_WDT=m
 25.1767 +CONFIG_W83627HF_WDT=m
 25.1768 +CONFIG_W83877F_WDT=m
 25.1769 +CONFIG_MACHZ_WDT=m
 25.1770 +
 25.1771 +#
 25.1772 +# ISA-based Watchdog Cards
 25.1773 +#
 25.1774 +CONFIG_PCWATCHDOG=m
 25.1775 +CONFIG_MIXCOMWD=m
 25.1776 +CONFIG_WDT=m
 25.1777 +CONFIG_WDT_501=y
 25.1778 +
 25.1779 +#
 25.1780 +# PCI-based Watchdog Cards
 25.1781 +#
 25.1782 +CONFIG_PCIPCWATCHDOG=m
 25.1783 +CONFIG_WDTPCI=m
 25.1784 +CONFIG_WDT_501_PCI=y
 25.1785 +
 25.1786 +#
 25.1787 +# USB-based Watchdog Cards
 25.1788 +#
 25.1789 +CONFIG_USBPCWATCHDOG=m
 25.1790 +CONFIG_HW_RANDOM=m
 25.1791 +CONFIG_NVRAM=m
 25.1792 +CONFIG_RTC=m
 25.1793 +CONFIG_GEN_RTC=m
 25.1794 +CONFIG_GEN_RTC_X=y
 25.1795 +CONFIG_DTLK=m
 25.1796 +CONFIG_R3964=m
 25.1797 +CONFIG_APPLICOM=m
 25.1798 +CONFIG_SONYPI=m
 25.1799 +
 25.1800 +#
 25.1801 +# Ftape, the floppy tape device driver
 25.1802 +#
 25.1803 +CONFIG_FTAPE=m
 25.1804 +CONFIG_ZFTAPE=m
 25.1805 +CONFIG_ZFT_DFLT_BLK_SZ=10240
 25.1806 +
 25.1807 +#
 25.1808 +# The compressor will be built as a module only!
 25.1809 +#
 25.1810 +CONFIG_ZFT_COMPRESSOR=m
 25.1811 +CONFIG_FT_NR_BUFFERS=3
 25.1812 +CONFIG_FT_PROC_FS=y
 25.1813 +CONFIG_FT_NORMAL_DEBUG=y
 25.1814 +# CONFIG_FT_FULL_DEBUG is not set
 25.1815 +# CONFIG_FT_NO_TRACE is not set
 25.1816 +# CONFIG_FT_NO_TRACE_AT_ALL is not set
 25.1817 +
 25.1818 +#
 25.1819 +# Hardware configuration
 25.1820 +#
 25.1821 +CONFIG_FT_STD_FDC=y
 25.1822 +# CONFIG_FT_MACH2 is not set
 25.1823 +# CONFIG_FT_PROBE_FC10 is not set
 25.1824 +# CONFIG_FT_ALT_FDC is not set
 25.1825 +CONFIG_FT_FDC_THR=8
 25.1826 +CONFIG_FT_FDC_MAX_RATE=2000
 25.1827 +CONFIG_FT_ALPHA_CLOCK=0
 25.1828 +CONFIG_AGP=m
 25.1829 +CONFIG_AGP_ALI=m
 25.1830 +CONFIG_AGP_ATI=m
 25.1831 +CONFIG_AGP_AMD=m
 25.1832 +CONFIG_AGP_AMD64=m
 25.1833 +CONFIG_AGP_INTEL=m
 25.1834 +CONFIG_AGP_INTEL_MCH=m
 25.1835 +CONFIG_AGP_NVIDIA=m
 25.1836 +CONFIG_AGP_SIS=m
 25.1837 +CONFIG_AGP_SWORKS=m
 25.1838 +CONFIG_AGP_VIA=m
 25.1839 +CONFIG_AGP_EFFICEON=m
 25.1840 +CONFIG_DRM=m
 25.1841 +CONFIG_DRM_TDFX=m
 25.1842 +# CONFIG_DRM_GAMMA is not set
 25.1843 +CONFIG_DRM_R128=m
 25.1844 +CONFIG_DRM_RADEON=m
 25.1845 +CONFIG_DRM_I810=m
 25.1846 +CONFIG_DRM_I830=m
 25.1847 +CONFIG_DRM_I915=m
 25.1848 +CONFIG_DRM_MGA=m
 25.1849 +CONFIG_DRM_SIS=m
 25.1850 +
 25.1851 +#
 25.1852 +# PCMCIA character devices
 25.1853 +#
 25.1854 +CONFIG_SYNCLINK_CS=m
 25.1855 +CONFIG_MWAVE=m
 25.1856 +CONFIG_SCx200_GPIO=m
 25.1857 +CONFIG_RAW_DRIVER=m
 25.1858 +# CONFIG_HPET is not set
 25.1859 +CONFIG_MAX_RAW_DEVS=256
 25.1860 +CONFIG_HANGCHECK_TIMER=m
 25.1861 +
 25.1862 +#
 25.1863 +# I2C support
 25.1864 +#
 25.1865 +CONFIG_I2C=m
 25.1866 +CONFIG_I2C_CHARDEV=m
 25.1867 +
 25.1868 +#
 25.1869 +# I2C Algorithms
 25.1870 +#
 25.1871 +CONFIG_I2C_ALGOBIT=m
 25.1872 +CONFIG_I2C_ALGOPCF=m
 25.1873 +CONFIG_I2C_ALGOPCA=m
 25.1874 +
 25.1875 +#
 25.1876 +# I2C Hardware Bus support
 25.1877 +#
 25.1878 +CONFIG_I2C_ALI1535=m
 25.1879 +CONFIG_I2C_ALI1563=m
 25.1880 +CONFIG_I2C_ALI15X3=m
 25.1881 +CONFIG_I2C_AMD756=m
 25.1882 +CONFIG_I2C_AMD756_S4882=m
 25.1883 +CONFIG_I2C_AMD8111=m
 25.1884 +CONFIG_I2C_ELEKTOR=m
 25.1885 +CONFIG_I2C_I801=m
 25.1886 +CONFIG_I2C_I810=m
 25.1887 +CONFIG_I2C_ISA=m
 25.1888 +CONFIG_I2C_NFORCE2=m
 25.1889 +CONFIG_I2C_PARPORT=m
 25.1890 +CONFIG_I2C_PARPORT_LIGHT=m
 25.1891 +CONFIG_I2C_PIIX4=m
 25.1892 +CONFIG_I2C_PROSAVAGE=m
 25.1893 +CONFIG_I2C_SAVAGE4=m
 25.1894 +CONFIG_SCx200_I2C=m
 25.1895 +CONFIG_SCx200_I2C_SCL=12
 25.1896 +CONFIG_SCx200_I2C_SDA=13
 25.1897 +CONFIG_SCx200_ACB=m
 25.1898 +CONFIG_I2C_SIS5595=m
 25.1899 +CONFIG_I2C_SIS630=m
 25.1900 +CONFIG_I2C_SIS96X=m
 25.1901 +CONFIG_I2C_STUB=m
 25.1902 +CONFIG_I2C_VIA=m
 25.1903 +CONFIG_I2C_VIAPRO=m
 25.1904 +CONFIG_I2C_VOODOO3=m
 25.1905 +CONFIG_I2C_PCA_ISA=m
 25.1906 +
 25.1907 +#
 25.1908 +# Hardware Sensors Chip support
 25.1909 +#
 25.1910 +CONFIG_I2C_SENSOR=m
 25.1911 +CONFIG_SENSORS_ADM1021=m
 25.1912 +CONFIG_SENSORS_ADM1025=m
 25.1913 +CONFIG_SENSORS_ADM1026=m
 25.1914 +CONFIG_SENSORS_ADM1031=m
 25.1915 +CONFIG_SENSORS_ASB100=m
 25.1916 +CONFIG_SENSORS_DS1621=m
 25.1917 +CONFIG_SENSORS_FSCHER=m
 25.1918 +CONFIG_SENSORS_GL518SM=m
 25.1919 +CONFIG_SENSORS_IT87=m
 25.1920 +CONFIG_SENSORS_LM63=m
 25.1921 +CONFIG_SENSORS_LM75=m
 25.1922 +CONFIG_SENSORS_LM77=m
 25.1923 +CONFIG_SENSORS_LM78=m
 25.1924 +CONFIG_SENSORS_LM80=m
 25.1925 +CONFIG_SENSORS_LM83=m
 25.1926 +CONFIG_SENSORS_LM85=m
 25.1927 +CONFIG_SENSORS_LM87=m
 25.1928 +CONFIG_SENSORS_LM90=m
 25.1929 +CONFIG_SENSORS_MAX1619=m
 25.1930 +CONFIG_SENSORS_PC87360=m
 25.1931 +# CONFIG_SENSORS_SMSC47B397 is not set
 25.1932 +CONFIG_SENSORS_SMSC47M1=m
 25.1933 +CONFIG_SENSORS_VIA686A=m
 25.1934 +CONFIG_SENSORS_W83781D=m
 25.1935 +CONFIG_SENSORS_W83L785TS=m
 25.1936 +CONFIG_SENSORS_W83627HF=m
 25.1937 +
 25.1938 +#
 25.1939 +# Other I2C Chip support
 25.1940 +#
 25.1941 +CONFIG_SENSORS_EEPROM=m
 25.1942 +CONFIG_SENSORS_PCF8574=m
 25.1943 +CONFIG_SENSORS_PCF8591=m
 25.1944 +CONFIG_SENSORS_RTC8564=m
 25.1945 +# CONFIG_I2C_DEBUG_CORE is not set
 25.1946 +# CONFIG_I2C_DEBUG_ALGO is not set
 25.1947 +# CONFIG_I2C_DEBUG_BUS is not set
 25.1948 +# CONFIG_I2C_DEBUG_CHIP is not set
 25.1949 +
 25.1950 +#
 25.1951 +# Dallas's 1-wire bus
 25.1952 +#
 25.1953 +CONFIG_W1=m
 25.1954 +CONFIG_W1_MATROX=m
 25.1955 +CONFIG_W1_DS9490=m
 25.1956 +CONFIG_W1_DS9490_BRIDGE=m
 25.1957 +CONFIG_W1_THERM=m
 25.1958 +CONFIG_W1_SMEM=m
 25.1959 +
 25.1960 +#
 25.1961 +# Misc devices
 25.1962 +#
 25.1963 +CONFIG_IBM_ASM=m
 25.1964 +
 25.1965 +#
 25.1966 +# Multimedia devices
 25.1967 +#
 25.1968 +CONFIG_VIDEO_DEV=m
 25.1969 +
 25.1970 +#
 25.1971 +# Video For Linux
 25.1972 +#
 25.1973 +
 25.1974 +#
 25.1975 +# Video Adapters
 25.1976 +#
 25.1977 +CONFIG_VIDEO_BT848=m
 25.1978 +CONFIG_VIDEO_PMS=m
 25.1979 +CONFIG_VIDEO_BWQCAM=m
 25.1980 +CONFIG_VIDEO_CQCAM=m
 25.1981 +CONFIG_VIDEO_W9966=m
 25.1982 +CONFIG_VIDEO_CPIA=m
 25.1983 +CONFIG_VIDEO_CPIA_PP=m
 25.1984 +CONFIG_VIDEO_CPIA_USB=m
 25.1985 +CONFIG_VIDEO_SAA5246A=m
 25.1986 +CONFIG_VIDEO_SAA5249=m
 25.1987 +CONFIG_TUNER_3036=m
 25.1988 +CONFIG_VIDEO_STRADIS=m
 25.1989 +CONFIG_VIDEO_ZORAN=m
 25.1990 +CONFIG_VIDEO_ZORAN_BUZ=m
 25.1991 +CONFIG_VIDEO_ZORAN_DC10=m
 25.1992 +CONFIG_VIDEO_ZORAN_DC30=m
 25.1993 +CONFIG_VIDEO_ZORAN_LML33=m
 25.1994 +CONFIG_VIDEO_ZORAN_LML33R10=m
 25.1995 +# CONFIG_VIDEO_ZR36120 is not set
 25.1996 +CONFIG_VIDEO_MEYE=m
 25.1997 +# CONFIG_VIDEO_SAA7134 is not set
 25.1998 +CONFIG_VIDEO_MXB=m
 25.1999 +CONFIG_VIDEO_DPC=m
 25.2000 +CONFIG_VIDEO_HEXIUM_ORION=m
 25.2001 +CONFIG_VIDEO_HEXIUM_GEMINI=m
 25.2002 +CONFIG_VIDEO_CX88=m
 25.2003 +# CONFIG_VIDEO_CX88_DVB is not set
 25.2004 +CONFIG_VIDEO_OVCAMCHIP=m
 25.2005 +
 25.2006 +#
 25.2007 +# Radio Adapters
 25.2008 +#
 25.2009 +CONFIG_RADIO_CADET=m
 25.2010 +CONFIG_RADIO_RTRACK=m
 25.2011 +CONFIG_RADIO_RTRACK2=m
 25.2012 +CONFIG_RADIO_AZTECH=m
 25.2013 +CONFIG_RADIO_GEMTEK=m
 25.2014 +CONFIG_RADIO_GEMTEK_PCI=m
 25.2015 +CONFIG_RADIO_MAXIRADIO=m
 25.2016 +CONFIG_RADIO_MAESTRO=m
 25.2017 +CONFIG_RADIO_MIROPCM20=m
 25.2018 +CONFIG_RADIO_MIROPCM20_RDS=m
 25.2019 +CONFIG_RADIO_SF16FMI=m
 25.2020 +CONFIG_RADIO_SF16FMR2=m
 25.2021 +CONFIG_RADIO_TERRATEC=m
 25.2022 +CONFIG_RADIO_TRUST=m
 25.2023 +CONFIG_RADIO_TYPHOON=m
 25.2024 +CONFIG_RADIO_TYPHOON_PROC_FS=y
 25.2025 +CONFIG_RADIO_ZOLTRIX=m
 25.2026 +
 25.2027 +#
 25.2028 +# Digital Video Broadcasting Devices
 25.2029 +#
 25.2030 +CONFIG_DVB=y
 25.2031 +CONFIG_DVB_CORE=m
 25.2032 +
 25.2033 +#
 25.2034 +# Supported SAA7146 based PCI Adapters
 25.2035 +#
 25.2036 +CONFIG_DVB_AV7110=m
 25.2037 +# CONFIG_DVB_AV7110_OSD is not set
 25.2038 +CONFIG_DVB_BUDGET=m
 25.2039 +CONFIG_DVB_BUDGET_CI=m
 25.2040 +CONFIG_DVB_BUDGET_AV=m
 25.2041 +CONFIG_DVB_BUDGET_PATCH=m
 25.2042 +
 25.2043 +#
 25.2044 +# Supported USB Adapters
 25.2045 +#
 25.2046 +CONFIG_DVB_TTUSB_BUDGET=m
 25.2047 +CONFIG_DVB_TTUSB_DEC=m
 25.2048 +CONFIG_DVB_DIBUSB=m
 25.2049 +CONFIG_DVB_DIBUSB_MISDESIGNED_DEVICES=y
 25.2050 +# CONFIG_DVB_DIBCOM_DEBUG is not set
 25.2051 +CONFIG_DVB_CINERGYT2=m
 25.2052 +# CONFIG_DVB_CINERGYT2_TUNING is not set
 25.2053 +
 25.2054 +#
 25.2055 +# Supported FlexCopII (B2C2) Adapters
 25.2056 +#
 25.2057 +CONFIG_DVB_B2C2_SKYSTAR=m
 25.2058 +CONFIG_DVB_B2C2_USB=m
 25.2059 +
 25.2060 +#
 25.2061 +# Supported BT878 Adapters
 25.2062 +#
 25.2063 +CONFIG_DVB_BT8XX=m
 25.2064 +
 25.2065 +#
 25.2066 +# Supported DVB Frontends
 25.2067 +#
 25.2068 +
 25.2069 +#
 25.2070 +# Customise DVB Frontends
 25.2071 +#
 25.2072 +
 25.2073 +#
 25.2074 +# DVB-S (satellite) frontends
 25.2075 +#
 25.2076 +CONFIG_DVB_STV0299=m
 25.2077 +CONFIG_DVB_CX24110=m
 25.2078 +CONFIG_DVB_TDA8083=m
 25.2079 +CONFIG_DVB_TDA80XX=m
 25.2080 +CONFIG_DVB_MT312=m
 25.2081 +CONFIG_DVB_VES1X93=m
 25.2082 +
 25.2083 +#
 25.2084 +# DVB-T (terrestrial) frontends
 25.2085 +#
 25.2086 +CONFIG_DVB_SP8870=m
 25.2087 +CONFIG_DVB_SP887X=m
 25.2088 +CONFIG_DVB_CX22700=m
 25.2089 +CONFIG_DVB_CX22702=m
 25.2090 +CONFIG_DVB_L64781=m
 25.2091 +CONFIG_DVB_TDA1004X=m
 25.2092 +CONFIG_DVB_NXT6000=m
 25.2093 +CONFIG_DVB_MT352=m
 25.2094 +CONFIG_DVB_DIB3000MB=m
 25.2095 +CONFIG_DVB_DIB3000MC=m
 25.2096 +
 25.2097 +#
 25.2098 +# DVB-C (cable) frontends
 25.2099 +#
 25.2100 +CONFIG_DVB_ATMEL_AT76C651=m
 25.2101 +CONFIG_DVB_VES1820=m
 25.2102 +CONFIG_DVB_TDA10021=m
 25.2103 +CONFIG_DVB_STV0297=m
 25.2104 +
 25.2105 +#
 25.2106 +# ATSC (North American/Korean Terresterial DTV) frontends
 25.2107 +#
 25.2108 +CONFIG_DVB_NXT2002=m
 25.2109 +CONFIG_VIDEO_SAA7146=m
 25.2110 +CONFIG_VIDEO_SAA7146_VV=m
 25.2111 +CONFIG_VIDEO_VIDEOBUF=m
 25.2112 +CONFIG_VIDEO_TUNER=m
 25.2113 +CONFIG_VIDEO_BUF=m
 25.2114 +CONFIG_VIDEO_BTCX=m
 25.2115 +CONFIG_VIDEO_IR=m
 25.2116 +CONFIG_VIDEO_TVEEPROM=m
 25.2117 +
 25.2118 +#
 25.2119 +# Graphics support
 25.2120 +#
 25.2121 +CONFIG_FB=y
 25.2122 +CONFIG_FB_MODE_HELPERS=y
 25.2123 +CONFIG_FB_TILEBLITTING=y
 25.2124 +CONFIG_FB_CIRRUS=m
 25.2125 +CONFIG_FB_PM2=m
 25.2126 +CONFIG_FB_PM2_FIFO_DISCONNECT=y
 25.2127 +CONFIG_FB_CYBER2000=m
 25.2128 +# CONFIG_FB_ASILIANT is not set
 25.2129 +# CONFIG_FB_IMSTT is not set
 25.2130 +CONFIG_FB_VGA16=m
 25.2131 +# CONFIG_FB_VESA is not set
 25.2132 +CONFIG_VIDEO_SELECT=y
 25.2133 +CONFIG_FB_HGA=m
 25.2134 +# CONFIG_FB_HGA_ACCEL is not set
 25.2135 +CONFIG_FB_RIVA=m
 25.2136 +CONFIG_FB_RIVA_I2C=y
 25.2137 +CONFIG_FB_RIVA_DEBUG=y
 25.2138 +CONFIG_FB_I810=m
 25.2139 +# CONFIG_FB_I810_GTF is not set
 25.2140 +CONFIG_FB_INTEL=m
 25.2141 +# CONFIG_FB_INTEL_DEBUG is not set
 25.2142 +CONFIG_FB_MATROX=m
 25.2143 +CONFIG_FB_MATROX_MILLENIUM=y
 25.2144 +CONFIG_FB_MATROX_MYSTIQUE=y
 25.2145 +# CONFIG_FB_MATROX_G is not set
 25.2146 +CONFIG_FB_MATROX_I2C=m
 25.2147 +CONFIG_FB_MATROX_MULTIHEAD=y
 25.2148 +CONFIG_FB_RADEON_OLD=m
 25.2149 +CONFIG_FB_RADEON=m
 25.2150 +CONFIG_FB_RADEON_I2C=y
 25.2151 +# CONFIG_FB_RADEON_DEBUG is not set
 25.2152 +CONFIG_FB_ATY128=m
 25.2153 +CONFIG_FB_ATY=m
 25.2154 +CONFIG_FB_ATY_CT=y
 25.2155 +CONFIG_FB_ATY_GENERIC_LCD=y
 25.2156 +CONFIG_FB_ATY_XL_INIT=y
 25.2157 +CONFIG_FB_ATY_GX=y
 25.2158 +CONFIG_FB_SAVAGE=m
 25.2159 +CONFIG_FB_SAVAGE_I2C=m
 25.2160 +CONFIG_FB_SAVAGE_ACCEL=m
 25.2161 +CONFIG_FB_SIS=m
 25.2162 +CONFIG_FB_SIS_300=y
 25.2163 +CONFIG_FB_SIS_315=y
 25.2164 +CONFIG_FB_NEOMAGIC=m
 25.2165 +CONFIG_FB_KYRO=m
 25.2166 +CONFIG_FB_3DFX=m
 25.2167 +# CONFIG_FB_3DFX_ACCEL is not set
 25.2168 +CONFIG_FB_VOODOO1=m
 25.2169 +CONFIG_FB_TRIDENT=m
 25.2170 +# CONFIG_FB_TRIDENT_ACCEL is not set
 25.2171 +# CONFIG_FB_PM3 is not set
 25.2172 +CONFIG_FB_VIRTUAL=m
 25.2173 +
 25.2174 +#
 25.2175 +# Console display driver support
 25.2176 +#
 25.2177 +CONFIG_VGA_CONSOLE=y
 25.2178 +CONFIG_MDA_CONSOLE=m
 25.2179 +CONFIG_DUMMY_CONSOLE=y
 25.2180 +CONFIG_FRAMEBUFFER_CONSOLE=m
 25.2181 +# CONFIG_FONTS is not set
 25.2182 +CONFIG_FONT_8x8=y
 25.2183 +CONFIG_FONT_8x16=y
 25.2184 +
 25.2185 +#
 25.2186 +# Logo configuration
 25.2187 +#
 25.2188 +# CONFIG_LOGO is not set
 25.2189 +# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
 25.2190 +
 25.2191 +#
 25.2192 +# Sound
 25.2193 +#
 25.2194 +CONFIG_SOUND=m
 25.2195 +
 25.2196 +#
 25.2197 +# Advanced Linux Sound Architecture
 25.2198 +#
 25.2199 +CONFIG_SND=m
 25.2200 +CONFIG_SND_TIMER=m
 25.2201 +CONFIG_SND_PCM=m
 25.2202 +CONFIG_SND_HWDEP=m
 25.2203 +CONFIG_SND_RAWMIDI=m
 25.2204 +CONFIG_SND_SEQUENCER=m
 25.2205 +CONFIG_SND_SEQ_DUMMY=m
 25.2206 +CONFIG_SND_OSSEMUL=y
 25.2207 +CONFIG_SND_MIXER_OSS=m
 25.2208 +CONFIG_SND_PCM_OSS=m
 25.2209 +CONFIG_SND_SEQUENCER_OSS=y
 25.2210 +CONFIG_SND_RTCTIMER=m
 25.2211 +# CONFIG_SND_VERBOSE_PRINTK is not set
 25.2212 +# CONFIG_SND_DEBUG is not set
 25.2213 +
 25.2214 +#
 25.2215 +# Generic devices
 25.2216 +#
 25.2217 +CONFIG_SND_MPU401_UART=m
 25.2218 +CONFIG_SND_OPL3_LIB=m
 25.2219 +CONFIG_SND_OPL4_LIB=m
 25.2220 +CONFIG_SND_VX_LIB=m
 25.2221 +CONFIG_SND_DUMMY=m
 25.2222 +CONFIG_SND_VIRMIDI=m
 25.2223 +CONFIG_SND_MTPAV=m
 25.2224 +CONFIG_SND_SERIAL_U16550=m
 25.2225 +CONFIG_SND_MPU401=m
 25.2226 +
 25.2227 +#
 25.2228 +# ISA devices
 25.2229 +#
 25.2230 +CONFIG_SND_AD1816A=m
 25.2231 +CONFIG_SND_AD1848=m
 25.2232 +CONFIG_SND_CS4231=m
 25.2233 +CONFIG_SND_CS4232=m
 25.2234 +CONFIG_SND_CS4236=m
 25.2235 +CONFIG_SND_ES968=m
 25.2236 +CONFIG_SND_ES1688=m
 25.2237 +CONFIG_SND_ES18XX=m
 25.2238 +CONFIG_SND_GUS_SYNTH=m
 25.2239 +CONFIG_SND_GUSCLASSIC=m
 25.2240 +CONFIG_SND_GUSEXTREME=m
 25.2241 +CONFIG_SND_GUSMAX=m
 25.2242 +CONFIG_SND_INTERWAVE=m
 25.2243 +CONFIG_SND_INTERWAVE_STB=m
 25.2244 +CONFIG_SND_OPTI92X_AD1848=m
 25.2245 +CONFIG_SND_OPTI92X_CS4231=m
 25.2246 +CONFIG_SND_OPTI93X=m
 25.2247 +CONFIG_SND_SB8=m
 25.2248 +CONFIG_SND_SB16=m
 25.2249 +CONFIG_SND_SBAWE=m
 25.2250 +CONFIG_SND_SB16_CSP=y
 25.2251 +CONFIG_SND_WAVEFRONT=m
 25.2252 +CONFIG_SND_ALS100=m
 25.2253 +CONFIG_SND_AZT2320=m
 25.2254 +CONFIG_SND_CMI8330=m
 25.2255 +CONFIG_SND_DT019X=m
 25.2256 +CONFIG_SND_OPL3SA2=m
 25.2257 +CONFIG_SND_SGALAXY=m
 25.2258 +CONFIG_SND_SSCAPE=m
 25.2259 +
 25.2260 +#
 25.2261 +# PCI devices
 25.2262 +#
 25.2263 +CONFIG_SND_AC97_CODEC=m
 25.2264 +CONFIG_SND_ALI5451=m
 25.2265 +CONFIG_SND_ATIIXP=m
 25.2266 +CONFIG_SND_ATIIXP_MODEM=m
 25.2267 +CONFIG_SND_AU8810=m
 25.2268 +CONFIG_SND_AU8820=m
 25.2269 +CONFIG_SND_AU8830=m
 25.2270 +CONFIG_SND_AZT3328=m
 25.2271 +CONFIG_SND_BT87X=m
 25.2272 +# CONFIG_SND_BT87X_OVERCLOCK is not set
 25.2273 +CONFIG_SND_CS46XX=m
 25.2274 +CONFIG_SND_CS46XX_NEW_DSP=y
 25.2275 +CONFIG_SND_CS4281=m
 25.2276 +CONFIG_SND_EMU10K1=m
 25.2277 +# CONFIG_SND_EMU10K1X is not set
 25.2278 +# CONFIG_SND_CA0106 is not set
 25.2279 +CONFIG_SND_KORG1212=m
 25.2280 +CONFIG_SND_MIXART=m
 25.2281 +CONFIG_SND_NM256=m
 25.2282 +CONFIG_SND_RME32=m
 25.2283 +CONFIG_SND_RME96=m
 25.2284 +CONFIG_SND_RME9652=m
 25.2285 +CONFIG_SND_HDSP=m
 25.2286 +CONFIG_SND_TRIDENT=m
 25.2287 +CONFIG_SND_YMFPCI=m
 25.2288 +CONFIG_SND_ALS4000=m
 25.2289 +CONFIG_SND_CMIPCI=m
 25.2290 +CONFIG_SND_ENS1370=m
 25.2291 +CONFIG_SND_ENS1371=m
 25.2292 +CONFIG_SND_ES1938=m
 25.2293 +CONFIG_SND_ES1968=m
 25.2294 +CONFIG_SND_MAESTRO3=m
 25.2295 +CONFIG_SND_FM801=m
 25.2296 +CONFIG_SND_FM801_TEA575X=m
 25.2297 +CONFIG_SND_ICE1712=m
 25.2298 +CONFIG_SND_ICE1724=m
 25.2299 +CONFIG_SND_INTEL8X0=m
 25.2300 +CONFIG_SND_INTEL8X0M=m
 25.2301 +CONFIG_SND_SONICVIBES=m
 25.2302 +CONFIG_SND_VIA82XX=m
 25.2303 +# CONFIG_SND_VIA82XX_MODEM is not set
 25.2304 +CONFIG_SND_VX222=m
 25.2305 +
 25.2306 +#
 25.2307 +# USB devices
 25.2308 +#
 25.2309 +CONFIG_SND_USB_AUDIO=m
 25.2310 +CONFIG_SND_USB_USX2Y=m
 25.2311 +
 25.2312 +#
 25.2313 +# PCMCIA devices
 25.2314 +#
 25.2315 +CONFIG_SND_VXPOCKET=m
 25.2316 +CONFIG_SND_VXP440=m
 25.2317 +CONFIG_SND_PDAUDIOCF=m
 25.2318 +
 25.2319 +#
 25.2320 +# Open Sound System
 25.2321 +#
 25.2322 +CONFIG_SOUND_PRIME=m
 25.2323 +CONFIG_SOUND_BT878=m
 25.2324 +CONFIG_SOUND_CMPCI=m
 25.2325 +# CONFIG_SOUND_CMPCI_FM is not set
 25.2326 +# CONFIG_SOUND_CMPCI_MIDI is not set
 25.2327 +CONFIG_SOUND_CMPCI_JOYSTICK=y
 25.2328 +CONFIG_SOUND_EMU10K1=m
 25.2329 +CONFIG_MIDI_EMU10K1=y
 25.2330 +CONFIG_SOUND_FUSION=m
 25.2331 +CONFIG_SOUND_CS4281=m
 25.2332 +CONFIG_SOUND_ES1370=m
 25.2333 +CONFIG_SOUND_ES1371=m
 25.2334 +CONFIG_SOUND_ESSSOLO1=m
 25.2335 +CONFIG_SOUND_MAESTRO=m
 25.2336 +CONFIG_SOUND_MAESTRO3=m
 25.2337 +CONFIG_SOUND_ICH=m
 25.2338 +CONFIG_SOUND_SONICVIBES=m
 25.2339 +CONFIG_SOUND_TRIDENT=m
 25.2340 +# CONFIG_SOUND_MSNDCLAS is not set
 25.2341 +# CONFIG_SOUND_MSNDPIN is not set
 25.2342 +CONFIG_SOUND_VIA82CXXX=m
 25.2343 +CONFIG_MIDI_VIA82CXXX=y
 25.2344 +CONFIG_SOUND_OSS=m
 25.2345 +# CONFIG_SOUND_TRACEINIT is not set
 25.2346 +# CONFIG_SOUND_DMAP is not set
 25.2347 +# CONFIG_SOUND_AD1816 is not set
 25.2348 +CONFIG_SOUND_AD1889=m
 25.2349 +CONFIG_SOUND_SGALAXY=m
 25.2350 +CONFIG_SOUND_ADLIB=m
 25.2351 +CONFIG_SOUND_ACI_MIXER=m
 25.2352 +CONFIG_SOUND_CS4232=m
 25.2353 +CONFIG_SOUND_SSCAPE=m
 25.2354 +CONFIG_SOUND_GUS=m
 25.2355 +CONFIG_SOUND_GUS16=y
 25.2356 +CONFIG_SOUND_GUSMAX=y
 25.2357 +CONFIG_SOUND_VMIDI=m
 25.2358 +CONFIG_SOUND_TRIX=m
 25.2359 +CONFIG_SOUND_MSS=m
 25.2360 +CONFIG_SOUND_MPU401=m
 25.2361 +CONFIG_SOUND_NM256=m
 25.2362 +CONFIG_SOUND_MAD16=m
 25.2363 +CONFIG_MAD16_OLDCARD=y
 25.2364 +CONFIG_SOUND_PAS=m
 25.2365 +CONFIG_SOUND_PSS=m
 25.2366 +CONFIG_PSS_MIXER=y
 25.2367 +CONFIG_SOUND_SB=m
 25.2368 +# CONFIG_SOUND_AWE32_SYNTH is not set
 25.2369 +CONFIG_SOUND_WAVEFRONT=m
 25.2370 +CONFIG_SOUND_MAUI=m
 25.2371 +CONFIG_SOUND_YM3812=m
 25.2372 +CONFIG_SOUND_OPL3SA1=m
 25.2373 +CONFIG_SOUND_OPL3SA2=m
 25.2374 +CONFIG_SOUND_YMFPCI=m
 25.2375 +# CONFIG_SOUND_YMFPCI_LEGACY is not set
 25.2376 +CONFIG_SOUND_UART6850=m
 25.2377 +CONFIG_SOUND_AEDSP16=m
 25.2378 +CONFIG_SC6600=y
 25.2379 +CONFIG_SC6600_JOY=y
 25.2380 +CONFIG_SC6600_CDROM=4
 25.2381 +CONFIG_SC6600_CDROMBASE=0x0
 25.2382 +# CONFIG_AEDSP16_MSS is not set
 25.2383 +# CONFIG_AEDSP16_SBPRO is not set
 25.2384 +# CONFIG_AEDSP16_MPU401 is not set
 25.2385 +CONFIG_SOUND_TVMIXER=m
 25.2386 +CONFIG_SOUND_KAHLUA=m
 25.2387 +CONFIG_SOUND_ALI5455=m
 25.2388 +CONFIG_SOUND_FORTE=m
 25.2389 +CONFIG_SOUND_RME96XX=m
 25.2390 +CONFIG_SOUND_AD1980=m
 25.2391 +
 25.2392 +#
 25.2393 +# USB support
 25.2394 +#
 25.2395 +CONFIG_USB=y
 25.2396 +# CONFIG_USB_DEBUG is not set
 25.2397 +
 25.2398 +#
 25.2399 +# Miscellaneous USB options
 25.2400 +#
 25.2401 +CONFIG_USB_DEVICEFS=y
 25.2402 +CONFIG_USB_BANDWIDTH=y
 25.2403 +# CONFIG_USB_DYNAMIC_MINORS is not set
 25.2404 +# CONFIG_USB_OTG is not set
 25.2405 +CONFIG_USB_ARCH_HAS_HCD=y
 25.2406 +CONFIG_USB_ARCH_HAS_OHCI=y
 25.2407 +
 25.2408 +#
 25.2409 +# USB Host Controller Drivers
 25.2410 +#
 25.2411 +CONFIG_USB_EHCI_HCD=y
 25.2412 +CONFIG_USB_EHCI_SPLIT_ISO=y
 25.2413 +CONFIG_USB_EHCI_ROOT_HUB_TT=y
 25.2414 +CONFIG_USB_OHCI_HCD=m
 25.2415 +CONFIG_USB_UHCI_HCD=m
 25.2416 +CONFIG_USB_SL811_HCD=m
 25.2417 +
 25.2418 +#
 25.2419 +# USB Device Class drivers
 25.2420 +#
 25.2421 +CONFIG_USB_AUDIO=m
 25.2422 +
 25.2423 +#
 25.2424 +# USB Bluetooth TTY can only be used with disabled Bluetooth subsystem
 25.2425 +#
 25.2426 +CONFIG_USB_MIDI=m
 25.2427 +CONFIG_USB_ACM=m
 25.2428 +CONFIG_USB_PRINTER=m
 25.2429 +
 25.2430 +#
 25.2431 +# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information
 25.2432 +#
 25.2433 +CONFIG_USB_STORAGE=m
 25.2434 +# CONFIG_USB_STORAGE_DEBUG is not set
 25.2435 +# CONFIG_USB_STORAGE_RW_DETECT is not set
 25.2436 +CONFIG_USB_STORAGE_DATAFAB=y
 25.2437 +CONFIG_USB_STORAGE_FREECOM=y
 25.2438 +CONFIG_USB_STORAGE_ISD200=y
 25.2439 +CONFIG_USB_STORAGE_DPCM=y
 25.2440 +CONFIG_USB_STORAGE_HP8200e=y
 25.2441 +CONFIG_USB_STORAGE_SDDR09=y
 25.2442 +CONFIG_USB_STORAGE_SDDR55=y
 25.2443 +CONFIG_USB_STORAGE_JUMPSHOT=y
 25.2444 +
 25.2445 +#
 25.2446 +# USB Input Devices
 25.2447 +#
 25.2448 +CONFIG_USB_HID=m
 25.2449 +CONFIG_USB_HIDINPUT=y
 25.2450 +# CONFIG_HID_FF is not set
 25.2451 +CONFIG_USB_HIDDEV=y
 25.2452 +
 25.2453 +#
 25.2454 +# USB HID Boot Protocol drivers
 25.2455 +#
 25.2456 +CONFIG_USB_KBD=y
 25.2457 +CONFIG_USB_MOUSE=y
 25.2458 +CONFIG_USB_AIPTEK=m
 25.2459 +CONFIG_USB_WACOM=m
 25.2460 +CONFIG_USB_KBTAB=m
 25.2461 +CONFIG_USB_POWERMATE=m
 25.2462 +CONFIG_USB_MTOUCH=m
 25.2463 +CONFIG_USB_EGALAX=m
 25.2464 +CONFIG_USB_XPAD=m
 25.2465 +CONFIG_USB_ATI_REMOTE=m
 25.2466 +
 25.2467 +#
 25.2468 +# USB Imaging devices
 25.2469 +#
 25.2470 +CONFIG_USB_MDC800=m
 25.2471 +CONFIG_USB_MICROTEK=m
 25.2472 +CONFIG_USB_HPUSBSCSI=m
 25.2473 +
 25.2474 +#
 25.2475 +# USB Multimedia devices
 25.2476 +#
 25.2477 +# CONFIG_USB_DABUSB is not set
 25.2478 +CONFIG_USB_VICAM=m
 25.2479 +CONFIG_USB_DSBR=m
 25.2480 +CONFIG_USB_IBMCAM=m
 25.2481 +CONFIG_USB_KONICAWC=m
 25.2482 +CONFIG_USB_OV511=m
 25.2483 +CONFIG_USB_SE401=m
 25.2484 +CONFIG_USB_SN9C102=m
 25.2485 +CONFIG_USB_STV680=m
 25.2486 +CONFIG_USB_W9968CF=m
 25.2487 +
 25.2488 +#
 25.2489 +# USB Network Adapters
 25.2490 +#
 25.2491 +CONFIG_USB_CATC=m
 25.2492 +CONFIG_USB_KAWETH=m
 25.2493 +CONFIG_USB_PEGASUS=m
 25.2494 +CONFIG_USB_RTL8150=m
 25.2495 +CONFIG_USB_USBNET=m
 25.2496 +
 25.2497 +#
 25.2498 +# USB Host-to-Host Cables
 25.2499 +#
 25.2500 +CONFIG_USB_ALI_M5632=y
 25.2501 +CONFIG_USB_AN2720=y
 25.2502 +CONFIG_USB_BELKIN=y
 25.2503 +CONFIG_USB_GENESYS=y
 25.2504 +CONFIG_USB_NET1080=y
 25.2505 +CONFIG_USB_PL2301=y
 25.2506 +CONFIG_USB_KC2190=y
 25.2507 +
 25.2508 +#
 25.2509 +# Intelligent USB Devices/Gadgets
 25.2510 +#
 25.2511 +CONFIG_USB_ARMLINUX=y
 25.2512 +CONFIG_USB_EPSON2888=y
 25.2513 +CONFIG_USB_ZAURUS=y
 25.2514 +CONFIG_USB_CDCETHER=y
 25.2515 +
 25.2516 +#
 25.2517 +# USB Network Adapters
 25.2518 +#
 25.2519 +CONFIG_USB_AX8817X=y
 25.2520 +
 25.2521 +#
 25.2522 +# USB port drivers
 25.2523 +#
 25.2524 +CONFIG_USB_USS720=m
 25.2525 +
 25.2526 +#
 25.2527 +# USB Serial Converter support
 25.2528 +#
 25.2529 +CONFIG_USB_SERIAL=m
 25.2530 +CONFIG_USB_SERIAL_GENERIC=y
 25.2531 +CONFIG_USB_SERIAL_BELKIN=m
 25.2532 +CONFIG_USB_SERIAL_WHITEHEAT=m
 25.2533 +CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
 25.2534 +CONFIG_USB_SERIAL_CYPRESS_M8=m
 25.2535 +CONFIG_USB_SERIAL_EMPEG=m
 25.2536 +CONFIG_USB_SERIAL_FTDI_SIO=m
 25.2537 +CONFIG_USB_SERIAL_VISOR=m
 25.2538 +CONFIG_USB_SERIAL_IPAQ=m
 25.2539 +CONFIG_USB_SERIAL_IR=m
 25.2540 +CONFIG_USB_SERIAL_EDGEPORT=m
 25.2541 +CONFIG_USB_SERIAL_EDGEPORT_TI=m
 25.2542 +# CONFIG_USB_SERIAL_GARMIN is not set
 25.2543 +CONFIG_USB_SERIAL_IPW=m
 25.2544 +CONFIG_USB_SERIAL_KEYSPAN_PDA=m
 25.2545 +CONFIG_USB_SERIAL_KEYSPAN=m
 25.2546 +# CONFIG_USB_SERIAL_KEYSPAN_MPR is not set
 25.2547 +# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
 25.2548 +# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
 25.2549 +# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
 25.2550 +# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
 25.2551 +# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
 25.2552 +# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
 25.2553 +# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
 25.2554 +# CONFIG_USB_SERIAL_KEYSPAN_USA19QW is not set
 25.2555 +# CONFIG_USB_SERIAL_KEYSPAN_USA19QI is not set
 25.2556 +# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
 25.2557 +# CONFIG_USB_SERIAL_KEYSPAN_USA49WLC is not set
 25.2558 +CONFIG_USB_SERIAL_KLSI=m
 25.2559 +CONFIG_USB_SERIAL_KOBIL_SCT=m
 25.2560 +CONFIG_USB_SERIAL_MCT_U232=m
 25.2561 +CONFIG_USB_SERIAL_PL2303=m
 25.2562 +CONFIG_USB_SERIAL_SAFE=m
 25.2563 +# CONFIG_USB_SERIAL_SAFE_PADDED is not set
 25.2564 +# CONFIG_USB_SERIAL_TI is not set
 25.2565 +CONFIG_USB_SERIAL_CYBERJACK=m
 25.2566 +CONFIG_USB_SERIAL_XIRCOM=m
 25.2567 +CONFIG_USB_SERIAL_OMNINET=m
 25.2568 +CONFIG_USB_EZUSB=y
 25.2569 +
 25.2570 +#
 25.2571 +# USB Miscellaneous drivers
 25.2572 +#
 25.2573 +# CONFIG_USB_EMI62 is not set
 25.2574 +# CONFIG_USB_EMI26 is not set
 25.2575 +CONFIG_USB_AUERSWALD=m
 25.2576 +CONFIG_USB_RIO500=m
 25.2577 +CONFIG_USB_LEGOTOWER=m
 25.2578 +CONFIG_USB_LCD=m
 25.2579 +CONFIG_USB_LED=m
 25.2580 +CONFIG_USB_CYTHERM=m
 25.2581 +CONFIG_USB_PHIDGETKIT=m
 25.2582 +CONFIG_USB_PHIDGETSERVO=m
 25.2583 +# CONFIG_USB_IDMOUSE is not set
 25.2584 +CONFIG_USB_TEST=m
 25.2585 +
 25.2586 +#
 25.2587 +# USB ATM/DSL drivers
 25.2588 +#
 25.2589 +CONFIG_USB_ATM=m
 25.2590 +CONFIG_USB_SPEEDTOUCH=m
 25.2591 +
 25.2592 +#
 25.2593 +# USB Gadget Support
 25.2594 +#
 25.2595 +CONFIG_USB_GADGET=m
 25.2596 +# CONFIG_USB_GADGET_DEBUG_FILES is not set
 25.2597 +CONFIG_USB_GADGET_NET2280=y
 25.2598 +CONFIG_USB_NET2280=m
 25.2599 +# CONFIG_USB_GADGET_PXA2XX is not set
 25.2600 +# CONFIG_USB_GADGET_GOKU is not set
 25.2601 +# CONFIG_USB_GADGET_SA1100 is not set
 25.2602 +# CONFIG_USB_GADGET_LH7A40X is not set
 25.2603 +# CONFIG_USB_GADGET_DUMMY_HCD is not set
 25.2604 +# CONFIG_USB_GADGET_OMAP is not set
 25.2605 +CONFIG_USB_GADGET_DUALSPEED=y
 25.2606 +CONFIG_USB_ZERO=m
 25.2607 +CONFIG_USB_ETH=m
 25.2608 +CONFIG_USB_ETH_RNDIS=y
 25.2609 +CONFIG_USB_GADGETFS=m
 25.2610 +CONFIG_USB_FILE_STORAGE=m
 25.2611 +# CONFIG_USB_FILE_STORAGE_TEST is not set
 25.2612 +CONFIG_USB_G_SERIAL=m
 25.2613 +
 25.2614 +#
 25.2615 +# MMC/SD Card support
 25.2616 +#
 25.2617 +# CONFIG_MMC is not set
 25.2618 +
 25.2619 +#
 25.2620 +# InfiniBand support
 25.2621 +#
 25.2622 +# CONFIG_INFINIBAND is not set
 25.2623 +
 25.2624 +#
 25.2625 +# Power management options
 25.2626 +#
 25.2627 +
 25.2628 +#
 25.2629 +# ACPI (Advanced Configuration and Power Interface) Support
 25.2630 +#
 25.2631 +CONFIG_ACPI=y
 25.2632 +CONFIG_ACPI_BOOT=y
 25.2633 +CONFIG_ACPI_INTERPRETER=y
 25.2634 +CONFIG_ACPI_AC=m
 25.2635 +CONFIG_ACPI_BATTERY=m
 25.2636 +CONFIG_ACPI_BUTTON=m
 25.2637 +CONFIG_ACPI_VIDEO=m
 25.2638 +CONFIG_ACPI_FAN=m
 25.2639 +CONFIG_ACPI_PROCESSOR=m
 25.2640 +CONFIG_ACPI_THERMAL=m
 25.2641 +CONFIG_ACPI_ASUS=m
 25.2642 +CONFIG_ACPI_IBM=m
 25.2643 +CONFIG_ACPI_TOSHIBA=m
 25.2644 +CONFIG_ACPI_BLACKLIST_YEAR=0
 25.2645 +# CONFIG_ACPI_DEBUG is not set
 25.2646 +CONFIG_ACPI_BUS=y
 25.2647 +CONFIG_ACPI_EC=y
 25.2648 +CONFIG_ACPI_POWER=y
 25.2649 +CONFIG_ACPI_PCI=y
 25.2650 +CONFIG_ACPI_SYSTEM=y
 25.2651 +# CONFIG_X86_PM_TIMER is not set
 25.2652 +# CONFIG_ACPI_CONTAINER is not set
 25.2653 +
 25.2654 +#
 25.2655 +# File systems
 25.2656 +#
 25.2657 +CONFIG_EXT2_FS=m
 25.2658 +CONFIG_EXT2_FS_XATTR=y
 25.2659 +CONFIG_EXT2_FS_POSIX_ACL=y
 25.2660 +CONFIG_EXT2_FS_SECURITY=y
 25.2661 +CONFIG_EXT3_FS=m
 25.2662 +CONFIG_EXT3_FS_XATTR=y
 25.2663 +CONFIG_EXT3_FS_POSIX_ACL=y
 25.2664 +CONFIG_EXT3_FS_SECURITY=y
 25.2665 +CONFIG_JBD=m
 25.2666 +# CONFIG_JBD_DEBUG is not set
 25.2667 +CONFIG_FS_MBCACHE=m
 25.2668 +CONFIG_REISERFS_FS=m
 25.2669 +# CONFIG_REISERFS_CHECK is not set
 25.2670 +# CONFIG_REISERFS_PROC_INFO is not set
 25.2671 +# CONFIG_REISERFS_FS_XATTR is not set
 25.2672 +CONFIG_JFS_FS=m
 25.2673 +CONFIG_JFS_POSIX_ACL=y
 25.2674 +# CONFIG_JFS_SECURITY is not set
 25.2675 +# CONFIG_JFS_DEBUG is not set
 25.2676 +CONFIG_JFS_STATISTICS=y
 25.2677 +CONFIG_FS_POSIX_ACL=y
 25.2678 +
 25.2679 +#
 25.2680 +# XFS support
 25.2681 +#
 25.2682 +CONFIG_XFS_FS=m
 25.2683 +CONFIG_XFS_EXPORT=y
 25.2684 +CONFIG_XFS_RT=y
 25.2685 +CONFIG_XFS_QUOTA=y
 25.2686 +CONFIG_XFS_SECURITY=y
 25.2687 +CONFIG_XFS_POSIX_ACL=y
 25.2688 +CONFIG_MINIX_FS=m
 25.2689 +CONFIG_ROMFS_FS=m
 25.2690 +CONFIG_QUOTA=y
 25.2691 +CONFIG_QFMT_V1=m
 25.2692 +CONFIG_QFMT_V2=m
 25.2693 +CONFIG_QUOTACTL=y
 25.2694 +CONFIG_DNOTIFY=y
 25.2695 +CONFIG_AUTOFS_FS=m
 25.2696 +CONFIG_AUTOFS4_FS=m
 25.2697 +
 25.2698 +#
 25.2699 +# CD-ROM/DVD Filesystems
 25.2700 +#
 25.2701 +CONFIG_ISO9660_FS=m
 25.2702 +CONFIG_JOLIET=y
 25.2703 +CONFIG_ZISOFS=y
 25.2704 +CONFIG_ZISOFS_FS=m
 25.2705 +CONFIG_UDF_FS=m
 25.2706 +CONFIG_UDF_NLS=y
 25.2707 +
 25.2708 +#
 25.2709 +# DOS/FAT/NT Filesystems
 25.2710 +#
 25.2711 +CONFIG_FAT_FS=m
 25.2712 +CONFIG_MSDOS_FS=m
 25.2713 +CONFIG_VFAT_FS=m
 25.2714 +CONFIG_FAT_DEFAULT_CODEPAGE=437
 25.2715 +CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
 25.2716 +CONFIG_NTFS_FS=m
 25.2717 +# CONFIG_NTFS_DEBUG is not set
 25.2718 +# CONFIG_NTFS_RW is not set
 25.2719 +
 25.2720 +#
 25.2721 +# Pseudo filesystems
 25.2722 +#
 25.2723 +CONFIG_PROC_FS=y
 25.2724 +CONFIG_PROC_KCORE=y
 25.2725 +CONFIG_SYSFS=y
 25.2726 +CONFIG_DEVFS_FS=y
 25.2727 +# CONFIG_DEVFS_MOUNT is not set
 25.2728 +# CONFIG_DEVFS_DEBUG is not set
 25.2729 +CONFIG_DEVPTS_FS_XATTR=y
 25.2730 +CONFIG_DEVPTS_FS_SECURITY=y
 25.2731 +CONFIG_TMPFS=y
 25.2732 +CONFIG_TMPFS_XATTR=y
 25.2733 +CONFIG_TMPFS_SECURITY=y
 25.2734 +# CONFIG_HUGETLBFS is not set
 25.2735 +# CONFIG_HUGETLB_PAGE is not set
 25.2736 +CONFIG_RAMFS=y
 25.2737 +
 25.2738 +#
 25.2739 +# Miscellaneous filesystems
 25.2740 +#
 25.2741 +CONFIG_ADFS_FS=m
 25.2742 +# CONFIG_ADFS_FS_RW is not set
 25.2743 +CONFIG_AFFS_FS=m
 25.2744 +CONFIG_HFS_FS=m
 25.2745 +CONFIG_HFSPLUS_FS=m
 25.2746 +CONFIG_BEFS_FS=m
 25.2747 +# CONFIG_BEFS_DEBUG is not set
 25.2748 +CONFIG_BFS_FS=m
 25.2749 +CONFIG_EFS_FS=m
 25.2750 +CONFIG_JFFS_FS=m
 25.2751 +CONFIG_JFFS_FS_VERBOSE=0
 25.2752 +CONFIG_JFFS_PROC_FS=y
 25.2753 +CONFIG_JFFS2_FS=m
 25.2754 +CONFIG_JFFS2_FS_DEBUG=0
 25.2755 +# CONFIG_JFFS2_FS_NAND is not set
 25.2756 +# CONFIG_JFFS2_FS_NOR_ECC is not set
 25.2757 +# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
 25.2758 +CONFIG_JFFS2_ZLIB=y
 25.2759 +CONFIG_JFFS2_RTIME=y
 25.2760 +# CONFIG_JFFS2_RUBIN is not set
 25.2761 +CONFIG_CRAMFS=y
 25.2762 +CONFIG_VXFS_FS=m
 25.2763 +CONFIG_HPFS_FS=m
 25.2764 +CONFIG_QNX4FS_FS=m
 25.2765 +# CONFIG_QNX4FS_RW is not set
 25.2766 +CONFIG_SYSV_FS=m
 25.2767 +CONFIG_UFS_FS=m
 25.2768 +# CONFIG_UFS_FS_WRITE is not set
 25.2769 +
 25.2770 +#
 25.2771 +# Network File Systems
 25.2772 +#
 25.2773 +CONFIG_NFS_FS=m
 25.2774 +CONFIG_NFS_V3=y
 25.2775 +CONFIG_NFS_V4=y
 25.2776 +CONFIG_NFS_DIRECTIO=y
 25.2777 +CONFIG_NFSD=m
 25.2778 +CONFIG_NFSD_V3=y
 25.2779 +CONFIG_NFSD_V4=y
 25.2780 +CONFIG_NFSD_TCP=y
 25.2781 +CONFIG_LOCKD=m
 25.2782 +CONFIG_LOCKD_V4=y
 25.2783 +CONFIG_EXPORTFS=m
 25.2784 +CONFIG_SUNRPC=m
 25.2785 +CONFIG_SUNRPC_GSS=m
 25.2786 +CONFIG_RPCSEC_GSS_KRB5=m
 25.2787 +CONFIG_RPCSEC_GSS_SPKM3=m
 25.2788 +CONFIG_SMB_FS=m
 25.2789 +# CONFIG_SMB_NLS_DEFAULT is not set
 25.2790 +CONFIG_CIFS=m
 25.2791 +# CONFIG_CIFS_STATS is not set
 25.2792 +# CONFIG_CIFS_XATTR is not set
 25.2793 +# CONFIG_CIFS_EXPERIMENTAL is not set
 25.2794 +CONFIG_NCP_FS=m
 25.2795 +CONFIG_NCPFS_PACKET_SIGNING=y
 25.2796 +CONFIG_NCPFS_IOCTL_LOCKING=y
 25.2797 +CONFIG_NCPFS_STRONG=y
 25.2798 +CONFIG_NCPFS_NFS_NS=y
 25.2799 +CONFIG_NCPFS_OS2_NS=y
 25.2800 +# CONFIG_NCPFS_SMALLDOS is not set
 25.2801 +CONFIG_NCPFS_NLS=y
 25.2802 +CONFIG_NCPFS_EXTRAS=y
 25.2803 +CONFIG_CODA_FS=m
 25.2804 +# CONFIG_CODA_FS_OLD_API is not set
 25.2805 +CONFIG_AFS_FS=m
 25.2806 +CONFIG_RXRPC=m
 25.2807 +
 25.2808 +#
 25.2809 +# Partition Types
 25.2810 +#
 25.2811 +CONFIG_PARTITION_ADVANCED=y
 25.2812 +CONFIG_ACORN_PARTITION=y
 25.2813 +CONFIG_ACORN_PARTITION_CUMANA=y
 25.2814 +# CONFIG_ACORN_PARTITION_EESOX is not set
 25.2815 +CONFIG_ACORN_PARTITION_ICS=y
 25.2816 +# CONFIG_ACORN_PARTITION_ADFS is not set
 25.2817 +# CONFIG_ACORN_PARTITION_POWERTEC is not set
 25.2818 +CONFIG_ACORN_PARTITION_RISCIX=y
 25.2819 +CONFIG_OSF_PARTITION=y
 25.2820 +CONFIG_AMIGA_PARTITION=y
 25.2821 +CONFIG_ATARI_PARTITION=y
 25.2822 +CONFIG_MAC_PARTITION=y
 25.2823 +CONFIG_MSDOS_PARTITION=y
 25.2824 +CONFIG_BSD_DISKLABEL=y
 25.2825 +CONFIG_MINIX_SUBPARTITION=y
 25.2826 +CONFIG_SOLARIS_X86_PARTITION=y
 25.2827 +CONFIG_UNIXWARE_DISKLABEL=y
 25.2828 +CONFIG_LDM_PARTITION=y
 25.2829 +# CONFIG_LDM_DEBUG is not set
 25.2830 +CONFIG_SGI_PARTITION=y
 25.2831 +CONFIG_ULTRIX_PARTITION=y
 25.2832 +CONFIG_SUN_PARTITION=y
 25.2833 +CONFIG_EFI_PARTITION=y
 25.2834 +
 25.2835 +#
 25.2836 +# Native Language Support
 25.2837 +#
 25.2838 +CONFIG_NLS=y
 25.2839 +CONFIG_NLS_DEFAULT="cp437"
 25.2840 +CONFIG_NLS_CODEPAGE_437=m
 25.2841 +CONFIG_NLS_CODEPAGE_737=m
 25.2842 +CONFIG_NLS_CODEPAGE_775=m
 25.2843 +CONFIG_NLS_CODEPAGE_850=m
 25.2844 +CONFIG_NLS_CODEPAGE_852=m
 25.2845 +CONFIG_NLS_CODEPAGE_855=m
 25.2846 +CONFIG_NLS_CODEPAGE_857=m
 25.2847 +CONFIG_NLS_CODEPAGE_860=m
 25.2848 +CONFIG_NLS_CODEPAGE_861=m
 25.2849 +CONFIG_NLS_CODEPAGE_862=m
 25.2850 +CONFIG_NLS_CODEPAGE_863=m
 25.2851 +CONFIG_NLS_CODEPAGE_864=m
 25.2852 +CONFIG_NLS_CODEPAGE_865=m
 25.2853 +CONFIG_NLS_CODEPAGE_866=m
 25.2854 +CONFIG_NLS_CODEPAGE_869=m
 25.2855 +CONFIG_NLS_CODEPAGE_936=m
 25.2856 +CONFIG_NLS_CODEPAGE_950=m
 25.2857 +CONFIG_NLS_CODEPAGE_932=m
 25.2858 +CONFIG_NLS_CODEPAGE_949=m
 25.2859 +CONFIG_NLS_CODEPAGE_874=m
 25.2860 +CONFIG_NLS_ISO8859_8=m
 25.2861 +CONFIG_NLS_CODEPAGE_1250=m
 25.2862 +CONFIG_NLS_CODEPAGE_1251=m
 25.2863 +CONFIG_NLS_ASCII=m
 25.2864 +CONFIG_NLS_ISO8859_1=m
 25.2865 +CONFIG_NLS_ISO8859_2=m
 25.2866 +CONFIG_NLS_ISO8859_3=m
 25.2867 +CONFIG_NLS_ISO8859_4=m
 25.2868 +CONFIG_NLS_ISO8859_5=m
 25.2869 +CONFIG_NLS_ISO8859_6=m
 25.2870 +CONFIG_NLS_ISO8859_7=m
 25.2871 +CONFIG_NLS_ISO8859_9=m
 25.2872 +CONFIG_NLS_ISO8859_13=m
 25.2873 +CONFIG_NLS_ISO8859_14=m
 25.2874 +CONFIG_NLS_ISO8859_15=m
 25.2875 +CONFIG_NLS_KOI8_R=m
 25.2876 +CONFIG_NLS_KOI8_U=m
 25.2877 +CONFIG_NLS_UTF8=m
 25.2878 +
 25.2879 +#
 25.2880 +# Security options
 25.2881 +#
 25.2882 +CONFIG_KEYS=y
 25.2883 +# CONFIG_KEYS_DEBUG_PROC_KEYS is not set
 25.2884 +CONFIG_SECURITY=y
 25.2885 +# CONFIG_SECURITY_NETWORK is not set
 25.2886 +CONFIG_SECURITY_CAPABILITIES=m
 25.2887 +CONFIG_SECURITY_ROOTPLUG=m
 25.2888 +CONFIG_SECURITY_SECLVL=m
 25.2889 +CONFIG_SECURITY_SELINUX=y
 25.2890 +CONFIG_SECURITY_SELINUX_BOOTPARAM=y
 25.2891 +CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=0
 25.2892 +CONFIG_SECURITY_SELINUX_DISABLE=y
 25.2893 +CONFIG_SECURITY_SELINUX_DEVELOP=y
 25.2894 +CONFIG_SECURITY_SELINUX_AVC_STATS=y
 25.2895 +# CONFIG_SECURITY_SELINUX_MLS is not set
 25.2896 +
 25.2897 +#
 25.2898 +# Cryptographic options
 25.2899 +#
 25.2900 +CONFIG_CRYPTO=y
 25.2901 +CONFIG_CRYPTO_HMAC=y
 25.2902 +CONFIG_CRYPTO_NULL=m
 25.2903 +CONFIG_CRYPTO_MD4=m
 25.2904 +CONFIG_CRYPTO_MD5=y
 25.2905 +CONFIG_CRYPTO_SHA1=m
 25.2906 +CONFIG_CRYPTO_SHA256=m
 25.2907 +CONFIG_CRYPTO_SHA512=m
 25.2908 +CONFIG_CRYPTO_WP512=m
 25.2909 +CONFIG_CRYPTO_DES=m
 25.2910 +CONFIG_CRYPTO_BLOWFISH=m
 25.2911 +CONFIG_CRYPTO_TWOFISH=m
 25.2912 +CONFIG_CRYPTO_SERPENT=m
 25.2913 +CONFIG_CRYPTO_AES_586=m
 25.2914 +CONFIG_CRYPTO_CAST5=m
 25.2915 +CONFIG_CRYPTO_CAST6=m
 25.2916 +CONFIG_CRYPTO_TEA=m
 25.2917 +CONFIG_CRYPTO_ARC4=m
 25.2918 +CONFIG_CRYPTO_KHAZAD=m
 25.2919 +CONFIG_CRYPTO_ANUBIS=m
 25.2920 +CONFIG_CRYPTO_DEFLATE=m
 25.2921 +CONFIG_CRYPTO_MICHAEL_MIC=m
 25.2922 +CONFIG_CRYPTO_CRC32C=m
 25.2923 +CONFIG_CRYPTO_TEST=m
 25.2924 +
 25.2925 +#
 25.2926 +# Hardware crypto devices
 25.2927 +#
 25.2928 +# CONFIG_CRYPTO_DEV_PADLOCK is not set
 25.2929 +
 25.2930 +#
 25.2931 +# Library routines
 25.2932 +#
 25.2933 +CONFIG_CRC_CCITT=m
 25.2934 +CONFIG_CRC32=y
 25.2935 +CONFIG_LIBCRC32C=m
 25.2936 +CONFIG_ZLIB_INFLATE=y
 25.2937 +CONFIG_ZLIB_DEFLATE=m
 25.2938 +CONFIG_REED_SOLOMON=m
 25.2939 +CONFIG_REED_SOLOMON_DEC16=y