e.g. there can be multiple 640x480 modes, each of them is tried). If that
fails, the default mode is tried. If that fails, it walks over all modes.
-BTW, only a few drivers use this at the moment. Others are to follow
-(feel free to send patches).
+To specify a video mode at bootup, use the following boot options:
+ video=<driver>:<xres>x<yres>[-<bpp>][@refresh]
+
+where <driver> is a name from the table below. Valid default modes can be
+found in linux/drivers/video/modedb.c. Check your driver's documentation.
+There may be more modes.
+ Drivers that support modedb boot options
+ Boot Name Cards Supported
+ ami - Amiga chipset frame buffer
+ aty128fb - ATI Rage128 / Pro frame buffer
+ atyfb - ATI Mach64 frame buffer
+ tdfx - 3D Fx frame buffer
+BTW, only a few drivers use this at the moment. Others are to follow
+(feel free to send patches).
CFLAGS += $(shell if $(CC) -march=i686 -S -o /dev/null -xc /dev/null >/dev/null 2>&1; then echo "-march=i686"; fi)
endif
+ifdef CONFIG_M686FX
+CFLAGS += $(shell if $(CC) -march=i686 -S -o /dev/null -xc /dev/null >/dev/null 2>&1; then echo "-march=i686"; fi)
+endif
+
ifdef CONFIG_MK6
CFLAGS += $(shell if $(CC) -march=k6 -S -o /dev/null -xc /dev/null >/dev/null 2>&1; then echo "-march=k6"; fi)
endif
mainmenu_option next_comment
comment 'Processor type and features'
choice 'Processor family' \
- "386 CONFIG_M386 \
- 486/Cx486 CONFIG_M486 \
- 586/K5/5x86/6x86/6x86MX CONFIG_M586 \
- Pentium/TSC CONFIG_M586TSC \
- PPro/P-II/P-III CONFIG_M686 \
- Pentium-III CONFIG_M686FX \
- K6/II/III CONFIG_MK6 \
- Crusoe CONFIG_MCRUSOE \
- Athlon CONFIG_MK7" PPro
+ "386 CONFIG_M386 \
+ 486/Cx486 CONFIG_M486 \
+ 586/K5/5x86/6x86/6x86MX CONFIG_M586 \
+ Pentium/TSC CONFIG_M586TSC \
+ PPro/Pentium-II CONFIG_M686 \
+ Pentium-III CONFIG_M686FX \
+ K6/K6-II/K6-III CONFIG_MK6 \
+ Athlon CONFIG_MK7 \
+ Crusoe CONFIG_MCRUSOE" PPro
#
# Define implied options from the CPU selection here
#
define_bool CONFIG_X86_ALIGNMENT_16 y
define_bool CONFIG_X86_TSC y
fi
-if [ "$CONFIG_MCRUSOE" = "y" ]; then
- define_int CONFIG_X86_L1_CACHE_BYTES 32
- define_bool CONFIG_X86_TSC y
-fi
if [ "$CONFIG_M686" = "y" ]; then
define_int CONFIG_X86_L1_CACHE_BYTES 32
define_bool CONFIG_X86_TSC y
define_bool CONFIG_X86_PGE y
define_bool CONFIG_X86_USE_PPRO_CHECKSUM y
fi
+if [ "$CONFIG_MCRUSOE" = "y" ]; then
+ define_int CONFIG_X86_L1_CACHE_BYTES 32
+ define_bool CONFIG_X86_TSC y
+fi
tristate '/dev/cpu/microcode - Intel P6 CPU microcode support' CONFIG_MICROCODE
tristate '/dev/cpu/*/msr - Model-specific register support' CONFIG_X86_MSR
CONFIG_M686=y
# CONFIG_M686FX is not set
# CONFIG_MK6 is not set
-# CONFIG_MCRUSOE is not set
# CONFIG_MK7 is not set
+# CONFIG_MCRUSOE is not set
CONFIG_X86_WP_WORKS_OK=y
CONFIG_X86_INVLPG=y
CONFIG_X86_CMPXCHG=y
smp_call_function(cpuid_smp_cpuid, (void *)cmd, 1, 1);
}
}
-#else /* ! __SMP__ */
+#else /* ! CONFIG_SMP */
extern inline void do_cpuid(int cpu, u32 reg, u32 *data)
{
cpuid(reg, &data[0], &data[1], &data[2], &data[3]);
}
-#endif /* ! __SMP__ */
+#endif /* ! CONFIG_SMP */
static loff_t cpuid_seek(struct file *file, loff_t offset, int orig)
{
}
}
-#else /* ! __SMP__ */
+#else /* ! CONFIG_SMP */
extern inline int do_wrmsr(int cpu, u32 reg, u32 eax, u32 edx)
{
return rdmsr_eio(reg, eax, edx);
}
-#endif /* ! __SMP__ */
+#endif /* ! CONFIG_SMP */
static loff_t msr_seek(struct file *file, loff_t offset, int orig)
{
/* Not a real frame buffer device... */
{ "resolver", NULL, resolver_video_setup },
#endif
+#ifdef CONFIG_FB_SIS
+ { "sisfb", sisfb_init, sisfb_setup },
+#endif
#ifdef CONFIG_FB_VIRTUAL
/* Must be last to avoid that vfb becomes your primary display */
{ "vfb", vfb_init, vfb_setup },
#endif
-#ifdef CONFIG_FB_SIS
- { "sisfb", sisfb_init, sisfb_setup },
-#endif
};
#define NUM_FB_DRIVERS (sizeof(fb_drivers)/sizeof(*fb_drivers))
return already_written ? already_written : errno;
}
+static int ncp_release(struct inode *inode, struct file *file) {
+ if (NCP_FINFO(inode)->opened) {
+ if (ncp_make_closed(inode)) {
+ DPRINTK("ncp_release: failed to close\n");
+ }
+ }
+ return 0;
+}
+
struct file_operations ncp_file_operations =
{
read: ncp_file_read,
write: ncp_file_write,
ioctl: ncp_ioctl,
mmap: ncp_mmap,
+ release: ncp_release,
fsync: ncp_fsync,
};
{
return -EACCES;
}
- if (server->sign_active)
- {
- return -EINVAL;
- }
- if (server->sign_wanted)
- {
- struct ncp_sign_init sign;
+ if (arg) {
+ if (server->sign_wanted)
+ {
+ struct ncp_sign_init sign;
- if (copy_from_user(&sign, (struct ncp_sign_init *) arg,
- sizeof(sign))) return -EFAULT;
- memcpy(server->sign_root,sign.sign_root,8);
- memcpy(server->sign_last,sign.sign_last,16);
- server->sign_active = 1;
+ if (copy_from_user(&sign, (struct ncp_sign_init *) arg,
+ sizeof(sign))) return -EFAULT;
+ memcpy(server->sign_root,sign.sign_root,8);
+ memcpy(server->sign_last,sign.sign_last,16);
+ server->sign_active = 1;
+ }
+ /* ignore when signatures not wanted */
+ } else {
+ server->sign_active = 0;
}
- /* ignore when signatures not wanted */
return 0;
case NCP_IOC_SIGN_WANTED:
{
struct dentry * dentry = fhp->fh_dentry;
if (fhp->fh_dverified) {
- fhp->fh_dentry = NULL;
fh_unlock(fhp);
+ fhp->fh_dentry = NULL;
fhp->fh_dverified = 0;
dput(dentry);
nfsd_nr_put++;
#ifndef _ASMi386_SIGCONTEXT_H
#define _ASMi386_SIGCONTEXT_H
+#include <linux/config.h>
/*
* As documented in the iBCS2 standard..
*