You can subscribe to this list here.
2000 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(6) |
Sep
(2) |
Oct
(43) |
Nov
(4) |
Dec
(12) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2001 |
Jan
(78) |
Feb
(97) |
Mar
(29) |
Apr
(2) |
May
(22) |
Jun
(38) |
Jul
(11) |
Aug
(27) |
Sep
(40) |
Oct
(2) |
Nov
(17) |
Dec
(8) |
2002 |
Jan
|
Feb
(2) |
Mar
(1) |
Apr
(480) |
May
(456) |
Jun
(12) |
Jul
|
Aug
(1) |
Sep
|
Oct
(18) |
Nov
(3) |
Dec
(6) |
2003 |
Jan
|
Feb
(18) |
Mar
(1) |
Apr
|
May
(6) |
Jun
(147) |
Jul
(7) |
Aug
(3) |
Sep
(235) |
Oct
(10) |
Nov
(2) |
Dec
(1) |
2004 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Andy P. <at...@us...> - 2002-04-10 18:39:37
|
Update of /cvsroot/linux-vax/kernel-2.4/arch/i386/boot/compressed In directory usw-pr-cvs1:/tmp/cvs-serv10929/i386/boot/compressed Modified Files: Makefile misc.c Log Message: synch 2.4.15 commit 35 Index: Makefile =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/i386/boot/compressed/Makefile,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 --- Makefile 14 Jan 2001 19:19:57 -0000 1.1.1.1 +++ Makefile 10 Apr 2002 14:23:20 -0000 1.2 @@ -9,7 +9,6 @@ OBJECTS = $(HEAD) misc.o -CFLAGS = $(CPPFLAGS) -O2 -DSTDC_HEADERS ZLDFLAGS = -e startup_32 # Index: misc.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/i386/boot/compressed/misc.c,v retrieving revision 1.1.1.2 retrieving revision 1.2 diff -u -r1.1.1.2 -r1.2 --- misc.c 25 Feb 2001 23:15:16 -0000 1.1.1.2 +++ misc.c 10 Apr 2002 14:23:20 -0000 1.2 @@ -9,9 +9,11 @@ * High loaded stuff by Hans Lermen & Werner Almesberger, Feb. 1996 */ +#include <linux/linkage.h> #include <linux/vmalloc.h> #include <linux/tty.h> #include <asm/io.h> + /* * gzip declarations */ @@ -21,6 +23,14 @@ #undef memset #undef memcpy + +/* + * Why do we do this? Don't ask me.. + * + * Incomprehensible are the ways of bootloaders. + */ +static void* memset(void *, int, size_t); +static void* memcpy(void *, __const void *, size_t); #define memzero(s, n) memset ((s), 0, (n)) typedef unsigned char uch; @@ -114,6 +124,10 @@ static int vidport; static int lines, cols; +#ifdef CONFIG_MULTIQUAD +static void *xquad_portio = NULL; +#endif + #include "../../../../lib/inflate.c" static void *malloc(int size) @@ -194,7 +208,7 @@ outb_p(0xff & (pos >> 1), vidport+1); } -void* memset(void* s, int c, size_t n) +static void* memset(void* s, int c, size_t n) { int i; char *ss = (char*)s; @@ -203,7 +217,7 @@ return s; } -void* memcpy(void* __dest, __const void* __src, +static void* memcpy(void* __dest, __const void* __src, size_t __n) { int i; @@ -291,7 +305,7 @@ short b; } stack_start = { & user_stack [STACK_SIZE] , __KERNEL_DS }; -void setup_normal_output_buffer(void) +static void setup_normal_output_buffer(void) { #ifdef STANDARD_MEMORY_BIOS_CALL if (EXT_MEM_K < 1024) error("Less than 2MB of memory.\n"); @@ -307,7 +321,7 @@ uch *high_buffer_start; int hcount; }; -void setup_output_buffer_if_we_run_high(struct moveparams *mv) +static void setup_output_buffer_if_we_run_high(struct moveparams *mv) { high_buffer_start = (uch *)(((ulg)&end) + HEAP_SIZE); #ifdef STANDARD_MEMORY_BIOS_CALL @@ -329,7 +343,7 @@ mv->high_buffer_start = high_buffer_start; } -void close_output_buffer_if_we_run_high(struct moveparams *mv) +static void close_output_buffer_if_we_run_high(struct moveparams *mv) { if (bytes_out > low_buffer_size) { mv->lcount = low_buffer_size; @@ -342,7 +356,7 @@ } -int decompress_kernel(struct moveparams *mv, void *rmode) +asmlinkage int decompress_kernel(struct moveparams *mv, void *rmode) { real_mode = rmode; |
From: Andy P. <at...@us...> - 2002-04-10 18:39:35
|
Update of /cvsroot/linux-vax/kernel-2.4/arch/arm/nwfpe In directory usw-pr-cvs1:/tmp/cvs-serv24336/arm/nwfpe Modified Files: Makefile double_cpdo.c entry.S entry26.S extended_cpdo.c fpa11.c fpa11.h fpa11.inl fpa11_cpdo.c fpa11_cpdt.c fpa11_cprt.c fpmodule.c fpmodule.inl fpopcode.c fpopcode.h single_cpdo.c Removed Files: config.h Log Message: synch 2.4.15 commit 32 Index: Makefile =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/arm/nwfpe/Makefile,v retrieving revision 1.1.1.2 retrieving revision 1.2 diff -u -r1.1.1.2 -r1.2 --- Makefile 25 Feb 2001 23:15:21 -0000 1.1.1.2 +++ Makefile 10 Apr 2002 13:51:23 -0000 1.2 @@ -1,7 +1,7 @@ # # linux/arch/arm/nwfpe/Makefile # -# Copyright (C) 1998, 1999 Philip Blundell +# Copyright (C) 1998, 1999, 2001 Philip Blundell # USE_STANDARD_AS_RULE := true @@ -14,7 +14,7 @@ list-multi := nwfpe.o -obj-$(CONFIG_NWFPE) += nwfpe.o +obj-$(CONFIG_FPE_NWFPE) += nwfpe.o nwfpe-objs := fpa11.o fpa11_cpdo.o fpa11_cpdt.o fpa11_cprt.o \ fpmodule.o fpopcode.o softfloat.o \ Index: double_cpdo.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/arm/nwfpe/double_cpdo.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 --- double_cpdo.c 14 Jan 2001 19:47:07 -0000 1.1.1.1 +++ double_cpdo.c 10 Apr 2002 13:51:23 -0000 1.2 @@ -1,6 +1,6 @@ /* NetWinder Floating Point Emulator - (c) Rebel.com, 1998-1999 + (c) Rebel.COM, 1998,1999 Direct questions, comments to Scott Bambrough <sc...@ne...> @@ -23,10 +23,6 @@ #include "fpopcode.h" #include "fpa11.h" -extern FPA11 *fpa11; - -float64 getDoubleConstant(unsigned int); - float64 float64_exp(float64 Fm); float64 float64_ln(float64 Fm); float64 float64_sin(float64 rFm); @@ -41,6 +37,7 @@ unsigned int DoubleCPDO(const unsigned int opcode) { + FPA11 *fpa11 = GET_FPA11(); float64 rFm, rFn; unsigned int Fd, Fm, Fn, nRc = 1; Index: entry.S =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/arm/nwfpe/entry.S,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 --- entry.S 14 Jan 2001 19:47:07 -0000 1.1.1.1 +++ entry.S 10 Apr 2002 13:51:23 -0000 1.2 @@ -1,7 +1,7 @@ /* NetWinder Floating Point Emulator - (c) Corel Computer Corporation, 1998 - (c) Philip Blundell 1998-1999 + (c) Rebel.COM, 1998 + (c) 1998, 1999 Philip Blundell Direct questions, comments to Scott Bambrough <sc...@ne...> @@ -77,16 +77,13 @@ emulation. This would reduce load/store overhead at the expense of stealing two regs from the register allocator. Not sure if it's worth it. */ - ldr r4, =userRegisters - str sp, [r4] @ save pointer to user regs - ldr r4, =fpa11 - str r10, [r4] @ store pointer to our state + str sp, [r10] @ Store the user registers pointer in the fpa11 structure. mov r4, sp @ use r4 for local pointer mov r10, lr @ save the failure-return addresses ldr r5, [r4, #60] @ get contents of PC; sub r8, r5, #4 -.Lx2: ldrt r0, [r8], #0 @ get actual instruction into r0 +.Lx2: ldrt r0, [r8] @ get actual instruction into r0 emulate: bl EmulateAll @ emulate the instruction cmp r0, #0 @ was emulation successful @@ -115,15 +112,17 @@ mov r0, r6 @ prepare for EmulateAll() b emulate @ if r0 != 0, goto EmulateAll - @ We need to be prepared for the instruction at .Lx1 or .Lx2 - @ to fault. + @ We need to be prepared for the instructions at .Lx1 and .Lx2 + @ to fault. Emit the appropriate exception gunk to fix things up. + @ ??? For some reason, faults can happen at .Lx2 even with a + @ plain LDR instruction. Weird, but it seems harmless. .section .fixup,"ax" - .align -.Lfix: mov pc, r9 + .align 2 +.Lfix: mov pc, r9 @ let the user eat segfaults .previous .section __ex_table,"a" - .align 3 - .long .Lx2, .Lfix + .align 3 .long .Lx1, .Lfix + .long .Lx2, .Lfix .previous Index: entry26.S =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/arm/nwfpe/entry26.S,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 --- entry26.S 14 Jan 2001 19:47:08 -0000 1.1.1.1 +++ entry26.S 10 Apr 2002 13:51:23 -0000 1.2 @@ -1,6 +1,6 @@ /* NetWinder Floating Point Emulator - (c) Corel Computer Corporation, 1998 + (c) Rebel.COM, 1998 (c) Philip Blundell 1998-1999 Direct questions, comments to Scott Bambrough <sc...@ne...> @@ -20,7 +20,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -#include "../lib/constants.h" +#include <asm/constants.h> /* This is the kernel's entry point into the floating point emulator. It is called from the kernel with code similar to this: @@ -84,7 +84,7 @@ beq fpundefinstr @ no, return failure next: - ldrt r6, [r5], #4 @ get the next instruction and +.Lx1: ldrt r6, [r5], #4 @ get the next instruction and @ increment PC and r2, r6, #0x0F000000 @ test for FP insns @@ -110,3 +110,13 @@ adr lr, 1b orr lr, lr, #3 b EmulateAll @ if r0 != 0, goto EmulateAll + +.Lret: b ret_from_exception @ let the user eat segfaults + + @ We need to be prepared for the instruction at .Lx1 to fault. + @ Emit the appropriate exception gunk to fix things up. + .section __ex_table,"a" + .align 3 + .long .Lx1 + ldr lr, [lr, $(.Lret - .Lx1)/4] + .previous Index: extended_cpdo.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/arm/nwfpe/extended_cpdo.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 --- extended_cpdo.c 14 Jan 2001 19:47:09 -0000 1.1.1.1 +++ extended_cpdo.c 10 Apr 2002 13:51:23 -0000 1.2 @@ -1,6 +1,6 @@ /* NetWinder Floating Point Emulator - (c) Rebel.com, 1998-1999 + (c) Rebel.COM, 1998,1999 Direct questions, comments to Scott Bambrough <sc...@ne...> @@ -23,8 +23,6 @@ #include "fpopcode.h" #include "fpa11.h" -floatx80 getExtendedConstant(unsigned int); - floatx80 floatx80_exp(floatx80 Fm); floatx80 floatx80_ln(floatx80 Fm); floatx80 floatx80_sin(floatx80 rFm); @@ -39,6 +37,7 @@ unsigned int ExtendedCPDO(const unsigned int opcode) { + FPA11 *fpa11 = GET_FPA11(); floatx80 rFm, rFn; unsigned int Fd, Fm, Fn, nRc = 1; Index: fpa11.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/arm/nwfpe/fpa11.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 --- fpa11.c 14 Jan 2001 19:47:10 -0000 1.1.1.1 +++ fpa11.c 10 Apr 2002 13:51:23 -0000 1.2 @@ -1,6 +1,6 @@ /* NetWinder Floating Point Emulator - (c) Rebel.com, 1998-1999 + (c) Rebel.COM, 1998,1999 Direct questions, comments to Scott Bambrough <sc...@ne...> @@ -32,22 +32,20 @@ unsigned int EmulateCPDT(const unsigned int); unsigned int EmulateCPRT(const unsigned int); -/* Emulator registers */ -FPA11 *fpa11; - /* Reset the FPA11 chip. Called to initialize and reset the emulator. */ void resetFPA11(void) { int i; - + FPA11 *fpa11 = GET_FPA11(); + /* initialize the register type array */ for (i=0;i<=7;i++) { fpa11->fType[i] = typeNone; } - /* FPSR: set system id to FP_EMULATOR, clear all other bits */ - fpa11->fpsr = FP_EMULATOR; + /* FPSR: set system id to FP_EMULATOR, set AC, clear all other bits */ + fpa11->fpsr = FP_EMULATOR | BIT_AC; /* FPCR: set SB, AB and DA bits, clear all others */ #if MAINTAIN_FPCR @@ -130,8 +128,10 @@ { unsigned int nRc = 0; unsigned long flags; - + FPA11 *fpa11; save_flags(flags); sti(); + + fpa11 = GET_FPA11(); if (fpa11->initflag == 0) /* good place for __builtin_expect */ { Index: fpa11.h =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/arm/nwfpe/fpa11.h,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 --- fpa11.h 14 Jan 2001 19:47:10 -0000 1.1.1.1 +++ fpa11.h 10 Apr 2002 13:51:23 -0000 1.2 @@ -26,6 +26,9 @@ #include "fpsr.h" /* FP control and status register definitions */ #include "softfloat.h" +/* Need task_struct */ +#include <linux/sched.h> + #define typeNone 0x00 #define typeSingle 0x01 #define typeDouble 0x02 @@ -39,6 +42,7 @@ /* FPA11 device model */ typedef struct tagFPA11 { + unsigned int *userRegisters; FPREG fpreg[8]; /* 8 floating point registers */ FPSR fpsr; /* floating point status register */ FPCR fpcr; /* floating point control register */ @@ -56,6 +60,7 @@ extern void SetRoundingMode(const unsigned int); extern void SetRoundingPrecision(const unsigned int); -extern FPA11 *fpa11; +#define GET_FPA11() ((FPA11 *)(¤t->thread.fpstate)) +#define GET_USERREG() (GET_FPA11()->userRegisters) #endif Index: fpa11.inl =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/arm/nwfpe/fpa11.inl,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 --- fpa11.inl 14 Jan 2001 19:47:10 -0000 1.1.1.1 +++ fpa11.inl 10 Apr 2002 13:51:23 -0000 1.2 @@ -1,6 +1,6 @@ /* NetWinder Floating Point Emulator - (c) Corel Computer Corporation, 1998 + (c) Rebel.COM, 1998,1999 Direct questions, comments to Scott Bambrough <sc...@ne...> @@ -24,11 +24,13 @@ /* Read and write floating point status register */ extern __inline__ unsigned int readFPSR(void) { + FPA11 *fpa11 = GET_FPA11(); return(fpa11->fpsr); } extern __inline__ void writeFPSR(FPSR reg) { + FPA11 *fpa11 = GET_FPA11(); /* the sysid byte in the status register is readonly */ fpa11->fpsr = (fpa11->fpsr & MASK_SYSID) | (reg & ~MASK_SYSID); } @@ -36,12 +38,14 @@ /* Read and write floating point control register */ extern __inline__ FPCR readFPCR(void) { + FPA11 *fpa11 = GET_FPA11(); /* clear SB, AB and DA bits before returning FPCR */ return(fpa11->fpcr & ~MASK_RFC); } extern __inline__ void writeFPCR(FPCR reg) { + FPA11 *fpa11 = GET_FPA11(); fpa11->fpcr &= ~MASK_WFC; /* clear SB, AB and DA bits */ fpa11->fpcr |= (reg & MASK_WFC); /* write SB, AB and DA bits */ } Index: fpa11_cpdo.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/arm/nwfpe/fpa11_cpdo.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 --- fpa11_cpdo.c 14 Jan 2001 19:47:11 -0000 1.1.1.1 +++ fpa11_cpdo.c 10 Apr 2002 13:51:23 -0000 1.2 @@ -1,6 +1,6 @@ /* NetWinder Floating Point Emulator - (c) Rebel.com, 1998-1999 + (c) Rebel.COM, 1998,1999 Direct questions, comments to Scott Bambrough <sc...@ne...> @@ -28,6 +28,7 @@ unsigned int EmulateCPDO(const unsigned int opcode) { + FPA11 *fpa11 = GET_FPA11(); unsigned int Fd, nType, nDest, nRc = 1; //printk("EmulateCPDO(0x%08x)\n",opcode); Index: fpa11_cpdt.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/arm/nwfpe/fpa11_cpdt.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 --- fpa11_cpdt.c 14 Jan 2001 19:47:12 -0000 1.1.1.1 +++ fpa11_cpdt.c 10 Apr 2002 13:51:23 -0000 1.2 @@ -28,16 +28,18 @@ #include <asm/uaccess.h> -extern __inline__ +static inline void loadSingle(const unsigned int Fn,const unsigned int *pMem) { + FPA11 *fpa11 = GET_FPA11(); fpa11->fType[Fn] = typeSingle; get_user(fpa11->fpreg[Fn].fSingle, pMem); } -extern __inline__ +static inline void loadDouble(const unsigned int Fn,const unsigned int *pMem) { + FPA11 *fpa11 = GET_FPA11(); unsigned int *p; p = (unsigned int*)&fpa11->fpreg[Fn].fDouble; fpa11->fType[Fn] = typeDouble; @@ -45,9 +47,10 @@ get_user(p[1], &pMem[0]); /* sign & exponent */ } -extern __inline__ +static inline void loadExtended(const unsigned int Fn,const unsigned int *pMem) { + FPA11 *fpa11 = GET_FPA11(); unsigned int *p; p = (unsigned int*)&fpa11->fpreg[Fn].fExtended; fpa11->fType[Fn] = typeExtended; @@ -56,9 +59,10 @@ get_user(p[2], &pMem[1]); /* ms bits */ } -extern __inline__ +static inline void loadMultiple(const unsigned int Fn,const unsigned int *pMem) { + FPA11 *fpa11 = GET_FPA11(); register unsigned int *p; unsigned long x; @@ -87,9 +91,10 @@ } } -extern __inline__ +static inline void storeSingle(const unsigned int Fn,unsigned int *pMem) { + FPA11 *fpa11 = GET_FPA11(); float32 val; register unsigned int *p = (unsigned int*)&val; @@ -109,9 +114,10 @@ put_user(p[0], pMem); } -extern __inline__ +static inline void storeDouble(const unsigned int Fn,unsigned int *pMem) { + FPA11 *fpa11 = GET_FPA11(); float64 val; register unsigned int *p = (unsigned int*)&val; @@ -131,9 +137,10 @@ put_user(p[0], &pMem[1]); /* lsw */ } -extern __inline__ +static inline void storeExtended(const unsigned int Fn,unsigned int *pMem) { + FPA11 *fpa11 = GET_FPA11(); floatx80 val; register unsigned int *p = (unsigned int*)&val; @@ -155,9 +162,10 @@ put_user(p[2], &pMem[1]); /* msw */ } -extern __inline__ +static inline void storeMultiple(const unsigned int Fn,unsigned int *pMem) { + FPA11 *fpa11 = GET_FPA11(); register unsigned int nType, *p; p = (unsigned int*)&(fpa11->fpreg[Fn]); Index: fpa11_cprt.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/arm/nwfpe/fpa11_cprt.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 --- fpa11_cprt.c 14 Jan 2001 19:47:13 -0000 1.1.1.1 +++ fpa11_cprt.c 10 Apr 2002 13:51:23 -0000 1.2 @@ -1,6 +1,6 @@ /* NetWinder Floating Point Emulator - (c) Rebel.com, 1998-1999 + (c) Rebel.COM, 1998,1999 (c) Philip Blundell, 1999 Direct questions, comments to Scott Bambrough <sc...@ne...> @@ -78,6 +78,8 @@ unsigned int PerformFLT(const unsigned int opcode) { + FPA11 *fpa11 = GET_FPA11(); + unsigned int nRc = 1; SetRoundingMode(opcode); SetRoundingPrecision(opcode); @@ -116,6 +118,7 @@ unsigned int PerformFIX(const unsigned int opcode) { + FPA11 *fpa11 = GET_FPA11(); unsigned int nRc = 1; unsigned int Fn = getFm(opcode); @@ -182,6 +185,7 @@ static unsigned int PerformComparison(const unsigned int opcode) { + FPA11 *fpa11 = GET_FPA11(); unsigned int Fn, Fm; floatx80 rFn, rFm; int e_flag = opcode & 0x400000; /* 1 if CxFE */ Index: fpmodule.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/arm/nwfpe/fpmodule.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 --- fpmodule.c 14 Jan 2001 19:47:13 -0000 1.1.1.1 +++ fpmodule.c 10 Apr 2002 13:51:23 -0000 1.2 @@ -39,9 +39,6 @@ #include "fpa11.h" #include "fpa11.inl" -/* external data */ -extern FPA11 *fpa11; - /* kernel symbols required for signal handling */ typedef struct task_struct* PTASK; @@ -55,6 +52,8 @@ #else #define fp_send_sig send_sig #define kern_fp_enter fp_enter + +extern char fpe_type[]; #endif /* kernel function prototypes required */ @@ -69,27 +68,45 @@ /* forward declarations */ extern void nwfpe_enter(void); -/* Address of user registers on the kernel stack. */ -unsigned int *userRegisters; +#ifdef MODULE +/* + * Return 0 if we can be unloaded. This can only happen if + * kern_fp_enter is still pointing at nwfpe_enter + */ +static int fpe_unload(void) +{ + return (kern_fp_enter == nwfpe_enter) ? 0 : 1; +} +#endif -int __init fpe_init(void) +static int __init fpe_init(void) { - if (sizeof(FPA11) > sizeof(union fp_state)) + if (sizeof(FPA11) > sizeof(union fp_state)) { printk(KERN_ERR "nwfpe: bad structure size\n"); - else { - /* Display title, version and copyright information. */ - printk(KERN_WARNING "NetWinder Floating Point Emulator V0.95 " - "(c) 1998-1999 Rebel.com\n"); - - /* Save pointer to the old FP handler and then patch ourselves in */ - orig_fp_enter = kern_fp_enter; - kern_fp_enter = nwfpe_enter; + return -EINVAL; } +#ifdef MODULE + if (!mod_member_present(&__this_module, can_unload)) + return -EINVAL; + __this_module.can_unload = fpe_unload; +#else + if (fpe_type[0] && strcmp(fpe_type, "nwfpe")) + return 0; +#endif + + /* Display title, version and copyright information. */ + printk(KERN_WARNING "NetWinder Floating Point Emulator V0.95 " + "(c) 1998-1999 Rebel.com\n"); + + /* Save pointer to the old FP handler and then patch ourselves in */ + orig_fp_enter = kern_fp_enter; + kern_fp_enter = nwfpe_enter; + return 0; } -void __exit fpe_exit(void) +static void __exit fpe_exit(void) { /* Restore the values we saved earlier. */ kern_fp_enter = orig_fp_enter; @@ -122,7 +139,7 @@ #ifdef CONFIG_DEBUG_USER printk(KERN_DEBUG "NWFPE: %s[%d] takes exception %08x at %p from %08x\n", current->comm, current->pid, flags, - __builtin_return_address(0), userRegisters[15]); + __builtin_return_address(0), GET_USERREG()[15]); #endif /* Keep SoftFloat exception flags up to date. */ Index: fpmodule.inl =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/arm/nwfpe/fpmodule.inl,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 --- fpmodule.inl 14 Jan 2001 19:47:14 -0000 1.1.1.1 +++ fpmodule.inl 10 Apr 2002 13:51:23 -0000 1.2 @@ -1,6 +1,6 @@ /* - NetWinder Floating Point Emulator - (c) Rebel.com, 1998-1999 + NetWinder Floating Point Emulator + (c) Rebel.COM, 1998,1999 Direct questions, comments to Scott Bambrough <sc...@ne...> @@ -19,9 +19,6 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -/* Address of user registers on the kernel stack. */ -extern unsigned int *userRegisters; - extern __inline__ unsigned int readRegister(const unsigned int nReg) { @@ -32,6 +29,7 @@ for this in this routine. LDF/STF instructions with Rn = PC depend on the PC being correct, as they use PC+8 in their address calculations. */ + unsigned int *userRegisters = GET_USERREG(); unsigned int val = userRegisters[nReg]; if (REG_PC == nReg) val -= 4; return val; @@ -40,6 +38,7 @@ extern __inline__ void writeRegister(const unsigned int nReg, const unsigned int val) { + unsigned int *userRegisters = GET_USERREG(); userRegisters[nReg] = val; } @@ -68,6 +67,7 @@ extern __inline__ void writeConditionCodes(const unsigned int val) { + unsigned int *userRegisters = GET_USERREG(); unsigned int rval; /* * Operate directly on userRegisters since Index: fpopcode.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/arm/nwfpe/fpopcode.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 --- fpopcode.c 14 Jan 2001 19:47:15 -0000 1.1.1.1 +++ fpopcode.c 10 Apr 2002 13:51:23 -0000 1.2 @@ -1,6 +1,6 @@ /* NetWinder Floating Point Emulator - (c) Rebel.com, 1998-1999 + (c) Rebel.COM, 1998,1999 Direct questions, comments to Scott Bambrough <sc...@ne...> @@ -26,7 +26,7 @@ #include "fpmodule.h" #include "fpmodule.inl" -static floatx80 floatx80Constant[] = { +const floatx80 floatx80Constant[] = { { 0x0000, 0x0000000000000000ULL}, /* extended 0.0 */ { 0x3fff, 0x8000000000000000ULL}, /* extended 1.0 */ { 0x4000, 0x8000000000000000ULL}, /* extended 2.0 */ @@ -37,7 +37,7 @@ { 0x4002, 0xa000000000000000ULL} /* extended 10.0 */ }; -static float64 float64Constant[] = { +const float64 float64Constant[] = { 0x0000000000000000ULL, /* double 0.0 */ 0x3ff0000000000000ULL, /* double 1.0 */ 0x4000000000000000ULL, /* double 2.0 */ @@ -48,7 +48,7 @@ 0x4024000000000000ULL /* double 10.0 */ }; -static float32 float32Constant[] = { +const float32 float32Constant[] = { 0x00000000, /* single 0.0 */ 0x3f800000, /* single 1.0 */ 0x40000000, /* single 2.0 */ @@ -59,21 +59,6 @@ 0x41200000 /* single 10.0 */ }; -floatx80 getExtendedConstant(const unsigned int nIndex) -{ - return floatx80Constant[nIndex]; -} - -float64 getDoubleConstant(const unsigned int nIndex) -{ - return float64Constant[nIndex]; -} - -float32 getSingleConstant(const unsigned int nIndex) -{ - return float32Constant[nIndex]; -} - unsigned int getTransferLength(const unsigned int opcode) { unsigned int nRc; @@ -135,10 +120,10 @@ return(nRc); } -/* contition code lookup table +/* condition code lookup table index into the table is test code: EQ, NE, ... LT, GT, AL, NV bit position in short is condition code: NZCV */ -unsigned short aCC[16] = { +static const unsigned short aCC[16] = { 0xF0F0, // EQ == Z set 0x0F0F, // NE 0xCCCC, // CS == C set Index: fpopcode.h =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/arm/nwfpe/fpopcode.h,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 --- fpopcode.h 14 Jan 2001 19:47:16 -0000 1.1.1.1 +++ fpopcode.h 10 Apr 2002 13:51:23 -0000 1.2 @@ -1,6 +1,6 @@ /* NetWinder Floating Point Emulator - (c) Rebel.com, 1998-1999 + (c) Rebel.COM, 1998,1999 Direct questions, comments to Scott Bambrough <sc...@ne...> @@ -366,11 +366,25 @@ /* Get the rounding mode from the opcode. */ #define getRoundingMode(opcode) ((opcode & MASK_ROUNDING_MODE) >> 5) -float32 getSingleConstant(const unsigned int nIndex); -float64 getDoubleConstant(const unsigned int nIndex); -floatx80 getExtendedConstant(const unsigned int nIndex); +static inline const floatx80 getExtendedConstant(const unsigned int nIndex) +{ + extern const floatx80 floatx80Constant[]; + return floatx80Constant[nIndex]; +} + +static inline const float64 getDoubleConstant(const unsigned int nIndex) +{ + extern const float64 float64Constant[]; + return float64Constant[nIndex]; +} + +static inline const float32 getSingleConstant(const unsigned int nIndex) +{ + extern const float32 float32Constant[]; + return float32Constant[nIndex]; +} -unsigned int getRegisterCount(const unsigned int opcode); -unsigned int getDestinationSize(const unsigned int opcode); +extern unsigned int getRegisterCount(const unsigned int opcode); +extern unsigned int getDestinationSize(const unsigned int opcode); #endif Index: single_cpdo.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/arm/nwfpe/single_cpdo.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 --- single_cpdo.c 14 Jan 2001 19:47:18 -0000 1.1.1.1 +++ single_cpdo.c 10 Apr 2002 13:51:23 -0000 1.2 @@ -1,6 +1,6 @@ /* NetWinder Floating Point Emulator - (c) Rebel.com, 1998-1999 + (c) Rebel.COM, 1998,1999 Direct questions, comments to Scott Bambrough <sc...@ne...> @@ -23,8 +23,6 @@ #include "fpopcode.h" #include "fpa11.h" -float32 getSingleConstant(unsigned int); - float32 float32_exp(float32 Fm); float32 float32_ln(float32 Fm); float32 float32_sin(float32 rFm); @@ -39,6 +37,7 @@ unsigned int SingleCPDO(const unsigned int opcode) { + FPA11 *fpa11 = GET_FPA11(); float32 rFm, rFn; unsigned int Fd, Fm, Fn, nRc = 1; --- config.h DELETED --- |
From: Andy P. <at...@us...> - 2002-04-10 18:39:32
|
Update of /cvsroot/linux-vax/kernel-2.4/arch/mips/ite-boards/qed-4n-s01b In directory usw-pr-cvs1:/tmp/cvs-serv15748/arch/mips/ite-boards/qed-4n-s01b Log Message: Directory /cvsroot/linux-vax/kernel-2.4/arch/mips/ite-boards/qed-4n-s01b added to the repository |
Update of /cvsroot/linux-vax/kernel-2.4/arch/ppc/coffboot In directory usw-pr-cvs1:/tmp/cvs-serv25860/ppc/coffboot Removed Files: Makefile chrpmain.c coffcrt0.S coffmain.c crt0.S dummy.c hack-coff.c ld.script main.c misc.S mknote.c no_initrd.c nonstdio.h piggyback.c rs6000.h start.c string.S zlib.c zlib.h Log Message: synch 2.4.15 commit 43 --- Makefile DELETED --- --- chrpmain.c DELETED --- --- coffcrt0.S DELETED --- --- coffmain.c DELETED --- --- crt0.S DELETED --- --- dummy.c DELETED --- --- hack-coff.c DELETED --- --- ld.script DELETED --- --- main.c DELETED --- --- misc.S DELETED --- --- mknote.c DELETED --- --- no_initrd.c DELETED --- --- nonstdio.h DELETED --- --- piggyback.c DELETED --- --- rs6000.h DELETED --- --- start.c DELETED --- --- string.S DELETED --- --- zlib.c DELETED --- --- zlib.h DELETED --- |
From: Andy P. <at...@us...> - 2002-04-10 18:39:22
|
Update of /cvsroot/linux-vax/kernel-2.4/arch/arm/mach-anakin In directory usw-pr-cvs1:/tmp/cvs-serv24336/arm/mach-anakin Added Files: Makefile arch.c irq.c mm.c Log Message: synch 2.4.15 commit 32 --- NEW FILE --- # # Makefile for the linux kernel. # # Note! Dependencies are done automagically by 'make dep', which also # removes any old dependencies. DON'T put your own dependencies here # unless it's something special (ie not a .c file). USE_STANDARD_AS_RULE := true O_TARGET := anakin.o # Object file lists. obj-y := arch.o irq.o mm.o obj-m := obj-n := obj- := export-objs := include $(TOPDIR)/Rules.make --- NEW FILE --- /* * linux/arch/arm/mach-anakin/arch.c * * Copyright (C) 2001 Aleph One Ltd. for Acunia N.V. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. * * Changelog: * 09-Apr-2001 W/TTC Created */ #include <linux/config.h> #include <linux/tty.h> #include <linux/init.h> #include <asm/setup.h> #include <asm/mach-types.h> #include <asm/mach/arch.h> #ifndef CONFIG_BLK_DEV_RAM_SIZE #define CONFIG_BLK_DEV_RAM_SIZE 4096 #endif extern void anakin_map_io(void); extern void genarch_init_irq(void); static void __init fixup_anakin(struct machine_desc *desc, struct param_struct *unused, char **cmdline, struct meminfo *mi) { ROOT_DEV = MKDEV(RAMDISK_MAJOR, 0); setup_ramdisk(1, 0, 0, CONFIG_BLK_DEV_RAM_SIZE); setup_initrd(0xc0800000, 4 * 1024 * 1024); } MACHINE_START(ANAKIN, "Anakin") MAINTAINER("Wookey/Tak-Shing Chan") BOOT_MEM(0x20000000, 0x40000000, 0xe0000000) VIDEO(0x80000000, 0x8002db40) FIXUP(fixup_anakin) MAPIO(anakin_map_io) INITIRQ(genarch_init_irq) MACHINE_END --- NEW FILE --- /* * linux/arch/arm/mach-anakin/irq.c * * Copyright (C) 2001 Aleph One Ltd. for Acunia N.V. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. * * Changelog: * 10-Apr-2001 TTC Created */ #include <linux/ptrace.h> #include <linux/sched.h> #include <linux/interrupt.h> #include <linux/init.h> #include <asm/irq.h> #include <asm/mach/irq.h> extern unsigned int anakin_irq_mask, anakin_active_irqs; extern void do_IRQ(int, struct pt_regs *); static void anakin_mask_irq(unsigned int irq) { anakin_irq_mask &= ~(1 << irq); } static void anakin_unmask_irq(unsigned int irq) { anakin_irq_mask |= (1 << irq); } /* * This is a faked interrupt to deal with parallel interrupt requests * on the Anakin. Make sure that its interrupt number is not in any * way conflicting with the hardware interrupt numbers! Check * IRQ_ANAKIN in linux/include/asm-arm/arch-anakin/irqs.h. */ static void anakin_interrupt(int irq, void *dev_id, struct pt_regs *regs) { for (irq = 0; irq < NR_IRQS; irq++) if (anakin_active_irqs & (1 << irq)) do_IRQ(irq, regs); } static struct irqaction anakin_irq = { name: "Anakin IRQ", handler: anakin_interrupt, flags: SA_INTERRUPT }; void __init irq_init_irq(void) { unsigned int irq; for (irq = 0; irq < NR_IRQS; irq++) { switch (irq) { case IRQ_UART0: case IRQ_UART1: case IRQ_UART2: case IRQ_TICK: case IRQ_CODEC: case IRQ_UART4: case IRQ_TOUCHSCREEN: case IRQ_UART3: case IRQ_FIFO: case IRQ_CAN: case IRQ_COMPACTFLASH: case IRQ_BOSH: case IRQ_ANAKIN: irq_desc[irq].valid = 1; irq_desc[irq].mask_ack = anakin_mask_irq; irq_desc[irq].mask = anakin_mask_irq; irq_desc[irq].unmask = anakin_unmask_irq; } } setup_arm_irq(IRQ_ANAKIN, &anakin_irq); } --- NEW FILE --- /* * linux/arch/arm/mach-anakin/mm.c * * Copyright (C) 2001 Aleph One Ltd. for Acunia N.V. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. * * Changelog: * 09-Apr-2001 W/TTC Created */ #include <linux/mm.h> #include <linux/init.h> #include <asm/io.h> #include <asm/pgtable.h> #include <asm/mach/map.h> static struct map_desc anakin_io_desc[] __initdata = { { IO_BASE, IO_START, IO_SIZE, DOMAIN_IO, 0, 1, 0, 0 }, { FLASH_BASE, FLASH_START, FLASH_SIZE, DOMAIN_IO, 1, 1, 0, 0 }, { VGA_BASE, VGA_START, VGA_SIZE, DOMAIN_IO, 0, 1, 0, 0 }, LAST_DESC }; void __init anakin_map_io(void) { iotable_init(anakin_io_desc); } |
From: Andy P. <at...@us...> - 2002-04-10 18:39:21
|
Update of /cvsroot/linux-vax/kernel-2.4/arch/arm/boot/bootp In directory usw-pr-cvs1:/tmp/cvs-serv24336/arm/boot/bootp Modified Files: Makefile init.S Log Message: synch 2.4.15 commit 32 Index: Makefile =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/arm/boot/bootp/Makefile,v retrieving revision 1.1.1.2 retrieving revision 1.2 diff -u -r1.1.1.2 -r1.2 --- Makefile 25 Feb 2001 23:15:20 -0000 1.1.1.2 +++ Makefile 10 Apr 2002 13:51:20 -0000 1.2 @@ -3,7 +3,6 @@ # ZSYSTEM =$(TOPDIR)/arch/arm/boot/zImage -INITRD =$(ZSYSTEM) ZLDFLAGS =-p -X -T bootp.lds \ --defsym initrd_addr=$(INITRD_PHYS) \ --defsym initrd_virt=$(INITRD_VIRT) \ Index: init.S =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/arm/boot/bootp/init.S,v retrieving revision 1.1.1.2 retrieving revision 1.2 diff -u -r1.1.1.2 -r1.2 --- init.S 25 Feb 2001 23:15:20 -0000 1.1.1.2 +++ init.S 10 Apr 2002 13:51:20 -0000 1.2 @@ -39,7 +39,7 @@ * method by looking at the first word; this should either indicate a page * size of 4K, 16K or 32K. */ - ldmia r13, {r5-r8} @ get size and addr of initrd + ldmia r13, {r4-r8} @ get size and addr of initrd @ r5 = ATAG_INITRD @ r6 = initrd start @ r7 = initrd end @@ -48,10 +48,25 @@ teq r9, #0x1000 @ 4K? teqne r9, #0x4000 @ 16K? teqne r9, #0x8000 @ 32K? - beq no_taglist + beq param_struct + + ldr r9, [r8, #4] @ get first tag + teq r9, r4 + bne taglist @ ok, we have a tag list + +/* + * We didn't find a valid tag list - create one. + */ + str r4, [r8, #4] + mov r4, #8 + str r4, [r8, #0] + mov r4, #0 + str r4, [r8, #8] /* * find the end of the tag list, and then add an INITRD tag on the end. + * If there is already an INITRD tag, then we ignore it; the last INITRD + * tag takes precidence. */ taglist: ldr r9, [r8, #0] @ tag length teq r9, #0 @ last tag? @@ -63,7 +78,10 @@ stmia r8, {r4, r5, r6, r7, r9} mov pc, r12 @ call kernel -no_taglist: add r8, r8, #16*4 +/* + * We found a param struct. Modify the param struct for the initrd + */ +param_struct: add r8, r8, #16*4 stmia r8, {r6,r7} @ save in param_struct mov pc, r12 @ call kernel @@ -83,6 +101,7 @@ .word kernel_addr .word kernel_len + .word 0x54410001 @ r4 = ATAG_CORE .word 0x54410005 @ r5 = ATAG_INITRD .word initrd_virt @ r6 .word initrd_len @ r7 |
From: Andy P. <at...@us...> - 2002-04-10 18:39:17
|
Update of /cvsroot/linux-vax/kernel-2.4/arch/ppc/boot/chrp In directory usw-pr-cvs1:/tmp/cvs-serv25860/ppc/boot/chrp Added Files: Makefile main.c misc.S start.c Log Message: synch 2.4.15 commit 43 --- NEW FILE --- # BK Id: SCCS/s.Makefile 1.13 07/27/01 20:24:17 trini # # Makefile for making ELF bootable images for booting on CHRP # using Open Firmware. # # Geert Uytterhoeven September 1997 # # Based on coffboot by Paul Mackerras ifeq ($(CONFIG_PPC64BRIDGE),y) MSIZE=.64 AFLAGS += -Wa,-mppc64bridge else MSIZE= endif .c.o: $(CC) $(CFLAGS) -DKERNELBASE=$(KERNELBASE) -c -o $*.o $< .S.o: $(CC) $(AFLAGS) -traditional -c -o $*.o $< LD_ARGS = -Ttext 0x00400000 OBJS = ../common/crt0.o start.o main.o misc.o ../common/string.o image.o \ ../common/ofcommon.o LIBS = $(TOPDIR)/lib/lib.a ../lib/zlib.a ADDNOTE = ../utils/addnote PIGGYBACK = ../utils/piggyback ifeq ($(CONFIG_SMP),y) TFTPIMAGE=/tftpboot/zImage.chrp.smp$(MSIZE) else TFTPIMAGE=/tftpboot/zImage.chrp$(MSIZE) endif all: zImage znetboot: zImage ifdef CONFIG_SMP cp -f $(TOPDIR)/vmlinux /tftpboot/vmlinux.smp else cp -f $(TOPDIR)/vmlinux /tftpboot/vmlinux endif ifdef CONFIG_PPC64BRIDGE cp -f $(TOPDIR)/vmlinux /tftpboot/vmlinux.64 endif cp ../images/zImage.chrp $(TFTPIMAGE) znetboot.initrd: zImage.initrd cp ../images/zImage.initrd.chrp $(TFTPIMAGE) floppy: zImage mcopy zImage a:zImage image.o: $(PIGGYBACK) ../images/vmlinux.gz $(PIGGYBACK) image < ../images/vmlinux.gz | $(AS) -o $@ sysmap.o: $(PIGGYBACK) $(TOPDIR)/System.map $(PIGGYBACK) sysmap < $(TOPDIR)/System.map | $(AS) -o $@ initrd.o: ../images/ramdisk.image.gz $(PIGGYBACK) $(PIGGYBACK) initrd < ../images/ramdisk.image.gz | $(AS) -o $@ zImage: $(OBJS) $(LIBS) ../common/no_initrd.o $(ADDNOTE) ../images/vmlinux.gz $(LD) $(LD_ARGS) -o ../images/$@.chrp $(OBJS) ../common/no_initrd.o $(LIBS) cp ../images/$@.chrp ../images/$@.chrp-rs6k $(ADDNOTE) ../images/$@.chrp-rs6k zImage.initrd: $(OBJS) $(LIBS) initrd.o $(ADDNOTE) ../images/vmlinux.gz $(LD) $(LD_ARGS) -o ../images/$@.chrp $(OBJS) initrd.o $(LIBS) cp ../images/$@.chrp ../images/$@.chrp-rs6k $(ADDNOTE) ../images/$@.chrp-rs6k include $(TOPDIR)/Rules.make --- NEW FILE --- /* * BK Id: SCCS/s.main.c 1.13 07/27/01 20:24:17 trini */ /* * Copyright (C) Paul Mackerras 1997. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version * 2 of the License, or (at your option) any later version. */ #include "nonstdio.h" #include <asm/processor.h> extern char _end[]; extern char initrd_data[]; extern char image_data[]; extern char sysmap_data[]; extern int getprop(void *, const char *, void *, int); extern int initrd_len; extern int image_len; extern int sysmap_len; extern unsigned int heap_max; extern void claim(unsigned int virt, unsigned int size, unsigned int align); extern void *finddevice(const char *); extern void flush_cache(void *, unsigned long); extern void gunzip(void *, int, unsigned char *, int *); extern void make_bi_recs(unsigned long addr, char *name, unsigned int mach, unsigned int progend); extern void pause(void); char *avail_ram; char *begin_avail, *end_avail; char *avail_high; #define RAM_START 0x00000000 #define RAM_END (64<<20) #define BOOT_START ((unsigned long)_start) #define BOOT_END ((unsigned long)(_end + 0xFFF) & ~0xFFF) #define RAM_FREE ((unsigned long)(_end+0x1000)&~0xFFF) #define PROG_START 0x00010000 #define PROG_SIZE 0x00400000 /* 4MB */ #define SCRATCH_SIZE (128 << 10) static char scratch[SCRATCH_SIZE]; /* 1MB of scratch space for gunzip */ void chrpboot(int a1, int a2, void *prom) { unsigned sa, len; void *dst; unsigned char *im; unsigned initrd_start=0, initrd_size=0; extern char _start; printf("chrpboot starting: loaded at 0x%p\n\r", &_start); if (initrd_len) { initrd_size = initrd_len; initrd_start = (RAM_END - initrd_size) & ~0xFFF; claim(initrd_start, RAM_END - initrd_start, 0); printf("initial ramdisk moving 0x%x <- 0x%p (%x bytes)\n\r", initrd_start, initrd_data, initrd_size); memcpy((char *)initrd_start, initrd_data, initrd_size); } im = image_data; len = image_len; /* claim 4MB starting at PROG_START */ claim(PROG_START, PROG_SIZE - PROG_START, 0); dst = (void *) PROG_START; if (im[0] == 0x1f && im[1] == 0x8b) { avail_ram = scratch; begin_avail = avail_high = avail_ram; end_avail = scratch + sizeof(scratch); printf("gunzipping (0x%p <- 0x%p:0x%p)...", dst, im, im+len); gunzip(dst, 0x400000, im, &len); printf("done %u bytes\n\r", len); printf("%u bytes of heap consumed, max in use %u\n\r", avail_high - begin_avail, heap_max); } else { memmove(dst, im, len); } flush_cache(dst, len); make_bi_recs(((unsigned long) dst + len), "chrpboot", _MACH_chrp, (PROG_START + PROG_SIZE)); sa = (unsigned long)PROG_START; printf("start address = 0x%x\n\r", sa); (*(void (*)())sa)(a1, a2, prom, initrd_start, initrd_size); printf("returned?\n\r"); pause(); } --- NEW FILE --- /* * BK Id: SCCS/s.misc.S 1.6 05/18/01 15:16:59 cort */ /* * Copyright (C) Paul Mackerras 1997. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version * 2 of the License, or (at your option) any later version. */ .text /* * Use the BAT0 registers to map the 1st 8MB of RAM to 0x90000000. */ .globl setup_bats setup_bats: mfpvr 3 rlwinm 3,3,16,16,31 /* r3 = 1 for 601, 4 for 604 */ cmpi 0,3,1 lis 4,0x9000 bne 4f ori 4,4,4 /* set up BAT registers for 601 */ li 5,0x7f b 5f 4: ori 4,4,0xff /* set up BAT registers for 604 */ li 5,2 mtdbatu 3,4 mtdbatl 3,5 5: mtibatu 3,4 mtibatl 3,5 isync blr /* * Flush the dcache and invalidate the icache for a range of addresses. * * flush_cache(addr, len) */ .global flush_cache flush_cache: addi 4,4,0x1f /* len = (len + 0x1f) / 0x20 */ rlwinm. 4,4,27,5,31 mtctr 4 beqlr 1: dcbf 0,3 icbi 0,3 addi 3,3,0x20 bdnz 1b sync isync blr --- NEW FILE --- /* * BK Id: SCCS/s.start.c 1.8 07/25/01 18:13:07 trini */ /* * Copyright (C) Paul Mackerras 1997. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version * 2 of the License, or (at your option) any later version. */ #include <stdarg.h> int (*prom)(); void *chosen_handle; void *stdin; void *stdout; void *stderr; void exit(void); void *finddevice(const char *name); int getprop(void *phandle, const char *name, void *buf, int buflen); void printk(char *fmt, ...); extern void chrpboot(int a1, int a2, void *prom); extern int strlen(const char *s); void start(int a1, int a2, void *promptr) { prom = (int (*)()) promptr; chosen_handle = finddevice("/chosen"); if (chosen_handle == (void *) -1) exit(); if (getprop(chosen_handle, "stdout", &stdout, sizeof(stdout)) != 4) exit(); stderr = stdout; if (getprop(chosen_handle, "stdin", &stdin, sizeof(stdin)) != 4) exit(); chrpboot(a1, a2, promptr); for (;;) exit(); } int write(void *handle, void *ptr, int nb) { struct prom_args { char *service; int nargs; int nret; void *ihandle; void *addr; int len; int actual; } args; args.service = "write"; args.nargs = 3; args.nret = 1; args.ihandle = handle; args.addr = ptr; args.len = nb; args.actual = -1; (*prom)(&args); return args.actual; } int read(void *handle, void *ptr, int nb) { struct prom_args { char *service; int nargs; int nret; void *ihandle; void *addr; int len; int actual; } args; args.service = "read"; args.nargs = 3; args.nret = 1; args.ihandle = handle; args.addr = ptr; args.len = nb; args.actual = -1; (*prom)(&args); return args.actual; } void exit(void) { struct prom_args { char *service; } args; for (;;) { args.service = "exit"; (*prom)(&args); } } void pause(void) { struct prom_args { char *service; } args; args.service = "enter"; (*prom)(&args); } void * finddevice(const char *name) { struct prom_args { char *service; int nargs; int nret; const char *devspec; void *phandle; } args; args.service = "finddevice"; args.nargs = 1; args.nret = 1; args.devspec = name; args.phandle = (void *) -1; (*prom)(&args); return args.phandle; } void * claim(unsigned int virt, unsigned int size, unsigned int align) { struct prom_args { char *service; int nargs; int nret; unsigned int virt; unsigned int size; unsigned int align; void *ret; } args; args.service = "claim"; args.nargs = 3; args.nret = 1; args.virt = virt; args.size = size; args.align = align; (*prom)(&args); return args.ret; } int getprop(void *phandle, const char *name, void *buf, int buflen) { struct prom_args { char *service; int nargs; int nret; void *phandle; const char *name; void *buf; int buflen; int size; } args; args.service = "getprop"; args.nargs = 4; args.nret = 1; args.phandle = phandle; args.name = name; args.buf = buf; args.buflen = buflen; args.size = -1; (*prom)(&args); return args.size; } int putc(int c, void *f) { char ch = c; if (c == '\n') putc('\r', f); return write(f, &ch, 1) == 1? c: -1; } int putchar(int c) { return putc(c, stdout); } int fputs(char *str, void *f) { int n = strlen(str); return write(f, str, n) == n? 0: -1; } int readchar() { char ch; for (;;) { switch (read(stdin, &ch, 1)) { case 1: return ch; case -1: printk("read(stdin) returned -1\r\n"); return -1; } } } static char line[256]; static char *lineptr; static int lineleft; int getchar(void) { int c; if (lineleft == 0) { lineptr = line; for (;;) { c = readchar(); if (c == -1 || c == 4) break; if (c == '\r' || c == '\n') { *lineptr++ = '\n'; putchar('\n'); break; } switch (c) { case 0177: case '\b': if (lineptr > line) { putchar('\b'); putchar(' '); putchar('\b'); --lineptr; } break; case 'U' & 0x1F: while (lineptr > line) { putchar('\b'); putchar(' '); putchar('\b'); --lineptr; } break; default: if (lineptr >= &line[sizeof(line) - 1]) putchar('\a'); else { putchar(c); *lineptr++ = c; } } } lineleft = lineptr - line; lineptr = line; } if (lineleft == 0) return -1; --lineleft; return *lineptr++; } extern int vsprintf(char *buf, const char *fmt, va_list args); static char sprint_buf[1024]; void printk(char *fmt, ...) { va_list args; int n; va_start(args, fmt); n = vsprintf(sprint_buf, fmt, args); va_end(args); write(stdout, sprint_buf, n); } int printf(char *fmt, ...) { va_list args; int n; va_start(args, fmt); n = vsprintf(sprint_buf, fmt, args); va_end(args); write(stdout, sprint_buf, n); return n; } |
From: Andy P. <at...@us...> - 2002-04-10 18:39:12
|
Update of /cvsroot/linux-vax/kernel-2.4/arch/m68k In directory usw-pr-cvs1:/tmp/cvs-serv13561/m68k Modified Files: Makefile config.in vmlinux-sun3.lds vmlinux.lds Log Message: synch 2.4.15 commit 37 Index: Makefile =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/m68k/Makefile,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 --- Makefile 14 Jan 2001 19:33:57 -0000 1.1.1.1 +++ Makefile 10 Apr 2002 14:34:32 -0000 1.2 @@ -110,8 +110,8 @@ endif ifdef CONFIG_SUN3X -CORE_FILES := $(CORE_FILES) arch/m68k/sun3x/sun3x.o -SUBDIRS := $(SUBDIRS) arch/m68k/sun3x +CORE_FILES := $(CORE_FILES) arch/m68k/sun3x/sun3x.o arch/m68k/sun3/sun3.o +SUBDIRS := $(SUBDIRS) arch/m68k/sun3x arch/m68k/sun3 endif ifdef CONFIG_SUN3 Index: config.in =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/m68k/config.in,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 --- config.in 14 Jan 2001 19:34:00 -0000 1.1.1.1 +++ config.in 10 Apr 2002 14:34:33 -0000 1.2 @@ -4,6 +4,8 @@ # define_bool CONFIG_UID16 y +define_bool CONFIG_RWSEM_GENERIC_SPINLOCK y +define_bool CONFIG_RWSEM_XCHGADD_ALGORITHM n mainmenu_name "Linux/68k Kernel Configuration" @@ -53,8 +55,8 @@ if [ "$CONFIG_HP300" = "y" ]; then bool ' DIO bus support' CONFIG_DIO fi -bool 'Sun3 support' CONFIG_SUN3 bool 'Sun3x support' CONFIG_SUN3X +bool 'Sun3 support' CONFIG_SUN3 bool 'Q40/Q60 support' CONFIG_Q40 @@ -110,7 +112,7 @@ bool 'Support for ST-RAM as swap space' CONFIG_STRAM_SWAP bool 'ST-RAM statistics in /proc' CONFIG_STRAM_PROC fi -if [ "$CONFIG_AMIGA" = "y" -o "$CONFIG_ATARI" = "y" ]; then +if [ "$CONFIG_AMIGA" = "y" -o "$CONFIG_ATARI" = "y" -o "$CONFIG_Q40" = "y" ]; then bool 'Use power LED as a heartbeat' CONFIG_HEARTBEAT else if [ "$CONFIG_HP300" = "y" ]; then @@ -140,13 +142,17 @@ fi dep_tristate ' Parallel printer support' CONFIG_PRINTER $CONFIG_PARPORT if [ "$CONFIG_PRINTER" != "n" ]; then - bool ' Support IEEE1284 status readback' CONFIG_PRINTER_READBACK + bool ' Support IEEE1284 status readback' CONFIG_PARPORT_1284 fi fi source drivers/pci/Config.in source drivers/zorro/Config.in +if [ "$CONFIG_Q40" = "y" ]; then +source drivers/pnp/Config.in +fi + endmenu source drivers/mtd/Config.in @@ -190,7 +196,7 @@ int 'Maximum number of SCSI disks that can be loaded as modules' CONFIG_SD_EXTRA_DEVS 40 fi dep_tristate ' SCSI tape support' CONFIG_CHR_DEV_ST $CONFIG_SCSI - if [ "$CONFIG_BLK_DEV_ST" != "n" ]; then + if [ "$CONFIG_CHR_DEV_ST" != "n" ]; then int 'Maximum number of SCSI tapes that can be loaded as modules' CONFIG_ST_EXTRA_DEVS 2 fi dep_tristate ' SCSI CD-ROM support' CONFIG_BLK_DEV_SR $CONFIG_SCSI @@ -262,11 +268,11 @@ fi if [ "$CONFIG_SUN3" = "y" ]; then - dep_tristate 'Sun3 NCR5380 SCSI' CONFIG_SUN3_SCSI $CONFIG_SCSI + dep_tristate 'Sun3 NCR5380 OBIO SCSI' CONFIG_SUN3_SCSI $CONFIG_SCSI fi if [ "$CONFIG_SUN3X" = "y" ]; then - bool 'ESP SCSI driver' CONFIG_SUN3X_ESP + bool 'Sun3x ESP SCSI' CONFIG_SUN3X_ESP fi endmenu @@ -336,6 +342,9 @@ if [ "$CONFIG_SUN3" = "y" -o "$CONFIG_SUN3X" = "y" ]; then tristate ' Sun3/Sun3x on-board LANCE support' CONFIG_SUN3LANCE fi + if [ "$CONFIG_SUN3" = "y" ]; then + tristate ' Sun3 on-board Intel 82586 support' CONFIG_SUN3_82586 + fi if [ "$CONFIG_HP300" = "y" ]; then bool ' HP on-board LANCE support' CONFIG_HPLANCE fi @@ -365,7 +374,6 @@ if [ "$CONFIG_SERIAL_EXTENDED" = "y" ]; then bool ' Support more than 4 serial ports' CONFIG_SERIAL_MANY_PORTS bool ' Support for sharing serial interrupts' CONFIG_SERIAL_SHARE_IRQ -# bool ' Autodetect IRQ - do not yet enable !!' CONFIG_SERIAL_DETECT_IRQ bool ' Support special multiport boards' CONFIG_SERIAL_MULTIPORT bool ' Support the Bell Technologies HUB6 card' CONFIG_HUB6 fi @@ -449,16 +457,16 @@ else define_bool CONFIG_SUN3X_ZS n fi -dep_bool ' Sun keyboard support' CONFIG_SUN_KEYBOARD $CONFIG_SUN3X_ZS -dep_bool ' Sun mouse support' CONFIG_SUN_MOUSE $CONFIG_SUN3X_ZS -if [ "$CONFIG_SUN_MOUSE" = "y" ]; then - define_bool CONFIG_BUSMOUSE y -fi if [ "$CONFIG_SUN3X_ZS" = "y" ]; then + define_bool CONFIG_SUN_KEYBOARD y + define_bool CONFIG_SUN_MOUSE y + define_bool CONFIG_BUSMOUSE y define_bool CONFIG_SBUS y define_bool CONFIG_SBUSCHAR y define_bool CONFIG_SUN_SERIAL y else + define_bool CONFIG_SUN_KEYBOARD n + define_bool CONFIG_SUN_MOUSE n define_bool CONFIG_SBUS n fi @@ -487,8 +495,10 @@ fi fi if [ "$CONFIG_APOLLO" = "y" ]; then - bool 'Support for DN serial port (dummy)' CONFIG_SERIAL + bool 'Support for DN serial port (dummy)' CONFIG_DN_SERIAL bool 'Support for serial port console' CONFIG_SERIAL_CONSOLE + + define_tristate CONFIG_SERIAL $CONFIG_DN_SERIAL fi bool 'Support for user serial device modules' CONFIG_USERIAL bool 'Watchdog Timer Support' CONFIG_WATCHDOG @@ -504,9 +514,6 @@ else bool 'Generic /dev/rtc emulation' CONFIG_GEN_RTC fi -fi -if [ "$CONFIG_Q40" = "y" ]; then - bool 'Q40 Real Time Clock Support' CONFIG_Q40RTC fi bool 'Unix98 PTY support' CONFIG_UNIX98_PTYS if [ "$CONFIG_UNIX98_PTYS" = "y" ]; then Index: vmlinux-sun3.lds =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/m68k/vmlinux-sun3.lds,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 --- vmlinux-sun3.lds 14 Jan 2001 19:34:01 -0000 1.1.1.1 +++ vmlinux-sun3.lds 10 Apr 2002 14:34:33 -0000 1.2 @@ -20,6 +20,7 @@ .data : { /* Data */ *(.rodata) + *(.rodata.*) *(.data) CONSTRUCTORS . = ALIGN(16); /* Exception table */ Index: vmlinux.lds =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/m68k/vmlinux.lds,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 --- vmlinux.lds 14 Jan 2001 19:34:01 -0000 1.1.1.1 +++ vmlinux.lds 10 Apr 2002 14:34:33 -0000 1.2 @@ -12,7 +12,7 @@ *(.text.lock) /* out-of-line lock text */ *(.gnu.warning) } = 0x4e75 - .rodata : { *(.rodata) } + .rodata : { *(.rodata) *(.rodata.*) } .kstrtab : { *(.kstrtab) } . = ALIGN(16); /* Exception table */ |
From: Andy P. <at...@us...> - 2002-04-10 18:39:10
|
Update of /cvsroot/linux-vax/kernel-2.4/arch/m68k/apollo In directory usw-pr-cvs1:/tmp/cvs-serv13561/m68k/apollo Modified Files: config.c dn_ints.c Log Message: synch 2.4.15 commit 37 Index: config.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/m68k/apollo/config.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 --- config.c 14 Jan 2001 19:41:29 -0000 1.1.1.1 +++ config.c 10 Apr 2002 14:34:33 -0000 1.2 @@ -2,7 +2,6 @@ #include <linux/types.h> #include <linux/kernel.h> #include <linux/mm.h> -#include <linux/kd.h> #include <linux/tty.h> #include <linux/console.h> @@ -12,6 +11,7 @@ #include <asm/pgtable.h> #include <asm/apollohw.h> #include <asm/irq.h> +#include <asm/rtc.h> #include <asm/machdep.h> u_long sio01_physaddr; Index: dn_ints.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/m68k/apollo/dn_ints.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 --- dn_ints.c 14 Jan 2001 19:41:29 -0000 1.1.1.1 +++ dn_ints.c 10 Apr 2002 14:34:33 -0000 1.2 @@ -24,7 +24,7 @@ dn_irqs[irq-160].handler(irq,dn_irqs[irq-160].dev_id,fp); } else { - printk("spurious irq %d occured\n",irq); + printk("spurious irq %d occurred\n",irq); } *(volatile unsigned char *)(pica)=0x20; |
From: Andy P. <at...@us...> - 2002-04-10 18:38:57
|
Update of /cvsroot/linux-vax/kernel-2.4/arch/arm/mach-ebsa110 In directory usw-pr-cvs1:/tmp/cvs-serv24336/arm/mach-ebsa110 Added Files: Makefile arch.c hardware.h io.c irq.c leds.c mm.c time.c Log Message: synch 2.4.15 commit 32 --- NEW FILE --- # # Makefile for the linux kernel. # # Note! Dependencies are done automagically by 'make dep', which also # removes any old dependencies. DON'T put your own dependencies here # unless it's something special (ie not a .c file). USE_STANDARD_AS_RULE := true O_TARGET := ebsa110.o # Object file lists. obj-y := arch.o io.o irq.o mm.o time.o obj-m := obj-n := obj- := export-objs := io.o obj-$(CONFIG_LEDS) += leds.o include $(TOPDIR)/Rules.make --- NEW FILE --- /* * linux/arch/arm/mach-ebsa110/arch.c * * Architecture specific fixups. */ #include <linux/tty.h> #include <linux/delay.h> #include <linux/pm.h> #include <linux/init.h> #include <asm/elf.h> #include <asm/setup.h> #include <asm/mach-types.h> #include <asm/mach/arch.h> #include <asm/hardware/dec21285.h> extern void ebsa110_map_io(void); extern void ebsa110_init_irq(void); MACHINE_START(EBSA110, "EBSA110") MAINTAINER("Russell King") BOOT_MEM(0x00000000, 0xe0000000, 0xe0000000) BOOT_PARAMS(0x00000400) DISABLE_PARPORT(0) DISABLE_PARPORT(2) SOFT_REBOOT MAPIO(ebsa110_map_io) INITIRQ(ebsa110_init_irq) MACHINE_END --- NEW FILE --- /* * linux/arch/arm/mach-ebsa110/hardware.h * * Copyright (C) 2001 Russell King * * Local hardware definitions. */ #ifndef HARDWARE_H #define HARDWARE_H #define IRQ_MASK 0xfe000000 /* read */ #define IRQ_MSET 0xfe000000 /* write */ #define IRQ_STAT 0xff000000 /* read */ #define IRQ_MCLR 0xff000000 /* write */ #endif --- NEW FILE --- /* * linux/arch/arm/mach-ebsa110/isamem.c * * Copyright (C) 2001 Russell King * * Perform "ISA" memory and IO accesses. The EBSA110 has some "peculiarities" * in the way it handles accesses to odd IO ports on 16-bit devices. These * devices have their D0-D15 lines connected to the processors D0-D15 lines. * Since they expect all byte IO operations to be performed on D0-D7, and the * StrongARM expects to transfer the byte to these odd addresses on D8-D15, * we must use a trick to get the required behaviour. * * The trick employed here is to use long word stores to odd address -1. The * glue logic picks this up as a "trick" access, and asserts the LSB of the * peripherals address bus, thereby accessing the odd IO port. Meanwhile, the * StrongARM transfers its data on D0-D7 as expected. * * Things get more interesting on the pass-1 EBSA110 - the PCMCIA controller * wiring was screwed in such a way that it had limited memory space access. * Luckily, the work-around for this is not too horrible. See * __isamem_convert_addr for the details. */ #include <linux/module.h> #include <linux/kernel.h> #include <linux/types.h> #include <asm/io.h> #include <asm/page.h> static u32 __isamem_convert_addr(void *addr) { u32 ret, a = (u32) addr; /* * The PCMCIA controller is wired up as follows: * +---------+---------+---------+---------+---------+---------+ * PCMCIA | 2 2 2 2 | 1 1 1 1 | 1 1 1 1 | 1 1 | | | * | 3 2 1 0 | 9 8 7 6 | 5 4 3 2 | 1 0 9 8 | 7 6 5 4 | 3 2 1 0 | * +---------+---------+---------+---------+---------+---------+ * CPU | 2 2 2 2 | 2 1 1 1 | 1 1 1 1 | 1 1 1 | | | * | 4 3 2 1 | 0 9 9 8 | 7 6 5 4 | 3 2 0 9 | 8 7 6 5 | 4 3 2 x | * +---------+---------+---------+---------+---------+---------+ * * This means that we can access PCMCIA regions as follows: * 0x*10000 -> 0x*1ffff * 0x*70000 -> 0x*7ffff * 0x*90000 -> 0x*9ffff * 0x*f0000 -> 0x*fffff */ ret = (a & 0xf803fe) << 1; ret |= (a & 0x03fc00) << 2; ret += 0xe8000000; if ((a & 0x20000) == (a & 0x40000) >> 1) return ret; BUG(); return 0; } /* * read[bwl] and write[bwl] */ u8 __readb(void *addr) { u32 ret, a = __isamem_convert_addr(addr); if ((int)addr & 1) ret = __arch_getl(a); else ret = __arch_getb(a); return ret; } u16 __readw(void *addr) { u32 a = __isamem_convert_addr(addr); if ((int)addr & 1) BUG(); return __arch_getw(a); } u32 __readl(void *addr) { u32 ret, a = __isamem_convert_addr(addr); if ((int)addr & 3) BUG(); ret = __arch_getw(a); ret |= __arch_getw(a + 4) << 16; return ret; } EXPORT_SYMBOL(__readb); EXPORT_SYMBOL(__readw); EXPORT_SYMBOL(__readl); void __writeb(u8 val, void *addr) { u32 a = __isamem_convert_addr(addr); if ((int)addr & 1) __arch_putl(val, a); else __arch_putb(val, a); } void __writew(u16 val, void *addr) { u32 a = __isamem_convert_addr(addr); if ((int)addr & 1) BUG(); __arch_putw(val, a); } void __writel(u32 val, void *addr) { u32 a = __isamem_convert_addr(addr); if ((int)addr & 3) BUG(); __arch_putw(val, a); __arch_putw(val >> 16, a + 4); } EXPORT_SYMBOL(__writeb); EXPORT_SYMBOL(__writew); EXPORT_SYMBOL(__writel); #define SUPERIO_PORT(p) \ (((p) >> 3) == (0x3f8 >> 3) || \ ((p) >> 3) == (0x2f8 >> 3) || \ ((p) >> 3) == (0x378 >> 3)) u8 __inb(int port) { u32 ret; /* * The SuperIO registers use sane addressing techniques... */ if (SUPERIO_PORT(port)) ret = __arch_getb(ISAIO_BASE + (port << 2)); else { u32 a = ISAIO_BASE + ((port & ~1) << 1); /* * Shame nothing else does */ if (port & 1) ret = __arch_getl(a); else ret = __arch_getb(a); } return ret; } u16 __inw(int port) { u32 ret; /* * The SuperIO registers use sane addressing techniques... */ if (SUPERIO_PORT(port)) ret = __arch_getw(ISAIO_BASE + (port << 2)); else { u32 a = ISAIO_BASE + ((port & ~1) << 1); /* * Shame nothing else does */ if (port & 1) BUG(); ret = __arch_getw(a); } return ret; } u32 __inl(int port) { BUG(); return 0; } EXPORT_SYMBOL(__inb); EXPORT_SYMBOL(__inw); EXPORT_SYMBOL(__inl); void __outb(u8 val, int port) { /* * The SuperIO registers use sane addressing techniques... */ if (SUPERIO_PORT(port)) __arch_putb(val, ISAIO_BASE + (port << 2)); else { u32 a = ISAIO_BASE + ((port & ~1) << 1); /* * Shame nothing else does */ if (port & 1) __arch_putl(val, a); else __arch_putb(val, a); } } void __outw(u16 val, int port) { u32 off; /* * The SuperIO registers use sane addressing techniques... */ if (SUPERIO_PORT(port)) off = port << 2; else { off = (port & ~1) << 1; if (port & 1) BUG(); } __arch_putw(val, ISAIO_BASE + off); } void __outl(u32 val, int port) { BUG(); } EXPORT_SYMBOL(__outb); EXPORT_SYMBOL(__outw); EXPORT_SYMBOL(__outl); extern void __arch_writesb(unsigned long virt, const void *from, int len); extern void __arch_writesw(unsigned long virt, const void *from, int len); extern void __arch_writesl(unsigned long virt, const void *from, int len); extern void __arch_readsb(unsigned long virt, void *from, int len); extern void __arch_readsw(unsigned long virt, void *from, int len); extern void __arch_readsl(unsigned long virt, void *from, int len); void outsb(unsigned int port, const void *from, int len) { u32 off; if (SUPERIO_PORT(port)) off = port << 2; else { off = (port & ~1) << 1; if (port & 1) BUG(); } __raw_writesb(ISAIO_BASE + off, from, len); } void insb(unsigned int port, void *from, int len) { u32 off; if (SUPERIO_PORT(port)) off = port << 2; else { off = (port & ~1) << 1; if (port & 1) BUG(); } __raw_readsb(ISAIO_BASE + off, from, len); } EXPORT_SYMBOL(outsb); EXPORT_SYMBOL(insb); void outsw(unsigned int port, const void *from, int len) { u32 off; if (SUPERIO_PORT(port)) off = port << 2; else { off = (port & ~1) << 1; if (port & 1) BUG(); } __raw_writesw(ISAIO_BASE + off, from, len); } void insw(unsigned int port, void *from, int len) { u32 off; if (SUPERIO_PORT(port)) off = port << 2; else { off = (port & ~1) << 1; if (port & 1) BUG(); } __raw_readsw(ISAIO_BASE + off, from, len); } EXPORT_SYMBOL(outsw); EXPORT_SYMBOL(insw); void outsl(unsigned int port, const void *from, int len) { panic("outsl not supported on this architecture"); } void insl(unsigned int port, void *from, int len) { panic("insl not supported on this architecture"); } --- NEW FILE --- /* * linux/arch/arm/mach-ebsa110/irq.c * * Copyright (C) 1996-1998 Russell King * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. * * Changelog: * 22-08-1998 RMK Restructured IRQ routines */ #include <linux/init.h> #include <asm/mach/irq.h> #include <asm/hardware.h> #include <asm/io.h> #include <asm/irq.h> #include <asm/system.h> #include "hardware.h" static void ebsa110_mask_irq(unsigned int irq) { __raw_writeb(1 << irq, IRQ_MCLR); } static void ebsa110_unmask_irq(unsigned int irq) { __raw_writeb(1 << irq, IRQ_MSET); } void __init ebsa110_init_irq(void) { unsigned long flags; int irq; save_flags_cli (flags); __raw_writeb(0xff, IRQ_MCLR); __raw_writeb(0x55, IRQ_MSET); __raw_writeb(0x00, IRQ_MSET); if (__raw_readb(IRQ_MASK) != 0x55) while (1); __raw_writeb(0xff, IRQ_MCLR); /* clear all interrupt enables */ restore_flags (flags); for (irq = 0; irq < NR_IRQS; irq++) { irq_desc[irq].valid = 1; irq_desc[irq].probe_ok = 1; irq_desc[irq].mask_ack = ebsa110_mask_irq; irq_desc[irq].mask = ebsa110_mask_irq; irq_desc[irq].unmask = ebsa110_unmask_irq; } } --- NEW FILE --- /* * linux/arch/arm/mach-ebsa110/leds.c * * Copyright (C) 1998 Russell King * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. * * EBSA-110 LED control routines. We use the led as follows: * * - Red - toggles state every 50 timer interrupts */ #include <linux/module.h> #include <linux/spinlock.h> #include <linux/init.h> #include <asm/hardware.h> #include <asm/leds.h> #include <asm/system.h> #include <asm/mach-types.h> static spinlock_t leds_lock; static void ebsa110_leds_event(led_event_t ledevt) { unsigned long flags; spin_lock_irqsave(&leds_lock, flags); switch(ledevt) { case led_timer: *(volatile unsigned char *)SOFT_BASE ^= 128; break; default: break; } spin_unlock_irqrestore(&leds_lock, flags); } static int __init leds_init(void) { if (machine_is_ebsa110()) leds_event = ebsa110_leds_event; return 0; } __initcall(leds_init); --- NEW FILE --- /* * linux/arch/arm/mach-ebsa110/mm.c * * Copyright (C) 1998-1999 Russell King * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. * * Extra MM routines for the EBSA-110 architecture */ #include <linux/mm.h> #include <linux/init.h> #include <asm/hardware.h> #include <asm/pgtable.h> #include <asm/page.h> #include <asm/mach/map.h> #include "hardware.h" static struct map_desc ebsa110_io_desc[] __initdata = { /* * sparse external-decode ISAIO space */ { IRQ_STAT, TRICK4_PHYS, PGDIR_SIZE, DOMAIN_IO, 0, 1, 0, 0 }, /* IRQ_STAT/IRQ_MCLR */ { IRQ_MASK, TRICK3_PHYS, PGDIR_SIZE, DOMAIN_IO, 0, 1, 0, 0 }, /* IRQ_MASK/IRQ_MSET */ { SOFT_BASE, TRICK1_PHYS, PGDIR_SIZE, DOMAIN_IO, 0, 1, 0, 0 }, /* SOFT_BASE */ { PIT_BASE, TRICK0_PHYS, PGDIR_SIZE, DOMAIN_IO, 0, 1, 0, 0 }, /* PIT_BASE */ /* * self-decode ISAIO space */ { ISAIO_BASE, ISAIO_PHYS, ISAIO_SIZE, DOMAIN_IO, 0, 1, 0, 0 }, { ISAMEM_BASE, ISAMEM_PHYS, ISAMEM_SIZE, DOMAIN_IO, 0, 1, 0, 0 }, LAST_DESC }; void __init ebsa110_map_io(void) { iotable_init(ebsa110_io_desc); } --- NEW FILE --- /* * linux/arch/arm/mach-ebsa110/time.c * * Copyright (C) 2001 Russell King * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ #include <linux/sched.h> #include <linux/init.h> #include <asm/io.h> #define PIT_CTRL (PIT_BASE + 0x0d) #define PIT_T2 (PIT_BASE + 0x09) #define PIT_T1 (PIT_BASE + 0x05) #define PIT_T0 (PIT_BASE + 0x01) /* * This is the rate at which your MCLK signal toggles (in Hz) * This was measured on a 10 digit frequency counter sampling * over 1 second. */ #define MCLK 47894000 /* * This is the rate at which the PIT timers get clocked */ #define CLKBY7 (MCLK / 7) /* * If CLKBY7 is larger than this, then we must do software * division of the timer interrupt. */ #if CLKBY7 > 6553500 #define DIVISOR 2 #else #define DIVISOR 1 #endif /* * This is the counter value */ #define COUNT ((CLKBY7 + (DIVISOR * HZ / 2)) / (DIVISOR * HZ)) extern unsigned long (*gettimeoffset)(void); static unsigned long divisor; /* * Get the time offset from the system PIT. Note that if we have missed an * interrupt, then the PIT counter will roll over (ie, be negative). * This actually works out to be convenient. */ static unsigned long ebsa110_gettimeoffset(void) { unsigned long offset, count; __raw_writeb(0x40, PIT_CTRL); count = __raw_readb(PIT_T1); count |= __raw_readb(PIT_T1) << 8; /* * If count > COUNT, make the number negative. */ if (count > COUNT) count |= 0xffff0000; offset = COUNT * (DIVISOR - divisor); offset -= count; /* * `offset' is in units of timer counts. Convert * offset to units of microseconds. */ offset = offset * (1000000 / HZ) / (COUNT * DIVISOR); return offset; } int ebsa110_reset_timer(void) { u32 count; /* latch and read timer 1 */ __raw_writeb(0x40, PIT_CTRL); count = __raw_readb(PIT_T1); count |= __raw_readb(PIT_T1) << 8; count += COUNT; __raw_writeb(count & 0xff, PIT_T1); __raw_writeb(count >> 8, PIT_T1); if (divisor == 0) divisor = DIVISOR; divisor -= 1; return divisor; } void __init ebsa110_setup_timer(void) { /* * Timer 1, mode 2, LSB/MSB */ __raw_writeb(0x70, PIT_CTRL); __raw_writeb(COUNT & 0xff, PIT_T1); __raw_writeb(COUNT >> 8, PIT_T1); divisor = DIVISOR - 1; gettimeoffset = ebsa110_gettimeoffset; } |
From: Andy P. <at...@us...> - 2002-04-10 18:38:45
|
Update of /cvsroot/linux-vax/kernel-2.4/arch/mips/dec/boot In directory usw-pr-cvs1:/tmp/cvs-serv16972/mips/dec/boot Modified Files: Makefile ld.ecoff Log Message: synch 2.4.15 Index: Makefile =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/mips/dec/boot/Makefile,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 --- Makefile 14 Jan 2001 19:28:59 -0000 1.1.1.1 +++ Makefile 10 Apr 2002 14:38:05 -0000 1.2 @@ -18,7 +18,8 @@ all: dec_boot.o O_TARGET := dec_boot.o -O_OBJS := decstation.o + +obj-y := decstation.o clean: rm -f nbImage Index: ld.ecoff =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/mips/dec/boot/ld.ecoff,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 --- ld.ecoff 14 Jan 2001 19:29:00 -0000 1.1.1.1 +++ ld.ecoff 10 Apr 2002 14:38:05 -0000 1.2 @@ -13,7 +13,7 @@ } .rdata : { - *(.rodata .rdata) + *(.rodata .rodata.* .rdata) } .data : { |
Update of /cvsroot/linux-vax/kernel-2.4/arch/mips/jazz In directory usw-pr-cvs1:/tmp/cvs-serv16972/mips/jazz Modified Files: Makefile floppy-jazz.c int-handler.S jazzdma.c kbd-jazz.c reset.c rtc-jazz.c setup.c Added Files: irq.c Log Message: synch 2.4.15 --- NEW FILE --- /* * This file is subject to the terms and conditions of the GNU General Public * License. See the file "COPYING" in the main directory of this archive * for more details. * * Copyright (C) 1992 Linus Torvalds * Copyright (C) 1994 - 2001 Ralf Baechle */ #include <linux/delay.h> #include <linux/init.h> #include <linux/irq.h> #include <linux/interrupt.h> #include <linux/kernel.h> #include <linux/spinlock.h> #include <asm/io.h> #include <asm/jazz.h> extern asmlinkage void jazz_handle_int(void); /* * On systems with i8259-style interrupt controllers we assume for * driver compatibility reasons interrupts 0 - 15 to be the i8295 * interrupts even if the hardware uses a different interrupt numbering. */ void __init init_IRQ (void) { int i; set_except_vector(0, jazz_handle_int); init_generic_irq(); init_i8259_irqs(); /* Integrated i8259 */ #if 0 init_jazz_irq(); /* Actually we've got more interrupts to handle ... */ for (i = PCIMT_IRQ_INT2; i <= PCIMT_IRQ_ETHERNET; i++) { irq_desc[i].status = IRQ_DISABLED; irq_desc[i].action = 0; irq_desc[i].depth = 1; irq_desc[i].handler = &pciasic_irq_type; } #endif } Index: Makefile =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/mips/jazz/Makefile,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 --- Makefile 14 Jan 2001 19:28:17 -0000 1.1.1.1 +++ Makefile 10 Apr 2002 14:38:06 -0000 1.2 @@ -1,4 +1,3 @@ -# $Id$ # # Makefile for the Jazz family specific parts of the kernel # @@ -8,17 +7,17 @@ # .S.s: - $(CPP) $(CFLAGS) $< -o $*.s + $(CPP) $(CFLAGS) $< -o $@ .S.o: - $(CC) $(CFLAGS) -c $< -o $*.o + $(CC) $(CFLAGS) -c $< -o $@ all: jazz.o + O_TARGET := jazz.o -O_OBJS := int-handler.o jazzdma.o reset.o rtc-jazz.o setup.o floppy-jazz.o \ - kbd-jazz.o -int-handler.o: int-handler.S +obj-y := int-handler.o irq.o jazzdma.o reset.o rtc-jazz.o setup.o \ + floppy-jazz.o kbd-jazz.o -clean: +int-handler.o: int-handler.S include $(TOPDIR)/Rules.make Index: floppy-jazz.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/mips/jazz/floppy-jazz.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 Index: int-handler.S =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/mips/jazz/int-handler.S,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 Index: jazzdma.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/mips/jazz/jazzdma.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 --- jazzdma.c 14 Jan 2001 19:28:19 -0000 1.1.1.1 +++ jazzdma.c 10 Apr 2002 14:38:06 -0000 1.2 @@ -1,6 +1,4 @@ /* - * arch/mips/jazz/jazzdma.c - * * Mips Jazz DMA controller support * Copyright (C) 1995, 1996 by Andreas Busse * @@ -27,7 +25,7 @@ */ #define CONF_DEBUG_VDMA 0 -static unsigned long vdma_pagetable_start = 0; +static unsigned long vdma_pagetable_start; /* * Debug stuff @@ -44,16 +42,16 @@ */ static inline void vdma_pgtbl_init(void) { - int i; - unsigned long paddr = 0; - VDMA_PGTBL_ENTRY *pgtbl = (VDMA_PGTBL_ENTRY *)vdma_pagetable_start; - - for (i=0; i<VDMA_PGTBL_ENTRIES; i++) - { - pgtbl[i].frame = paddr; - pgtbl[i].owner = VDMA_PAGE_EMPTY; - paddr += VDMA_PAGESIZE; - } + int i; + unsigned long paddr = 0; + VDMA_PGTBL_ENTRY *pgtbl = + (VDMA_PGTBL_ENTRY *) vdma_pagetable_start; + + for (i = 0; i < VDMA_PGTBL_ENTRIES; i++) { + pgtbl[i].frame = paddr; + pgtbl[i].owner = VDMA_PAGE_EMPTY; + paddr += VDMA_PAGESIZE; + } } /* @@ -77,13 +75,12 @@ */ vdma_pgtbl_init(); - r4030_write_reg32(JAZZ_R4030_TRSTBL_BASE,PHYSADDR(vdma_pagetable_start)); + r4030_write_reg32(JAZZ_R4030_TRSTBL_BASE, + PHYSADDR(vdma_pagetable_start)); r4030_write_reg32(JAZZ_R4030_TRSTBL_LIM, VDMA_PGTBL_SIZE); r4030_write_reg32(JAZZ_R4030_TRSTBL_INV, 0); printk("VDMA: R4030 DMA pagetables initialized.\n"); - - return KSEG0ADDR(vdma_pagetable_end); } /* @@ -91,92 +88,90 @@ */ unsigned long vdma_alloc(unsigned long paddr, unsigned long size) { - VDMA_PGTBL_ENTRY *entry = (VDMA_PGTBL_ENTRY *)vdma_pagetable_start; - int first; - int last; - int pages; - unsigned int frame; - unsigned long laddr; - int i; - unsigned long flags; - - /* check arguments */ - - if (paddr > 0x1fffffff) - { - if (vdma_debug) - printk("vdma_alloc: Invalid physical address: %08lx\n",paddr); - return VDMA_ERROR; /* invalid physical address */ - } - if (size > 0x400000 || size == 0) - { - if (vdma_debug) - printk("vdma_alloc: Invalid size: %08lx\n",size); - return VDMA_ERROR; /* invalid physical address */ - } - - save_and_cli (flags); - /* - * Find free chunk - */ - pages = (size + 4095) >> 12; /* no. of pages to allocate */ - first = 0; - while (1) - { - while (entry[first].owner != VDMA_PAGE_EMPTY && - first < VDMA_PGTBL_ENTRIES) - first++; - if (first+pages > VDMA_PGTBL_ENTRIES) { /* nothing free */ - restore_flags (flags); - return VDMA_ERROR; - } - - last = first+1; - while (entry[last].owner == VDMA_PAGE_EMPTY && last-first < pages) - last++; - - if (last-first == pages) - break; /* found */ - } - - /* - * Mark pages as allocated - */ - laddr = (first << 12) + (paddr & (VDMA_PAGESIZE-1)); - frame = paddr & ~(VDMA_PAGESIZE-1); - - for (i=first; i<last; i++) - { - entry[i].frame = frame; - entry[i].owner = laddr; - frame += VDMA_PAGESIZE; - } - - /* - * Update translation table and return logical start address - */ - r4030_write_reg32(JAZZ_R4030_TRSTBL_INV,0); - - if (vdma_debug > 1) - printk("vdma_alloc: Allocated %d pages starting from %08lx\n", - pages,laddr); - - if (vdma_debug > 2) - { - printk("LADDR: "); - for (i=first; i<last; i++) - printk("%08x ",i<<12); - printk("\nPADDR: "); - for (i=first; i<last; i++) - printk("%08x ",entry[i].frame); - printk("\nOWNER: "); - for (i=first; i<last; i++) - printk("%08x ",entry[i].owner); - printk("\n"); - } - - restore_flags(flags); - return laddr; + VDMA_PGTBL_ENTRY *entry = + (VDMA_PGTBL_ENTRY *) vdma_pagetable_start; + int first; + int last; + int pages; + unsigned int frame; + unsigned long laddr; + int i; + unsigned long flags; + + /* check arguments */ + + if (paddr > 0x1fffffff) { + if (vdma_debug) + printk("vdma_alloc: Invalid physical address: %08lx\n", + paddr); + return VDMA_ERROR; /* invalid physical address */ + } + if (size > 0x400000 || size == 0) { + if (vdma_debug) + printk("vdma_alloc: Invalid size: %08lx\n", size); + return VDMA_ERROR; /* invalid physical address */ + } + + save_and_cli(flags); + /* + * Find free chunk + */ + pages = (size + 4095) >> 12; /* no. of pages to allocate */ + first = 0; + while (1) { + while (entry[first].owner != VDMA_PAGE_EMPTY && + first < VDMA_PGTBL_ENTRIES) first++; + if (first + pages > VDMA_PGTBL_ENTRIES) { /* nothing free */ + restore_flags(flags); + return VDMA_ERROR; + } + + last = first + 1; + while (entry[last].owner == VDMA_PAGE_EMPTY + && last - first < pages) + last++; + + if (last - first == pages) + break; /* found */ + } + + /* + * Mark pages as allocated + */ + laddr = (first << 12) + (paddr & (VDMA_PAGESIZE - 1)); + frame = paddr & ~(VDMA_PAGESIZE - 1); + + for (i = first; i < last; i++) { + entry[i].frame = frame; + entry[i].owner = laddr; + frame += VDMA_PAGESIZE; + } + + /* + * Update translation table and return logical start address + */ + r4030_write_reg32(JAZZ_R4030_TRSTBL_INV, 0); + + if (vdma_debug > 1) + printk + ("vdma_alloc: Allocated %d pages starting from %08lx\n", + pages, laddr); + + if (vdma_debug > 2) { + printk("LADDR: "); + for (i = first; i < last; i++) + printk("%08x ", i << 12); + printk("\nPADDR: "); + for (i = first; i < last; i++) + printk("%08x ", entry[i].frame); + printk("\nOWNER: "); + for (i = first; i < last; i++) + printk("%08x ", entry[i].owner); + printk("\n"); + } + + restore_flags(flags); + return laddr; } /* @@ -186,102 +181,103 @@ */ int vdma_free(unsigned long laddr) { - VDMA_PGTBL_ENTRY *pgtbl = (VDMA_PGTBL_ENTRY *)vdma_pagetable_start; - int i; + VDMA_PGTBL_ENTRY *pgtbl = + (VDMA_PGTBL_ENTRY *) vdma_pagetable_start; + int i; + + i = laddr >> 12; + + if (pgtbl[i].owner != laddr) { + printk + ("vdma_free: trying to free other's dma pages, laddr=%8lx\n", + laddr); + return -1; + } + + while (pgtbl[i].owner == laddr && i < VDMA_PGTBL_ENTRIES) { + pgtbl[i].owner = VDMA_PAGE_EMPTY; + i++; + } - i = laddr >> 12; + if (vdma_debug > 1) + printk("vdma_free: freed %ld pages starting from %08lx\n", + i - (laddr >> 12), laddr); - if (pgtbl[i].owner != laddr) - { - printk("vdma_free: trying to free other's dma pages, laddr=%8lx\n", - laddr); - return -1; - } - - while (pgtbl[i].owner == laddr && i < VDMA_PGTBL_ENTRIES) - { - pgtbl[i].owner = VDMA_PAGE_EMPTY; - i++; - } - - if (vdma_debug > 1) - printk("vdma_free: freed %ld pages starting from %08lx\n", - i-(laddr>>12),laddr); - - return 0; + return 0; } /* * Map certain page(s) to another physical address. * Caller must have allocated the page(s) before. */ -int vdma_remap(unsigned long laddr, unsigned long paddr, unsigned long size) +int vdma_remap(unsigned long laddr, unsigned long paddr, + unsigned long size) { - VDMA_PGTBL_ENTRY *pgtbl = (VDMA_PGTBL_ENTRY *)vdma_pagetable_start; - int first, pages, npages; + VDMA_PGTBL_ENTRY *pgtbl = + (VDMA_PGTBL_ENTRY *) vdma_pagetable_start; + int first, pages, npages; + + if (laddr > 0xffffff) { + if (vdma_debug) + printk + ("vdma_map: Invalid logical address: %08lx\n", + laddr); + return -EINVAL; /* invalid logical address */ + } + if (paddr > 0x1fffffff) { + if (vdma_debug) + printk + ("vdma_map: Invalid physical address: %08lx\n", + paddr); + return -EINVAL; /* invalid physical address */ + } + + npages = pages = + (((paddr & (VDMA_PAGESIZE - 1)) + size) >> 12) + 1; + first = laddr >> 12; + if (vdma_debug) + printk("vdma_remap: first=%x, pages=%x\n", first, pages); + if (first + pages > VDMA_PGTBL_ENTRIES) { + if (vdma_debug) + printk("vdma_alloc: Invalid size: %08lx\n", size); + return -EINVAL; + } + + paddr &= ~(VDMA_PAGESIZE - 1); + while (pages > 0 && first < VDMA_PGTBL_ENTRIES) { + if (pgtbl[first].owner != laddr) { + if (vdma_debug) + printk("Trying to remap other's pages.\n"); + return -EPERM; /* not owner */ + } + pgtbl[first].frame = paddr; + paddr += VDMA_PAGESIZE; + first++; + pages--; + } + + /* + * Update translation table + */ + r4030_write_reg32(JAZZ_R4030_TRSTBL_INV, 0); + + if (vdma_debug > 2) { + int i; + pages = (((paddr & (VDMA_PAGESIZE - 1)) + size) >> 12) + 1; + first = laddr >> 12; + printk("LADDR: "); + for (i = first; i < first + pages; i++) + printk("%08x ", i << 12); + printk("\nPADDR: "); + for (i = first; i < first + pages; i++) + printk("%08x ", pgtbl[i].frame); + printk("\nOWNER: "); + for (i = first; i < first + pages; i++) + printk("%08x ", pgtbl[i].owner); + printk("\n"); + } - if (laddr > 0xffffff) - { - if (vdma_debug) - printk("vdma_map: Invalid logical address: %08lx\n",laddr); - return -EINVAL; /* invalid logical address */ - } - if (paddr > 0x1fffffff) - { - if (vdma_debug) - printk("vdma_map: Invalid physical address: %08lx\n",paddr); - return -EINVAL; /* invalid physical address */ - } - - npages = pages = (((paddr & (VDMA_PAGESIZE-1)) + size) >> 12) + 1; - first = laddr >> 12; - if (vdma_debug) - printk("vdma_remap: first=%x, pages=%x\n",first,pages); - if (first+pages > VDMA_PGTBL_ENTRIES) - { - if (vdma_debug) - printk("vdma_alloc: Invalid size: %08lx\n",size); - return -EINVAL; - } - - paddr &= ~(VDMA_PAGESIZE-1); - while (pages > 0 && first < VDMA_PGTBL_ENTRIES) - { - if (pgtbl[first].owner != laddr) - { - if (vdma_debug) - printk("Trying to remap other's pages.\n"); - return -EPERM; /* not owner */ - } - pgtbl[first].frame = paddr; - paddr += VDMA_PAGESIZE; - first++; - pages--; - } - - /* - * Update translation table - */ - r4030_write_reg32(JAZZ_R4030_TRSTBL_INV,0); - - if (vdma_debug > 2) - { - int i; - pages = (((paddr & (VDMA_PAGESIZE-1)) + size) >> 12) + 1; - first = laddr >> 12; - printk("LADDR: "); - for (i=first; i<first+pages; i++) - printk("%08x ",i<<12); - printk("\nPADDR: "); - for (i=first; i<first+pages; i++) - printk("%08x ",pgtbl[i].frame); - printk("\nOWNER: "); - for (i=first; i<first+pages; i++) - printk("%08x ",pgtbl[i].owner); - printk("\n"); - } - - return 0; + return 0; } /* @@ -291,22 +287,22 @@ */ unsigned long vdma_phys2log(unsigned long paddr) { - int i; - int frame; - VDMA_PGTBL_ENTRY *pgtbl = (VDMA_PGTBL_ENTRY *)vdma_pagetable_start; - - frame = paddr & ~(VDMA_PAGESIZE-1); - - for (i=0; i<VDMA_PGTBL_ENTRIES; i++) - { - if (pgtbl[i].frame == frame) - break; - } + int i; + int frame; + VDMA_PGTBL_ENTRY *pgtbl = + (VDMA_PGTBL_ENTRY *) vdma_pagetable_start; + + frame = paddr & ~(VDMA_PAGESIZE - 1); + + for (i = 0; i < VDMA_PGTBL_ENTRIES; i++) { + if (pgtbl[i].frame == frame) + break; + } - if (i == VDMA_PGTBL_ENTRIES) - return ~0UL; + if (i == VDMA_PGTBL_ENTRIES) + return ~0UL; - return (i<<12) + (paddr & (VDMA_PAGESIZE-1)); + return (i << 12) + (paddr & (VDMA_PAGESIZE - 1)); } /* @@ -314,44 +310,47 @@ */ unsigned long vdma_log2phys(unsigned long laddr) { - VDMA_PGTBL_ENTRY *pgtbl = (VDMA_PGTBL_ENTRY *)vdma_pagetable_start; + VDMA_PGTBL_ENTRY *pgtbl = + (VDMA_PGTBL_ENTRY *) vdma_pagetable_start; - return pgtbl[laddr >> 12].frame + (laddr & (VDMA_PAGESIZE-1)); + return pgtbl[laddr >> 12].frame + (laddr & (VDMA_PAGESIZE - 1)); } - + /* * Print DMA statistics */ void vdma_stats(void) { - int i; - - printk("vdma_stats: CONFIG: %08x\n", - r4030_read_reg32(JAZZ_R4030_CONFIG)); - printk("R4030 translation table base: %08x\n", - r4030_read_reg32(JAZZ_R4030_TRSTBL_BASE)); - printk("R4030 translation table limit: %08x\n", - r4030_read_reg32(JAZZ_R4030_TRSTBL_LIM)); - printk("vdma_stats: INV_ADDR: %08x\n", - r4030_read_reg32(JAZZ_R4030_INV_ADDR)); - printk("vdma_stats: R_FAIL_ADDR: %08x\n", - r4030_read_reg32(JAZZ_R4030_R_FAIL_ADDR)); - printk("vdma_stats: M_FAIL_ADDR: %08x\n", - r4030_read_reg32(JAZZ_R4030_M_FAIL_ADDR)); - printk("vdma_stats: IRQ_SOURCE: %08x\n", - r4030_read_reg32(JAZZ_R4030_IRQ_SOURCE)); - printk("vdma_stats: I386_ERROR: %08x\n", - r4030_read_reg32(JAZZ_R4030_I386_ERROR)); - printk("vdma_chnl_modes: "); - for (i=0; i<8; i++) - printk("%04x ", - (unsigned)r4030_read_reg32(JAZZ_R4030_CHNL_MODE+(i<<5))); - printk("\n"); - printk("vdma_chnl_enables: "); - for (i=0; i<8; i++) - printk("%04x ", - (unsigned)r4030_read_reg32(JAZZ_R4030_CHNL_ENABLE+(i<<5))); - printk("\n"); + int i; + + printk("vdma_stats: CONFIG: %08x\n", + r4030_read_reg32(JAZZ_R4030_CONFIG)); + printk("R4030 translation table base: %08x\n", + r4030_read_reg32(JAZZ_R4030_TRSTBL_BASE)); + printk("R4030 translation table limit: %08x\n", + r4030_read_reg32(JAZZ_R4030_TRSTBL_LIM)); + printk("vdma_stats: INV_ADDR: %08x\n", + r4030_read_reg32(JAZZ_R4030_INV_ADDR)); + printk("vdma_stats: R_FAIL_ADDR: %08x\n", + r4030_read_reg32(JAZZ_R4030_R_FAIL_ADDR)); + printk("vdma_stats: M_FAIL_ADDR: %08x\n", + r4030_read_reg32(JAZZ_R4030_M_FAIL_ADDR)); + printk("vdma_stats: IRQ_SOURCE: %08x\n", + r4030_read_reg32(JAZZ_R4030_IRQ_SOURCE)); + printk("vdma_stats: I386_ERROR: %08x\n", + r4030_read_reg32(JAZZ_R4030_I386_ERROR)); + printk("vdma_chnl_modes: "); + for (i = 0; i < 8; i++) + printk("%04x ", + (unsigned) r4030_read_reg32(JAZZ_R4030_CHNL_MODE + + (i << 5))); + printk("\n"); + printk("vdma_chnl_enables: "); + for (i = 0; i < 8; i++) + printk("%04x ", + (unsigned) r4030_read_reg32(JAZZ_R4030_CHNL_ENABLE + + (i << 5))); + printk("\n"); } /* @@ -363,33 +362,35 @@ */ void vdma_enable(int channel) { - int status; - - if (vdma_debug) - printk("vdma_enable: channel %d\n",channel); - - /* - * Check error conditions first - */ - status = r4030_read_reg32(JAZZ_R4030_CHNL_ENABLE+(channel<<5)); - if (status & 0x400) - printk("VDMA: Channel %d: Address error!\n",channel); - if (status & 0x200) - printk("VDMA: Channel %d: Memory error!\n",channel); - - /* - * Clear all interrupt flags - */ - r4030_write_reg32(JAZZ_R4030_CHNL_ENABLE+(channel<<5), - r4030_read_reg32(JAZZ_R4030_CHNL_ENABLE+(channel<<5)) | - R4030_TC_INTR | R4030_MEM_INTR | R4030_ADDR_INTR); - - /* - * Enable the desired channel - */ - r4030_write_reg32(JAZZ_R4030_CHNL_ENABLE+(channel<<5), - r4030_read_reg32(JAZZ_R4030_CHNL_ENABLE+(channel<<5)) | - R4030_CHNL_ENABLE); + int status; + + if (vdma_debug) + printk("vdma_enable: channel %d\n", channel); + + /* + * Check error conditions first + */ + status = r4030_read_reg32(JAZZ_R4030_CHNL_ENABLE + (channel << 5)); + if (status & 0x400) + printk("VDMA: Channel %d: Address error!\n", channel); + if (status & 0x200) + printk("VDMA: Channel %d: Memory error!\n", channel); + + /* + * Clear all interrupt flags + */ + r4030_write_reg32(JAZZ_R4030_CHNL_ENABLE + (channel << 5), + r4030_read_reg32(JAZZ_R4030_CHNL_ENABLE + + (channel << 5)) | R4030_TC_INTR + | R4030_MEM_INTR | R4030_ADDR_INTR); + + /* + * Enable the desired channel + */ + r4030_write_reg32(JAZZ_R4030_CHNL_ENABLE + (channel << 5), + r4030_read_reg32(JAZZ_R4030_CHNL_ENABLE + + (channel << 5)) | + R4030_CHNL_ENABLE); } /* @@ -397,28 +398,34 @@ */ void vdma_disable(int channel) { - if (vdma_debug) - { - int status = r4030_read_reg32(JAZZ_R4030_CHNL_ENABLE+(channel<<5)); - - printk("vdma_disable: channel %d\n",channel); - printk("VDMA: channel %d status: %04x (%s) mode: " - "%02x addr: %06x count: %06x\n", - channel,status,((status & 0x600) ? "ERROR" : "OK"), - (unsigned)r4030_read_reg32(JAZZ_R4030_CHNL_MODE+(channel<<5)), - (unsigned)r4030_read_reg32(JAZZ_R4030_CHNL_ADDR+(channel<<5)), - (unsigned)r4030_read_reg32(JAZZ_R4030_CHNL_COUNT+(channel<<5))); - } - - r4030_write_reg32(JAZZ_R4030_CHNL_ENABLE+(channel<<5), - r4030_read_reg32(JAZZ_R4030_CHNL_ENABLE+(channel<<5)) & - ~R4030_CHNL_ENABLE); - - /* - * After disabling a DMA channel a remote bus register should be - * read to ensure that the current DMA acknowledge cycle is completed. - */ - *((volatile unsigned int *)JAZZ_DUMMY_DEVICE); + if (vdma_debug) { + int status = + r4030_read_reg32(JAZZ_R4030_CHNL_ENABLE + + (channel << 5)); + + printk("vdma_disable: channel %d\n", channel); + printk("VDMA: channel %d status: %04x (%s) mode: " + "%02x addr: %06x count: %06x\n", + channel, status, + ((status & 0x600) ? "ERROR" : "OK"), + (unsigned) r4030_read_reg32(JAZZ_R4030_CHNL_MODE + + (channel << 5)), + (unsigned) r4030_read_reg32(JAZZ_R4030_CHNL_ADDR + + (channel << 5)), + (unsigned) r4030_read_reg32(JAZZ_R4030_CHNL_COUNT + + (channel << 5))); + } + + r4030_write_reg32(JAZZ_R4030_CHNL_ENABLE + (channel << 5), + r4030_read_reg32(JAZZ_R4030_CHNL_ENABLE + + (channel << 5)) & + ~R4030_CHNL_ENABLE); + + /* + * After disabling a DMA channel a remote bus register should be + * read to ensure that the current DMA acknowledge cycle is completed. + */ + *((volatile unsigned int *) JAZZ_DUMMY_DEVICE); } /* @@ -432,56 +439,60 @@ */ void vdma_set_mode(int channel, int mode) { - if (vdma_debug) - printk("vdma_set_mode: channel %d, mode 0x%x\n", channel, mode); - - switch(channel) - { - case JAZZ_SCSI_DMA: /* scsi */ - r4030_write_reg32(JAZZ_R4030_CHNL_MODE+(channel<<5), + if (vdma_debug) + printk("vdma_set_mode: channel %d, mode 0x%x\n", channel, + mode); + + switch (channel) { + case JAZZ_SCSI_DMA: /* scsi */ + r4030_write_reg32(JAZZ_R4030_CHNL_MODE + (channel << 5), /* R4030_MODE_FAST | */ /* R4030_MODE_BURST | */ - R4030_MODE_INTR_EN | - R4030_MODE_WIDTH_16 | - R4030_MODE_ATIME_80); - break; - - case JAZZ_FLOPPY_DMA: /* floppy */ - r4030_write_reg32(JAZZ_R4030_CHNL_MODE+(channel<<5), + R4030_MODE_INTR_EN | + R4030_MODE_WIDTH_16 | + R4030_MODE_ATIME_80); + break; + + case JAZZ_FLOPPY_DMA: /* floppy */ + r4030_write_reg32(JAZZ_R4030_CHNL_MODE + (channel << 5), /* R4030_MODE_FAST | */ /* R4030_MODE_BURST | */ - R4030_MODE_INTR_EN | - R4030_MODE_WIDTH_8 | - R4030_MODE_ATIME_120); - break; - - case JAZZ_AUDIOL_DMA: - case JAZZ_AUDIOR_DMA: - printk("VDMA: Audio DMA not supported yet.\n"); - break; - - default: - printk("VDMA: vdma_set_mode() called with unsupported channel %d!\n", - channel); - } - - switch(mode) - { - case DMA_MODE_READ: - r4030_write_reg32(JAZZ_R4030_CHNL_ENABLE+(channel<<5), - r4030_read_reg32(JAZZ_R4030_CHNL_ENABLE+(channel<<5)) & - ~R4030_CHNL_WRITE); - break; - - case DMA_MODE_WRITE: - r4030_write_reg32(JAZZ_R4030_CHNL_ENABLE+(channel<<5), - r4030_read_reg32(JAZZ_R4030_CHNL_ENABLE+(channel<<5)) | - R4030_CHNL_WRITE); - break; - - default: - printk("VDMA: vdma_set_mode() called with unknown dma mode 0x%x\n",mode); - } + R4030_MODE_INTR_EN | + R4030_MODE_WIDTH_8 | + R4030_MODE_ATIME_120); + break; + + case JAZZ_AUDIOL_DMA: + case JAZZ_AUDIOR_DMA: + printk("VDMA: Audio DMA not supported yet.\n"); + break; + + default: + printk + ("VDMA: vdma_set_mode() called with unsupported channel %d!\n", + channel); + } + + switch (mode) { + case DMA_MODE_READ: + r4030_write_reg32(JAZZ_R4030_CHNL_ENABLE + (channel << 5), + r4030_read_reg32(JAZZ_R4030_CHNL_ENABLE + + (channel << 5)) & + ~R4030_CHNL_WRITE); + break; + + case DMA_MODE_WRITE: + r4030_write_reg32(JAZZ_R4030_CHNL_ENABLE + (channel << 5), + r4030_read_reg32(JAZZ_R4030_CHNL_ENABLE + + (channel << 5)) | + R4030_CHNL_WRITE); + break; + + default: + printk + ("VDMA: vdma_set_mode() called with unknown dma mode 0x%x\n", + mode); + } } /* @@ -489,10 +500,11 @@ */ void vdma_set_addr(int channel, long addr) { - if (vdma_debug) - printk("vdma_set_addr: channel %d, addr %lx\n",channel,addr); + if (vdma_debug) + printk("vdma_set_addr: channel %d, addr %lx\n", channel, + addr); - r4030_write_reg32(JAZZ_R4030_CHNL_ADDR+(channel<<5),addr); + r4030_write_reg32(JAZZ_R4030_CHNL_ADDR + (channel << 5), addr); } /* @@ -500,25 +512,28 @@ */ void vdma_set_count(int channel, int count) { - if (vdma_debug) - printk("vdma_set_count: channel %d, count %08x\n",channel,(unsigned)count); - - r4030_write_reg32(JAZZ_R4030_CHNL_COUNT+(channel<<5),count); + if (vdma_debug) + printk("vdma_set_count: channel %d, count %08x\n", channel, + (unsigned) count); + + r4030_write_reg32(JAZZ_R4030_CHNL_COUNT + (channel << 5), count); } - + /* * Get Residual */ int vdma_get_residue(int channel) { - int residual; - - residual = r4030_read_reg32(JAZZ_R4030_CHNL_COUNT+(channel<<5)); - - if (vdma_debug) - printk("vdma_get_residual: channel %d: residual=%d\n",channel,residual); - - return residual; + int residual; + + residual = + r4030_read_reg32(JAZZ_R4030_CHNL_COUNT + (channel << 5)); + + if (vdma_debug) + printk("vdma_get_residual: channel %d: residual=%d\n", + channel, residual); + + return residual; } /* @@ -526,12 +541,13 @@ */ int vdma_get_enable(int channel) { - int enable; - - enable = r4030_read_reg32(JAZZ_R4030_CHNL_ENABLE+(channel<<5)); - - if (vdma_debug) - printk("vdma_get_enable: channel %d: enable=%d\n",channel,enable); - - return enable; + int enable; + + enable = r4030_read_reg32(JAZZ_R4030_CHNL_ENABLE + (channel << 5)); + + if (vdma_debug) + printk("vdma_get_enable: channel %d: enable=%d\n", channel, + enable); + + return enable; } Index: kbd-jazz.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/mips/jazz/kbd-jazz.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 Index: reset.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/mips/jazz/reset.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 Index: rtc-jazz.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/mips/jazz/rtc-jazz.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 --- rtc-jazz.c 14 Jan 2001 19:28:22 -0000 1.1.1.1 +++ rtc-jazz.c 10 Apr 2002 14:38:06 -0000 1.2 @@ -1,12 +1,11 @@ -/* $Id$ - * +/* * This file is subject to the terms and conditions of the GNU General Public * License. See the file "COPYING" in the main directory of this archive * for more details. * * RTC routines for Jazz style attached Dallas chip. * - * Copyright (C) 1998 by Ralf Baechle + * Copyright (C) 1998, 2001 by Ralf Baechle */ #include <linux/mc146818rtc.h> #include <asm/io.h> Index: setup.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/mips/jazz/setup.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 --- setup.c 14 Jan 2001 19:28:20 -0000 1.1.1.1 +++ setup.c 10 Apr 2002 14:38:06 -0000 1.2 @@ -1,12 +1,12 @@ -/* $Id$ - * +/* * Setup pointers to hardware-dependent routines. * * This file is subject to the terms and conditions of the GNU General Public * License. See the file "COPYING" in the main directory of this archive * for more details. * - * Copyright (C) 1996, 1997, 1998 by Ralf Baechle + * Copyright (C) 1996, 1997, 1998, 2001 by Ralf Baechle + * Copyright (C) 2001 MIPS Technologies, Inc. */ #include <linux/config.h> #include <linux/hdreg.h> @@ -72,7 +72,7 @@ JAZZ_IE_FLOPPY); r4030_read_reg16(JAZZ_IO_IRQ_SOURCE); /* clear pending IRQs */ r4030_read_reg32(JAZZ_R4030_INVAL_ADDR); /* clear error bits */ - set_cp0_status(ST0_IM, IE_IRQ4 | IE_IRQ3 | IE_IRQ2 | IE_IRQ1); + change_cp0_status(ST0_IM, IE_IRQ4 | IE_IRQ3 | IE_IRQ2 | IE_IRQ1); /* set the clock to 100 Hz */ r4030_write_reg32(JAZZ_TIMER_INTERVAL, 9); request_region(0x20, 0x20, "pic1"); @@ -80,11 +80,6 @@ i8259_setup_irq(2, &irq2); } -int __init page_is_ram(unsigned long pagenr) -{ - return 1; -} - void __init jazz_setup(void) { add_wired_entry (0x02000017, 0x03c00017, 0xe0000000, PM_64K); @@ -93,6 +88,8 @@ irq_setup = jazz_irq_setup; mips_io_port_base = JAZZ_PORT_BASE; + if (mips_machtype == MACH_MIPS_MAGNUM_4000) + EISA_bus = 1; isa_slot_offset = 0xe3000000; request_region(0x00,0x20,"dma1"); request_region(0x40,0x20,"timer"); |
From: Andy P. <at...@us...> - 2002-04-10 18:38:43
|
Update of /cvsroot/linux-vax/kernel-2.4/arch/mips/dec/prom In directory usw-pr-cvs1:/tmp/cvs-serv16972/mips/dec/prom Modified Files: Makefile cmdline.c identify.c init.c memory.c Log Message: synch 2.4.15 Index: Makefile =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/mips/dec/prom/Makefile,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 Index: cmdline.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/mips/dec/prom/cmdline.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 --- cmdline.c 14 Jan 2001 19:29:00 -0000 1.1.1.1 +++ cmdline.c 10 Apr 2002 14:38:05 -0000 1.2 @@ -2,8 +2,6 @@ * cmdline.c: read the command line passed to us by the PROM. * * Copyright (C) 1998 Harald Koerfgen - * - * $Id$ */ #include <linux/init.h> #include <linux/kernel.h> @@ -19,7 +17,7 @@ extern int (*prom_printf)(char *, ...); #endif -char arcs_cmdline[CL_SIZE]; +char arcs_cmdline[COMMAND_LINE_SIZE]; void __init prom_init_cmdline(int argc, char **argv, unsigned long magic) { Index: identify.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/mips/dec/prom/identify.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 Index: init.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/mips/dec/prom/init.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 --- init.c 14 Jan 2001 19:29:01 -0000 1.1.1.1 +++ init.c 10 Apr 2002 14:38:05 -0000 1.2 @@ -2,12 +2,11 @@ * init.c: PROM library initialisation code. * * Copyright (C) 1998 Harald Koerfgen - * - * $Id$ */ #include <linux/init.h> #include <linux/config.h> #include <asm/bootinfo.h> +#include <asm/cpu.h> #include "prom.h" /* @@ -93,15 +92,17 @@ /* Were we compiled with the right CPU option? */ #if defined(CONFIG_CPU_R3000) - if ((mips_cputype == CPU_R4000SC) || (mips_cputype == CPU_R4400SC)) { + if ((mips_cpu.cputype == CPU_R4000SC) || + (mips_cpu.cputype == CPU_R4400SC)) { prom_printf("Sorry, this kernel is compiled for the wrong CPU type!\n"); prom_printf("Please recompile with \"CONFIG_CPU_R4x00 = y\"\n"); dec_machine_halt(); } #endif -#if defined(CONFIG_CPU_R4x00) - if ((mips_cputype == CPU_R3000) || (mips_cputype == CPU_R3000A)) { +#if defined(CONFIG_CPU_R4X00) + if ((mips_cpu.cputype == CPU_R3000) || + (mips_cpu.cputype == CPU_R3000A)) { prom_printf("Sorry, this kernel is compiled for the wrong CPU type!\n"); prom_printf("Please recompile with \"CONFIG_CPU_R3000 = y\"\n"); dec_machine_halt(); @@ -114,3 +115,4 @@ return 0; } + Index: memory.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/mips/dec/prom/memory.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 --- memory.c 14 Jan 2001 19:29:01 -0000 1.1.1.1 +++ memory.c 10 Apr 2002 14:38:05 -0000 1.2 @@ -2,6 +2,7 @@ * memory.c: memory initialisation code. * * Copyright (C) 1998 Harald Koerfgen, Frieder Streffer and Paul M. Antoine + * Copyright (C) 2000 Maciej W. Rozycki * * $Id$ */ @@ -14,6 +15,8 @@ #include <asm/addrspace.h> #include <asm/page.h> +#include <asm/bootinfo.h> + #include <asm/dec/machtype.h> #include "prom.h" @@ -31,12 +34,7 @@ extern int (*prom_printf)(char *, ...); #endif -volatile unsigned long mem_err = 0; /* So we know an error occured */ - -extern char _end; - -#define PFN_UP(x) (((x) + PAGE_SIZE-1) >> PAGE_SHIFT) -#define PFN_ALIGN(x) (((unsigned long)(x) + (PAGE_SIZE - 1)) & PAGE_MASK) +volatile unsigned long mem_err = 0; /* So we know an error occurred */ /* * Probe memory in 4MB chunks, waiting for an error to tell us we've fallen @@ -45,7 +43,7 @@ #define CHUNK_SIZE 0x400000 -unsigned long __init pmax_get_memory_size(void) +static void __init pmax_setup_memory_region(void) { volatile unsigned char *memory_page, dummy; char old_handler[0x80]; @@ -66,17 +64,19 @@ dummy = *memory_page; } memcpy((void *)(KSEG0 + 0x80), &old_handler, 0x80); - return (unsigned long)memory_page - KSEG1 - CHUNK_SIZE; + + add_memory_region(0, (unsigned long)memory_page - KSEG1 - CHUNK_SIZE, + BOOT_MEM_RAM); } /* * Use the REX prom calls to get hold of the memory bitmap, and thence * determine memory size. */ -unsigned long __init rex_get_memory_size(void) +static void __init rex_setup_memory_region(void) { int i, bitmap_size; - unsigned long mem_size = 0; + unsigned long mem_start = 0, mem_size = 0; memmap *bm; /* some free 64k */ @@ -88,46 +88,30 @@ /* FIXME: very simplistically only add full sets of pages */ if (bm->bitmap[i] == 0xff) mem_size += (8 * bm->pagesize); + else if (!mem_size) + mem_start += (8 * bm->pagesize); + else { + add_memory_region(mem_start, mem_size, BOOT_MEM_RAM); + mem_start += mem_size + (8 * bm->pagesize); + mem_size = 0; + } } - - return (mem_size); + if (mem_size) + add_memory_region(mem_start, mem_size, BOOT_MEM_RAM); } void __init prom_meminit(unsigned int magic) { - unsigned long free_start, free_end, start_pfn, bootmap_size; - unsigned long mem_size = 0; - if (magic != REX_PROM_MAGIC) - mem_size = pmax_get_memory_size(); + pmax_setup_memory_region(); else - mem_size = rex_get_memory_size(); - - free_start = PHYSADDR(PFN_ALIGN(&_end)); - free_end = mem_size; - start_pfn = PFN_UP((unsigned long)&_end); - -#ifdef PROM_DEBUG - prom_printf("free_start: 0x%08x\n", free_start); - prom_printf("free_end: 0x%08x\n", free_end); - prom_printf("start_pfn: 0x%08x\n", start_pfn); -#endif - - /* Register all the contiguous memory with the bootmem allocator - and free it. Be careful about the bootmem freemap. */ - bootmap_size = init_bootmem(start_pfn, mem_size >> PAGE_SHIFT); - free_bootmem(free_start + bootmap_size, free_end - free_start - bootmap_size); -} - -int __init page_is_ram(unsigned long pagenr) -{ - return 1; + rex_setup_memory_region(); } -void prom_free_prom_memory (void) +void __init prom_free_prom_memory (void) { unsigned long addr, end; - extern char _ftext; + extern char _ftext; /* * Free everything below the kernel itself but leave @@ -142,16 +126,16 @@ * XXX: save this address for use in dec_lance.c? */ if (IOASIC) - end = PHYSADDR(&_ftext) - 0x00020000; + end = __pa(&_ftext) - 0x00020000; else #endif - end = PHYSADDR(&_ftext); + end = __pa(&_ftext); addr = PAGE_SIZE; while (addr < end) { - ClearPageReserved(virt_to_page(addr)); - set_page_count(virt_to_page(addr), 1); - free_page(addr); + ClearPageReserved(virt_to_page(__va(addr))); + set_page_count(virt_to_page(__va(addr)), 1); + free_page((unsigned long)__va(addr)); addr += PAGE_SIZE; } |
From: Andy P. <at...@us...> - 2002-04-10 18:38:41
|
Update of /cvsroot/linux-vax/kernel-2.4/arch/ppc In directory usw-pr-cvs1:/tmp/cvs-serv25860/ppc Modified Files: Makefile config.in defconfig vmlinux.lds Log Message: synch 2.4.15 commit 43 Index: Makefile =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/ppc/Makefile,v retrieving revision 1.1.1.2 retrieving revision 1.2 diff -u -r1.1.1.2 -r1.2 --- Makefile 25 Feb 2001 23:15:18 -0000 1.1.1.2 +++ Makefile 10 Apr 2002 15:03:55 -0000 1.2 @@ -1,3 +1,5 @@ +# BK Id: SCCS/s.Makefile 1.23 09/18/01 11:19:05 paulus +# # This file is included by the global makefile so that you can add your own # architecture-specific flags and dependencies. Remember to do have actions # for "archclean" and "archdep" for cleaning up and making dependencies for @@ -12,6 +14,7 @@ # Rewritten by Cort Dougan and Paul Mackerras # +# Be sure to change PAGE_OFFSET in include/asm-ppc/page.h to match KERNELLOAD =0xc0000000 ifeq ($(shell uname -m),ppc) @@ -31,7 +34,7 @@ endif ifdef CONFIG_8xx -CFLAGS := $(CFLAGS) -mcpu=860 -I../8xx_io +CFLAGS := $(CFLAGS) -mcpu=860 endif ifdef CONFIG_PPC64BRIDGE @@ -50,12 +53,10 @@ ARCH_SUBDIRS = arch/ppc/kernel arch/ppc/mm arch/ppc/lib SUBDIRS := $(SUBDIRS) $(ARCH_SUBDIRS) -ARCHIVES := arch/ppc/kernel/kernel.o arch/ppc/mm/mm.o arch/ppc/lib/lib.o $(ARCHIVES) CORE_FILES := arch/ppc/kernel/kernel.o arch/ppc/mm/mm.o arch/ppc/lib/lib.o $(CORE_FILES) ifdef CONFIG_MATH_EMULATION SUBDIRS += arch/ppc/math-emu -ARCHIVES += arch/ppc/math-emu/math-emu.o CORE_FILES += arch/ppc/math-emu/math-emu.o endif @@ -65,10 +66,6 @@ endif MAKEBOOT = $(MAKE) -C arch/$(ARCH)/boot -MAKECOFFBOOT = $(MAKE) -C arch/$(ARCH)/coffboot -MAKECHRPBOOT = $(MAKE) -C arch/$(ARCH)/chrpboot -MAKEMBXBOOT = $(MAKE) -C arch/$(ARCH)/mbxboot -MAKETREEBOOT = $(MAKE) -C arch/$(ARCH)/treeboot ifdef CONFIG_8xx SUBDIRS += arch/ppc/8xx_io @@ -82,115 +79,29 @@ ifdef CONFIG_APUS SUBDIRS += arch/ppc/amiga -ARCHIVES += arch/ppc/amiga/amiga.o CORE_FILES += arch/ppc/amiga/amiga.o endif checks: @$(MAKE) -C arch/$(ARCH)/kernel checks -BOOT_TARGETS = zImage znetboot.initrd zImage.initrd - -ifdef CONFIG_4xx -$(BOOT_TARGETS): $(CHECKS) vmlinux - @$(MAKETREEBOOT) $@ -endif - -ifdef CONFIG_8xx -$(BOOT_TARGETS): $(CHECKS) vmlinux - @$(MAKECOFFBOOT) $@ - @$(MAKEMBXBOOT) $@ -endif - -ifdef CONFIG_6xx -ifndef CONFIG_8260 -$(BOOT_TARGETS): $(CHECKS) vmlinux - @$(MAKECOFFBOOT) $@ - @$(MAKEBOOT) $@ - @$(MAKECHRPBOOT) $@ +BOOT_TARGETS = zImage zImage.initrd znetboot znetboot.initrd -znetboot: $(CHECKS) vmlinux -ifdef CONFIG_ALL_PPC -ifdef CONFIG_SMP - cp -f vmlinux /tftpboot/vmlinux.smp -else - cp -f vmlinux /tftpboot/vmlinux -endif -endif - @$(MAKECOFFBOOT) $@ - @$(MAKEBOOT) $@ - @$(MAKECHRPBOOT) $@ -else -# 8260 is custom 6xx -$(BOOT_TARGETS): $(CHECKS) vmlinux - @$(MAKECOFFBOOT) $@ - @$(MAKEMBXBOOT) $@ -endif -endif +# All the instructions talk about "make bzImage". +bzImage: zImage -ifdef CONFIG_PPC64BRIDGE $(BOOT_TARGETS): $(CHECKS) vmlinux - @$(MAKECOFFBOOT) $@ @$(MAKEBOOT) $@ - @$(MAKECHRPBOOT) $@ -znetboot: $(CHECKS) vmlinux - cp -f vmlinux /tftpboot/vmlinux.64 - @$(MAKECOFFBOOT) $@ - @$(MAKEBOOT) $@ - @$(MAKECHRPBOOT) $@ -endif - -.PHONY: clean_config -clean_config: +%_config: arch/ppc/configs/%_defconfig rm -f .config arch/ppc/defconfig - -pmac_config: clean_config - cp -f arch/ppc/configs/pmac_defconfig arch/ppc/defconfig - -prep_config: clean_config - cp -f arch/ppc/configs/prep_defconfig arch/ppc/defconfig - -chrp_config: clean_config - cp -f arch/ppc/configs/chrp_defconfig arch/ppc/defconfig - -common_config: clean_config - cp -f arch/ppc/configs/common_defconfig arch/ppc/defconfig - -mbx_config: clean_config - cp -f arch/ppc/configs/mbx_defconfig arch/ppc/defconfig - -apus_config: clean_config - cp -f arch/ppc/configs/apus_defconfig arch/ppc/defconfig - -oak_config: clean_config - cp -f arch/ppc/configs/oak_defconfig arch/ppc/defconfig - -walnut_config: clean_config - cp -f arch/ppc/configs/walnut_defconfig arch/ppc/defconfig - -rpxlite_config: clean_config - cp -f arch/ppc/configs/rpxlite_defconfig arch/ppc/defconfig - -rpxcllf_config: clean_config - cp -f arch/ppc/configs/rpxcllf_defconfig arch/ppc/defconfig - -bseip_config: clean_config - cp -f arch/ppc/configs/bseip_defconfig arch/ppc/defconfig - -est8260_config: clean_config - cp -f arch/ppc/configs/est8260_defconfig arch/ppc/defconfig + cp -f arch/ppc/configs/$(@:config=defconfig) arch/ppc/defconfig archclean: rm -f arch/ppc/kernel/{mk_defs,ppc_defs.h,find_name,checks} - @$(MAKECOFFBOOT) clean @$(MAKEBOOT) clean - @$(MAKECHRPBOOT) clean - @$(MAKEMBXBOOT) clean - @$(MAKETREEBOOT) clean archmrproper: -archdep: +archdep: scripts/mkdep $(MAKEBOOT) fastdep - $(MAKECHRPBOOT) fastdep Index: config.in =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/ppc/config.in,v retrieving revision 1.1.1.2 retrieving revision 1.2 diff -u -r1.1.1.2 -r1.2 --- config.in 25 Feb 2001 23:15:18 -0000 1.1.1.2 +++ config.in 10 Apr 2002 15:03:55 -0000 1.2 @@ -1,8 +1,12 @@ -# $Id$ +# BK Id: SCCS/s.config.in 1.45 11/08/01 07:57:40 paulus +# # For a description of the syntax of this configuration file, # see Documentation/kbuild/config-language.txt. # define_bool CONFIG_UID16 n +define_bool CONFIG_RWSEM_GENERIC_SPINLOCK n +define_bool CONFIG_RWSEM_XCHGADD_ALGORITHM y +define_bool CONFIG_HAVE_DEC_LOCK y mainmenu_name "Linux/PowerPC Kernel Configuration" @@ -23,6 +27,7 @@ mainmenu_option next_comment comment 'Platform support' define_bool CONFIG_PPC y +define_bool CONFIG_PPC32 y choice 'Processor Type' \ "6xx/7xx/74xx/8260 CONFIG_6xx \ 4xx CONFIG_4xx \ @@ -39,6 +44,13 @@ define_bool CONFIG_ALL_PPC y fi +if [ "$CONFIG_6xx" = "y" -o "$CONFIG_POWER3" = "y" -o \ + "$CONFIG_POWER4" = "y" ]; then + define_bool CONFIG_PPC_STD_MMU y +else + define_bool CONFIG_PPC_STD_MMU n +fi + if [ "$CONFIG_8260" = "y" ]; then define_bool CONFIG_SERIAL_CONSOLE y bool 'Support for EST8260' CONFIG_EST8260 @@ -57,28 +69,38 @@ "RPX-Lite CONFIG_RPXLITE \ RPX-Classic CONFIG_RPXCLASSIC \ BSE-IP CONFIG_BSEIP \ - TQM8xxL CONFIG_TQM8xxL \ - TQM860L CONFIG_TQM860L \ - TQM860 CONFIG_TQM860 \ + FADS CONFIG_FADS \ + TQM823L CONFIG_TQM823L \ + TQM850L CONFIG_TQM850L \ + TQM855L CONFIG_TQM855L \ + TQM860L CONFIG_TQM860L \ + FPS850L CONFIG_FPS850L \ + TQM860 CONFIG_TQM860 \ + SPD823TS CONFIG_SPD823TS \ + IVMS8 CONFIG_IVMS8 \ + IVML24 CONFIG_IVML24 \ + SM850 CONFIG_SM850 \ MBX CONFIG_MBX \ WinCept CONFIG_WINCEPT" RPX-Lite - - if [ "$CONFIG_TQM8xxL" = "y" ]; then - bool 'FPS850 Mainboard' CONFIG_FPS850 + + if [ "$CONFIG_TQM823L" = "y" -o \ + "$CONFIG_TQM850L" = "y" -o \ + "$CONFIG_FPS850L" = "y" -o \ + "$CONFIG_TQM855L" = "y" -o \ + "$CONFIG_TQM860L" = "y" -o \ + "$CONFIG_SM850" = "y" ]; then + define_bool CONFIG_TQM8xxL y fi fi if [ "$CONFIG_6xx" = "y" -a "$CONFIG_8260" = "n" ]; then choice 'Machine Type' \ - "PowerMac/PReP/MTX/CHRP CONFIG_ALL_PPC \ - APUS CONFIG_APUS" PowerMac/PReP/MTX/CHRP -fi - -if [ "$CONFIG_PPC64BRIDGE" != "y" ]; then - bool 'Workarounds for PPC601 bugs' CONFIG_PPC601_SYNC_FIX + "CHRP/PowerMac/PReP CONFIG_ALL_PPC \ + Amiga-APUS CONFIG_APUS \ + Synergy-Gemini CONFIG_GEMINI" CHRP/PowerMac/PReP fi -if [ "$CONFIG_8xx" = "y" -o "$CONFIG_8260" = "y" ]; then +if [ "$CONFIG_PPC_STD_MMU" != "y" ]; then define_bool CONFIG_ALL_PPC n fi @@ -89,10 +111,11 @@ if [ "$CONFIG_6xx" = "y" -a "$CONFIG_8260" = "n" ];then bool 'AltiVec Support' CONFIG_ALTIVEC -fi - -if [ "$CONFIG_ALL_PPC" != "y" ];then - define_bool CONFIG_MACH_SPECIFIC y + bool 'Thermal Management Support' CONFIG_TAU + if [ "$CONFIG_TAU" = "y" ]; then + bool ' Interrupt driven TAU driver (DANGEROUS)' CONFIG_TAU_INT + bool ' Average high and low temp' CONFIG_TAU_AVERAGE + fi fi if [ "$CONFIG_4xx" = "y" -o "$CONFIG_8xx" = "y" ]; then @@ -105,7 +128,6 @@ comment 'General setup' bool 'High memory support (experimental)' CONFIG_HIGHMEM -bool 'Mac-on-Linux support' CONFIG_MOL define_bool CONFIG_ISA n define_bool CONFIG_EISA n @@ -114,15 +136,19 @@ # Yes MCA RS/6000s exist but Linux-PPC does not currently support any define_bool CONFIG_MCA n -if [ "$CONFIG_APUS" = "y" -o "$CONFIG_4xx" = "y" -o \ - "$CONFIG_8260" = "y" ]; then +if [ "$CONFIG_4xx" = "y" -o "$CONFIG_8260" = "y" ]; then define_bool CONFIG_PCI n else if [ "$CONFIG_8xx" = "y" ]; then bool 'QSpan PCI' CONFIG_PCI_QSPAN define_bool CONFIG_PCI $CONFIG_PCI_QSPAN else - define_bool CONFIG_PCI y + if [ "$CONFIG_APUS" = "y" ]; then + bool 'PCI for Permedia2' CONFIG_PCI_PERMEDIA + define_bool CONFIG_PCI $CONFIG_PCI_PERMEDIA + else + define_bool CONFIG_PCI y + fi fi fi @@ -151,8 +177,16 @@ source drivers/parport/Config.in -if [ "$CONFIG_4xx" != "y" -a "$CONFIG_8xx" != "y" ]; then - tristate 'Support for /dev/rtc' CONFIG_PPC_RTC +if [ "$CONFIG_4xx" != "y" ]; then + if [ "$CONFIG_APUS" != "y" ]; then + tristate 'Support for /dev/rtc' CONFIG_PPC_RTC + else + bool 'Generic /dev/rtc emulation' CONFIG_GEN_RTC + fi +fi + +if [ "$CONFIG_ALL_PPC" = "y" -a "$CONFIG_POWER3" = "n" ] ; then + bool 'Workarounds for PPC601 bugs' CONFIG_PPC601_SYNC_FIX fi if [ "$CONFIG_ALL_PPC" = "y" ]; then @@ -160,10 +194,11 @@ bool 'Support for RTAS (RunTime Abstraction Services) in /proc' CONFIG_PPC_RTAS bool 'Support for early boot text console (BootX or OpenFirmware only)' CONFIG_BOOTX_TEXT bool 'Support for PReP Residual Data' CONFIG_PREP_RESIDUAL - bool 'Default bootloader kernel arguments' CONFIG_CMDLINE_BOOL - if [ "$CONFIG_CMDLINE_BOOL" = "y" ] ; then - string 'Initial kernel command string' CONFIG_CMDLINE "console=ttyS0,9600 console=tty0 root=/dev/sda2" - fi +fi + +bool 'Default bootloader kernel arguments' CONFIG_CMDLINE_BOOL +if [ "$CONFIG_CMDLINE_BOOL" = "y" ] ; then + string 'Initial kernel command string' CONFIG_CMDLINE "console=ttyS0,9600 console=tty0 root=/dev/sda2" fi if [ "$CONFIG_APUS" = "y" ]; then @@ -173,12 +208,26 @@ define_bool CONFIG_AMIGAMOUSE y define_bool CONFIG_ABSTRACT_CONSOLE y define_bool CONFIG_FB y + define_bool CONFIG_MOUSE y + define_bool CONFIG_BUSMOUSE y + define_bool CONFIG_APUS_FAST_EXCEPT y + + if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then + bool 'Amiga 1200/600 PCMCIA support' CONFIG_AMIGA_PCMCIA + fi + tristate 'Amiga builtin serial support' CONFIG_AMIGA_BUILTIN_SERIAL - tristate 'Parallel printer support' CONFIG_M68K_PRINTER tristate 'GVP IO-Extender support' CONFIG_GVPIOEXT dep_tristate 'GVP IO-Extender parallel printer support' CONFIG_GVPIOEXT_LP $CONFIG_GVPIOEXT dep_tristate 'GVP IO-Extender PLIP support' CONFIG_GVPIOEXT_PLIP $CONFIG_GVPIOEXT tristate 'Multiface Card III serial support' CONFIG_MULTIFACE_III_TTY + if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then + tristate 'Commodore A2232 serial support (EXPERIMENTAL)' CONFIG_A2232 + fi + if [ "$CONFIG_AMIGA_PCMCIA" = "y" ]; then + tristate 'Hisoft Whippet PCMCIA serial support' CONFIG_WHIPPET_SERIAL + tristate 'PCMCIA NE2000 support' CONFIG_APNE + fi if [ "$CONFIG_AMIGA_BUILTIN_SERIAL" = "y" -o "$CONFIG_GVPIOEXT" = "y" -o \ "$CONFIG_MULTIFACE_III_TTY" = "y" ]; then bool 'Support for serial port console' CONFIG_SERIAL_CONSOLE @@ -299,6 +348,11 @@ bool ' Support for ADB keyboard (old driver)' CONFIG_ADB_KEYBOARD fi fi + # This is for drivers/macintosh/mac_hid.o, which is needed if the input + # layer is used. + if [ "$CONFIG_INPUT" != "n" ]; then + define_bool CONFIG_MAC_HID y + fi fi endmenu @@ -327,6 +381,10 @@ fi source drivers/usb/Config.in + +if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then + source net/bluetooth/Config.in +fi mainmenu_option next_comment comment 'Kernel hacking' Index: defconfig =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/ppc/defconfig,v retrieving revision 1.1.1.2 retrieving revision 1.2 diff -u -r1.1.1.2 -r1.2 --- defconfig 25 Feb 2001 23:15:18 -0000 1.1.1.2 +++ defconfig 10 Apr 2002 15:03:55 -0000 1.2 @@ -2,6 +2,8 @@ # Automatically generated make config: don't edit # # CONFIG_UID16 is not set +# CONFIG_RWSEM_GENERIC_SPINLOCK is not set +CONFIG_RWSEM_XCHGADD_ALGORITHM=y # # Code maturity level options @@ -19,23 +21,27 @@ # Platform support # CONFIG_PPC=y +CONFIG_PPC32=y CONFIG_6xx=y # CONFIG_4xx is not set # CONFIG_POWER3 is not set # CONFIG_POWER4 is not set # CONFIG_8xx is not set # CONFIG_8260 is not set +CONFIG_PPC_STD_MMU=y CONFIG_ALL_PPC=y # CONFIG_APUS is not set -CONFIG_PPC601_SYNC_FIX=y +# CONFIG_GEMINI is not set # CONFIG_SMP is not set CONFIG_ALTIVEC=y +CONFIG_TAU=y +# CONFIG_TAU_INT is not set +# CONFIG_TAU_AVERAGE is not set # # General setup # # CONFIG_HIGHMEM is not set -CONFIG_MOL=y # CONFIG_ISA is not set # CONFIG_EISA is not set # CONFIG_SBUS is not set @@ -62,6 +68,7 @@ # # CONFIG_PARPORT is not set CONFIG_PPC_RTC=y +CONFIG_PPC601_SYNC_FIX=y CONFIG_PROC_DEVICETREE=y CONFIG_PPC_RTAS=y CONFIG_BOOTX_TEXT=y @@ -104,8 +111,8 @@ # CONFIG_MD_RAID0 is not set # CONFIG_MD_RAID1 is not set # CONFIG_MD_RAID5 is not set +# CONFIG_MD_MULTIPATH is not set # CONFIG_BLK_DEV_LVM is not set -# CONFIG_LVM_PROC_FS is not set # # Networking options @@ -134,6 +141,7 @@ # CONFIG_IP_NF_CONNTRACK=m CONFIG_IP_NF_FTP=m +CONFIG_IP_NF_IRC=m # CONFIG_IP_NF_QUEUE is not set CONFIG_IP_NF_IPTABLES=m CONFIG_IP_NF_MATCH_LIMIT=m @@ -141,6 +149,9 @@ CONFIG_IP_NF_MATCH_MARK=m CONFIG_IP_NF_MATCH_MULTIPORT=m CONFIG_IP_NF_MATCH_TOS=m +CONFIG_IP_NF_MATCH_LENGTH=m +CONFIG_IP_NF_MATCH_TTL=m +CONFIG_IP_NF_MATCH_TCPMSS=m CONFIG_IP_NF_MATCH_STATE=m CONFIG_IP_NF_MATCH_UNCLEAN=m CONFIG_IP_NF_MATCH_OWNER=m @@ -151,14 +162,19 @@ CONFIG_IP_NF_NAT_NEEDED=y CONFIG_IP_NF_TARGET_MASQUERADE=m CONFIG_IP_NF_TARGET_REDIRECT=m +CONFIG_IP_NF_NAT_SNMP_BASIC=m +CONFIG_IP_NF_NAT_IRC=m +CONFIG_IP_NF_NAT_FTP=m # CONFIG_IP_NF_MANGLE is not set # CONFIG_IP_NF_TARGET_LOG is not set +CONFIG_IP_NF_TARGET_TCPMSS=m CONFIG_IP_NF_COMPAT_IPCHAINS=m CONFIG_IP_NF_NAT_NEEDED=y # CONFIG_IP_NF_COMPAT_IPFWADM is not set # CONFIG_IPV6 is not set # CONFIG_KHTTPD is not set # CONFIG_ATM is not set +# CONFIG_VLAN_8021Q is not set # # @@ -223,6 +239,7 @@ CONFIG_BLK_DEV_IDEPCI=y CONFIG_IDEPCI_SHARE_IRQ=y CONFIG_BLK_DEV_IDEDMA_PCI=y +CONFIG_BLK_DEV_ADMA=y # CONFIG_BLK_DEV_OFFBOARD is not set CONFIG_IDEDMA_PCI_AUTO=y CONFIG_BLK_DEV_IDEDMA=y @@ -232,8 +249,8 @@ # CONFIG_AEC62XX_TUNING is not set # CONFIG_BLK_DEV_ALI15X3 is not set # CONFIG_WDC_ALI15X3 is not set -# CONFIG_BLK_DEV_AMD7409 is not set -# CONFIG_AMD7409_OVERRIDE is not set +# CONFIG_BLK_DEV_AMD74XX is not set +# CONFIG_AMD74XX_OVERRIDE is not set CONFIG_BLK_DEV_CMD64X=y # CONFIG_BLK_DEV_CY82C693 is not set # CONFIG_BLK_DEV_CS5530 is not set @@ -244,7 +261,8 @@ # CONFIG_BLK_DEV_OPTI621 is not set # CONFIG_BLK_DEV_PDC202XX is not set # CONFIG_PDC202XX_BURST is not set -# CONFIG_BLK_DEV_OSB4 is not set +# CONFIG_PDC202XX_FORCE is not set +# CONFIG_BLK_DEV_SVWKS is not set # CONFIG_BLK_DEV_SIS5513 is not set # CONFIG_BLK_DEV_SLC90E66 is not set # CONFIG_BLK_DEV_TRM290 is not set @@ -260,6 +278,9 @@ # CONFIG_IDEDMA_IVB is not set # CONFIG_DMA_NONPCI is not set CONFIG_BLK_DEV_IDE_MODES=y +# CONFIG_BLK_DEV_ATARAID is not set +# CONFIG_BLK_DEV_ATARAID_PDC is not set +# CONFIG_BLK_DEV_ATARAID_HPT is not set # # SCSI support @@ -295,12 +316,16 @@ # CONFIG_SCSI_AHA152X is not set # CONFIG_SCSI_AHA1542 is not set # CONFIG_SCSI_AHA1740 is not set -CONFIG_SCSI_AIC7XXX=y -# CONFIG_AIC7XXX_TCQ_ON_BY_DEFAULT is not set -CONFIG_AIC7XXX_CMDS_PER_DEVICE=8 -CONFIG_AIC7XXX_PROC_STATS=y -CONFIG_AIC7XXX_RESET_DELAY=15 -# CONFIG_SCSI_ADVANSYS is not set +CONFIG_SCSI_AIC7XXX=m +CONFIG_AIC7XXX_CMDS_PER_DEVICE=253 +CONFIG_AIC7XXX_RESET_DELAY_MS=15000 +# CONFIG_AIC7XXX_BUILD_FIRMWARE is not set +CONFIG_SCSI_AIC7XXX_OLD=m +# CONFIG_AIC7XXX_OLD_TCQ_ON_BY_DEFAULT is not set +CONFIG_AIC7XXX_OLD_CMDS_PER_DEVICE=8 +CONFIG_AIC7XXX_OLD_PROC_STATS=y +# CONFIG_SCSI_DPT_I2O is not set +CONFIG_SCSI_ADVANSYS=m # CONFIG_SCSI_IN2000 is not set # CONFIG_SCSI_AM53C974 is not set # CONFIG_SCSI_MEGARAID is not set @@ -318,7 +343,7 @@ # CONFIG_SCSI_INIA100 is not set # CONFIG_SCSI_NCR53C406A is not set # CONFIG_SCSI_NCR53C7xx is not set -# CONFIG_SCSI_NCR53C8XX is not set +CONFIG_SCSI_NCR53C8XX=y CONFIG_SCSI_SYM53C8XX=y CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS=8 CONFIG_SCSI_NCR53C8XX_MAX_TAGS=32 @@ -346,7 +371,7 @@ CONFIG_SCSI_MAC53C94=y # -# IEEE 1394 (FireWire) support +# IEEE 1394 (FireWire) support (EXPERIMENTAL) # # CONFIG_IEEE1394 is not set @@ -369,22 +394,25 @@ # CONFIG_EQUALIZER is not set # CONFIG_TUN is not set # CONFIG_ETHERTAP is not set -# CONFIG_NET_SB1000 is not set # # Ethernet (10 or 100Mbit) # CONFIG_NET_ETHERNET=y CONFIG_MACE=y +# CONFIG_MACE_AAUI_PORT is not set CONFIG_BMAC=y CONFIG_GMAC=y -# CONFIG_OAKNET is not set +# CONFIG_SUNLANCE is not set +# CONFIG_HAPPYMEAL is not set +# CONFIG_SUNBMAC is not set +# CONFIG_SUNQE is not set +# CONFIG_SUNLANCE is not set +# CONFIG_SUNGEM is not set # CONFIG_NET_VENDOR_3COM is not set # CONFIG_LANCE is not set # CONFIG_NET_VENDOR_SMC is not set # CONFIG_NET_VENDOR_RACAL is not set -# CONFIG_AT1700 is not set -# CONFIG_DEPCA is not set # CONFIG_HP100 is not set # CONFIG_NET_ISA is not set CONFIG_NET_PCI=y @@ -393,38 +421,47 @@ # CONFIG_APRICOT is not set # CONFIG_CS89x0 is not set CONFIG_TULIP=y +# CONFIG_TULIP_MWI is not set +CONFIG_TULIP_MMIO=y CONFIG_DE4X5=m # CONFIG_DGRS is not set # CONFIG_DM9102 is not set # CONFIG_EEPRO100 is not set -# CONFIG_EEPRO100_PM is not set # CONFIG_LNE390 is not set +# CONFIG_FEALNX is not set # CONFIG_NATSEMI is not set # CONFIG_NE2K_PCI is not set # CONFIG_NE3210 is not set # CONFIG_ES3210 is not set +# CONFIG_8139CP is not set # CONFIG_8139TOO is not set -# CONFIG_RTL8129 is not set +# CONFIG_8139TOO_PIO is not set +# CONFIG_8139TOO_TUNE_TWISTER is not set +# CONFIG_8139TOO_8129 is not set # CONFIG_SIS900 is not set # CONFIG_EPIC100 is not set # CONFIG_SUNDANCE is not set # CONFIG_TLAN is not set # CONFIG_VIA_RHINE is not set # CONFIG_WINBOND_840 is not set -# CONFIG_HAPPYMEAL is not set # CONFIG_NET_POCKET is not set # # Ethernet (1000 Mbit) # # CONFIG_ACENIC is not set +# CONFIG_DL2K is not set +# CONFIG_MYRI_SBUS is not set +# CONFIG_NS83820 is not set # CONFIG_HAMACHI is not set # CONFIG_YELLOWFIN is not set # CONFIG_SK98LIN is not set # CONFIG_FDDI is not set # CONFIG_HIPPI is not set +# CONFIG_PLIP is not set CONFIG_PPP=y CONFIG_PPP_MULTILINK=y +# CONFIG_PPP_FILTER is not set CONFIG_PPP_ASYNC=y # CONFIG_PPP_SYNC_TTY is not set CONFIG_PPP_DEFLATE=y @@ -435,7 +472,18 @@ # # Wireless LAN (non-hamradio) # -# CONFIG_NET_RADIO is not set +CONFIG_NET_RADIO=y +# CONFIG_STRIP is not set +# CONFIG_WAVELAN is not set +# CONFIG_ARLAN is not set +# CONFIG_AIRONET4500 is not set +# CONFIG_AIRONET4500_NONCS is not set +# CONFIG_AIRONET4500_PROC is not set +# CONFIG_AIRO is not set +CONFIG_HERMES=m +CONFIG_APPLE_AIRPORT=m +# CONFIG_PLX_HERMES is not set +CONFIG_NET_WIRELESS=y # # Token Ring devices @@ -499,9 +547,13 @@ # CONFIG_FB_MATROX_G450 is not set # CONFIG_FB_MATROX_MULTIHEAD is not set CONFIG_FB_ATY=y +CONFIG_FB_ATY_GX=y +CONFIG_FB_ATY_CT=y +CONFIG_FB_RADEON=y CONFIG_FB_ATY128=y -CONFIG_FB_3DFX=y # CONFIG_FB_SIS is not set +CONFIG_FB_3DFX=y +# CONFIG_FB_VOODOO1 is not set # CONFIG_FB_VIRTUAL is not set # CONFIG_FBCON_ADVANCED is not set CONFIG_FBCON_CFB8=y @@ -544,6 +596,7 @@ CONFIG_INPUT_ADBHID=y CONFIG_MAC_ADBKEYCODES=y CONFIG_MAC_EMUMOUSEBTN=y +CONFIG_MAC_HID=y # # Character devices @@ -576,11 +629,37 @@ # # Joysticks # -# CONFIG_JOYSTICK is not set +# CONFIG_INPUT_GAMEPORT is not set +# CONFIG_INPUT_NS558 is not set +# CONFIG_INPUT_LIGHTNING is not set +# CONFIG_INPUT_PCIGAME is not set +# CONFIG_INPUT_CS461X is not set +# CONFIG_INPUT_EMU10K1 is not set +# CONFIG_INPUT_SERIO is not set +# CONFIG_INPUT_SERPORT is not set # -# Input core support is needed for joysticks +# Joysticks # +# CONFIG_INPUT_ANALOG is not set +# CONFIG_INPUT_A3D is not set +# CONFIG_INPUT_ADI is not set +# CONFIG_INPUT_COBRA is not set +# CONFIG_INPUT_GF2K is not set +# CONFIG_INPUT_GRIP is not set +# CONFIG_INPUT_INTERACT is not set +# CONFIG_INPUT_TMDC is not set +# CONFIG_INPUT_SIDEWINDER is not set +# CONFIG_INPUT_IFORCE_USB is not set +# CONFIG_INPUT_IFORCE_232 is not set +# CONFIG_INPUT_WARRIOR is not set +# CONFIG_INPUT_MAGELLAN is not set +# CONFIG_INPUT_SPACEORB is not set +# CONFIG_INPUT_SPACEBALL is not set +# CONFIG_INPUT_STINGER is not set +# CONFIG_INPUT_DB9 is not set +# CONFIG_INPUT_GAMECON is not set +# CONFIG_INPUT_TURBOGRAFX is not set # CONFIG_QIC02_TAPE is not set # @@ -612,6 +691,8 @@ # CONFIG_QUOTA is not set # CONFIG_AUTOFS_FS is not set # CONFIG_AUTOFS4_FS is not set +# CONFIG_REISERFS_FS is not set +# CONFIG_REISERFS_CHECK is not set # CONFIG_ADFS_FS is not set # CONFIG_ADFS_FS_RW is not set # CONFIG_AFFS_FS is not set @@ -623,11 +704,14 @@ CONFIG_VFAT_FS=m # CONFIG_EFS_FS is not set # CONFIG_JFFS_FS is not set +# CONFIG_JFFS2_FS is not set # CONFIG_CRAMFS is not set +CONFIG_TMPFS=y # CONFIG_RAMFS is not set CONFIG_ISO9660_FS=y # CONFIG_JOLIET is not set # CONFIG_MINIX_FS is not set +# CONFIG_VXFS_FS is not set # CONFIG_NTFS_FS is not set # CONFIG_NTFS_RW is not set # CONFIG_HPFS_FS is not set @@ -641,7 +725,6 @@ # CONFIG_ROMFS_FS is not set CONFIG_EXT2_FS=y # CONFIG_SYSV_FS is not set -# CONFIG_SYSV_FS_WRITE is not set # CONFIG_UDF_FS is not set # CONFIG_UDF_RW is not set # CONFIG_UFS_FS is not set @@ -680,8 +763,10 @@ CONFIG_MAC_PARTITION=y CONFIG_MSDOS_PARTITION=y # CONFIG_BSD_DISKLABEL is not set +# CONFIG_MINIX_SUBPARTITION is not set # CONFIG_SOLARIS_X86_PARTITION is not set # CONFIG_UNIXWARE_DISKLABEL is not set +# CONFIG_LDM_PARTITION is not set # CONFIG_SGI_PARTITION is not set # CONFIG_ULTRIX_PARTITION is not set # CONFIG_SUN_PARTITION is not set @@ -707,11 +792,13 @@ # CONFIG_NLS_CODEPAGE_865 is not set # CONFIG_NLS_CODEPAGE_866 is not set # CONFIG_NLS_CODEPAGE_869 is not set -# CONFIG_NLS_CODEPAGE_874 is not set -# CONFIG_NLS_CODEPAGE_932 is not set # CONFIG_NLS_CODEPAGE_936 is not set -# CONFIG_NLS_CODEPAGE_949 is not set # CONFIG_NLS_CODEPAGE_950 is not set +# CONFIG_NLS_CODEPAGE_932 is not set +# CONFIG_NLS_CODEPAGE_949 is not set +# CONFIG_NLS_CODEPAGE_874 is not set +# CONFIG_NLS_ISO8859_8 is not set +# CONFIG_NLS_CODEPAGE_1251 is not set CONFIG_NLS_ISO8859_1=m # CONFIG_NLS_ISO8859_2 is not set # CONFIG_NLS_ISO8859_3 is not set @@ -719,11 +806,12 @@ # CONFIG_NLS_ISO8859_5 is not set # CONFIG_NLS_ISO8859_6 is not set # CONFIG_NLS_ISO8859_7 is not set -# CONFIG_NLS_ISO8859_8 is not set # CONFIG_NLS_ISO8859_9 is not set +# CONFIG_NLS_ISO8859_13 is not set # CONFIG_NLS_ISO8859_14 is not set # CONFIG_NLS_ISO8859_15 is not set # CONFIG_NLS_KOI8_R is not set +# CONFIG_NLS_KOI8_U is not set # CONFIG_NLS_UTF8 is not set # @@ -732,19 +820,25 @@ CONFIG_SOUND=m CONFIG_DMASOUND_AWACS=m CONFIG_DMASOUND=m +# CONFIG_SOUND_BT878 is not set # CONFIG_SOUND_CMPCI is not set # CONFIG_SOUND_EMU10K1 is not set +# CONFIG_MIDI_EMU10K1 is not set # CONFIG_SOUND_FUSION is not set # CONFIG_SOUND_CS4281 is not set # CONFIG_SOUND_ES1370 is not set # CONFIG_SOUND_ES1371 is not set # CONFIG_SOUND_ESSSOLO1 is not set # CONFIG_SOUND_MAESTRO is not set +# CONFIG_SOUND_MAESTRO3 is not set +# CONFIG_SOUND_ICH is not set +# CONFIG_SOUND_RME96XX is not set # CONFIG_SOUND_SONICVIBES is not set # CONFIG_SOUND_TRIDENT is not set # CONFIG_SOUND_MSNDCLAS is not set # CONFIG_SOUND_MSNDPIN is not set # CONFIG_SOUND_VIA82CXXX is not set +# CONFIG_MIDI_VIA82CXXX is not set # CONFIG_SOUND_OSS is not set # CONFIG_SOUND_TVMIXER is not set @@ -759,6 +853,8 @@ # CONFIG_USB_DEVICEFS=y # CONFIG_USB_BANDWIDTH is not set +# CONFIG_USB_LONG_TIMEOUT is not set +# CONFIG_USB_LARGE_CONFIG is not set # # USB Controllers @@ -773,13 +869,22 @@ # CONFIG_USB_AUDIO is not set # CONFIG_USB_BLUETOOTH is not set # CONFIG_USB_STORAGE is not set +# CONFIG_USB_STORAGE_DEBUG is not set +# CONFIG_USB_STORAGE_DATAFAB is not set +# CONFIG_USB_STORAGE_FREECOM is not set +# CONFIG_USB_STORAGE_ISD200 is not set +# CONFIG_USB_STORAGE_DPCM is not set +# CONFIG_USB_STORAGE_HP8200e is not set +# CONFIG_USB_STORAGE_SDDR09 is not set +# CONFIG_USB_STORAGE_JUMPSHOT is not set CONFIG_USB_ACM=m -# CONFIG_USB_PRINTER is not set +CONFIG_USB_PRINTER=m # # USB Human Interface Devices (HID) # CONFIG_USB_HID=y +# CONFIG_USB_HIDDEV is not set # CONFIG_USB_WACOM is not set # @@ -787,23 +892,26 @@ # # CONFIG_USB_DC2XX is not set # CONFIG_USB_MDC800 is not set -# CONFIG_USB_SCANNER is not set +CONFIG_USB_SCANNER=m # CONFIG_USB_MICROTEK is not set +# CONFIG_USB_HPUSBSCSI is not set # # USB Multimedia devices # -# CONFIG_USB_IBMCAM is not set -# CONFIG_USB_OV511 is not set -# CONFIG_USB_DSBR is not set -# CONFIG_USB_DABUSB is not set + +# +# Video4Linux support is needed for USB Multimedia device support +# # # USB Network adaptors # -# CONFIG_USB_PLUSB is not set # CONFIG_USB_PEGASUS is not set -# CONFIG_USB_NET1080 is not set +# CONFIG_USB_KAWETH is not set +# CONFIG_USB_CATC is not set +# CONFIG_USB_CDCETHER is not set +# CONFIG_USB_USBNET is not set # # USB port drivers @@ -814,7 +922,6 @@ # USB Serial Converter support # CONFIG_USB_SERIAL=m -# CONFIG_USB_SERIAL_DEBUG is not set # CONFIG_USB_SERIAL_GENERIC is not set # CONFIG_USB_SERIAL_BELKIN is not set # CONFIG_USB_SERIAL_WHITEHEAT is not set @@ -822,15 +929,33 @@ # CONFIG_USB_SERIAL_EMPEG is not set # CONFIG_USB_SERIAL_FTDI_SIO is not set CONFIG_USB_SERIAL_VISOR=m +# CONFIG_USB_SERIAL_IR is not set +# CONFIG_USB_SERIAL_EDGEPORT is not set # CONFIG_USB_SERIAL_KEYSPAN_PDA is not set # CONFIG_USB_SERIAL_KEYSPAN is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set # CONFIG_USB_SERIAL_MCT_U232 is not set +# CONFIG_USB_SERIAL_PL2303 is not set +# CONFIG_USB_SERIAL_CYBERJACK is not set +# CONFIG_USB_SERIAL_XIRCOM is not set # CONFIG_USB_SERIAL_OMNINET is not set # -# USB misc drivers +# USB Miscellaneous drivers # # CONFIG_USB_RIO500 is not set + +# +# Bluetooth support +# +# CONFIG_BLUEZ is not set # # Kernel hacking Index: vmlinux.lds =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/ppc/vmlinux.lds,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 --- vmlinux.lds 14 Jan 2001 19:29:20 -0000 1.1.1.1 +++ vmlinux.lds 10 Apr 2002 15:03:55 -0000 1.2 @@ -39,6 +39,7 @@ .rodata : { *(.rodata) + *(.rodata.*) *(.rodata1) } .kstrtab : { *(.kstrtab) } @@ -69,6 +70,10 @@ __ksymtab : { *(__ksymtab) } __stop___ksymtab = .; + __start___ftr_fixup = .; + __ftr_fixup : { *(__ftr_fixup) } + __stop___ftr_fixup = .; + . = ALIGN(32); .data.cacheline_aligned : { *(.data.cacheline_aligned) } @@ -114,20 +119,6 @@ .data.chrp : { *(.data.chrp) } . = ALIGN(4096); __chrp_end = .; - - . = ALIGN(4096); - __apus_begin = .; - .text.apus : { *(.text.apus) } - .data.apus : { *(.data.apus) } - . = ALIGN(4096); - __apus_end = .; - - . = ALIGN(4096); - __apus_begin = .; - .text.apus : { *(.text.apus) } - .data.apus : { *(.data.apus) } - . = ALIGN(4096); - __apus_end = .; . = ALIGN(4096); __openfirmware_begin = .; |
From: Andy P. <at...@us...> - 2002-04-10 18:38:41
|
Update of /cvsroot/linux-vax/kernel-2.4/arch/ppc/8260_io In directory usw-pr-cvs1:/tmp/cvs-serv25860/ppc/8260_io Modified Files: Makefile commproc.c enet.c fcc_enet.c uart.c Log Message: synch 2.4.15 commit 43 Index: Makefile =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/ppc/8260_io/Makefile,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 --- Makefile 14 Jan 2001 19:32:44 -0000 1.1.1.1 +++ Makefile 10 Apr 2002 15:03:55 -0000 1.2 @@ -1,3 +1,5 @@ +# BK Id: SCCS/s.Makefile 1.3 05/17/01 18:14:19 cort +# # # Makefile for the linux MPC8xx ppc-specific parts of comm processor # Index: commproc.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/ppc/8260_io/commproc.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 --- commproc.c 14 Jan 2001 19:32:45 -0000 1.1.1.1 +++ commproc.c 10 Apr 2002 15:03:55 -0000 1.2 @@ -1,3 +1,6 @@ +/* + * BK Id: SCCS/s.commproc.c 1.10 10/16/01 16:21:52 trini + */ /* * General Purpose functions for the global management of the @@ -134,7 +137,7 @@ * Baud rate clocks are zero-based in the driver code (as that maps * to port numbers). Documentation uses 1-based numbering. */ -#define BRG_INT_CLK (((bd_t *)__res)->bi_brgfreq * 1000000) +#define BRG_INT_CLK (((bd_t *)__res)->bi_brgfreq) #define BRG_UART_CLK (BRG_INT_CLK/16) /* This function is used by UARTS, or anything else that uses a 16x @@ -166,8 +169,6 @@ { volatile uint *bp; - /* This is good enough to get SMCs running..... - */ if (brg < 4) { bp = (uint *)&immr->im_brgc1; } Index: enet.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/ppc/8260_io/enet.c,v retrieving revision 1.1.1.2 retrieving revision 1.2 diff -u -r1.1.1.2 -r1.2 --- enet.c 25 Feb 2001 23:15:18 -0000 1.1.1.2 +++ enet.c 10 Apr 2002 15:03:55 -0000 1.2 @@ -1,4 +1,7 @@ /* + * BK Id: SCCS/s.enet.c 1.9 09/14/01 18:01:16 trini + */ +/* * Ethernet driver for Motorola MPC8260. * Copyright (c) 1999 Dan Malek (dm...@jl...) * Copyright (c) 2000 MontaVista Software Inc. (so...@mv...) @@ -10,7 +13,7 @@ * This version of the driver is somewhat selectable for the different * processor/board combinations. It works for the boards I know about * now, and should be easily modified to include others. Some of the - * configuration information is contained in "commproc.h" and the + * configuration information is contained in <asm/commproc.h> and the * remainder is here. * * Buffer descriptors are kept in the CPM dual port RAM, and the frame Index: fcc_enet.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/ppc/8260_io/fcc_enet.c,v retrieving revision 1.1.1.2 retrieving revision 1.2 diff -u -r1.1.1.2 -r1.2 --- fcc_enet.c 25 Feb 2001 23:15:18 -0000 1.1.1.2 +++ fcc_enet.c 10 Apr 2002 15:03:55 -0000 1.2 @@ -1,4 +1,7 @@ /* + * BK Id: SCCS/s.fcc_enet.c 1.7 05/17/01 18:14:20 cort + */ +/* * Fast Ethernet Controller (FCC) driver for Motorola MPC8260. * Copyright (c) 2000 MontaVista Software, Inc. Dan Malek (dm...@jl...) * Index: uart.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/ppc/8260_io/uart.c,v retrieving revision 1.1.1.2 retrieving revision 1.2 diff -u -r1.1.1.2 -r1.2 --- uart.c 25 Feb 2001 23:15:18 -0000 1.1.1.2 +++ uart.c 10 Apr 2002 15:03:55 -0000 1.2 @@ -1,4 +1,7 @@ /* + * BK Id: SCCS/s.uart.c 1.6 05/17/01 18:14:20 cort + */ +/* * UART driver for MPC8260 CPM SCC or SMC * Copyright (c) 1999 Dan Malek (dm...@jl...) * Copyright (c) 2000 MontaVista Software, Inc. (so...@mv...) |
From: Andy P. <at...@us...> - 2002-04-10 18:38:39
|
Update of /cvsroot/linux-vax/kernel-2.4/arch/mips/ddb5xxx/common In directory usw-pr-cvs1:/tmp/cvs-serv15569/arch/mips/ddb5xxx/common Log Message: Directory /cvsroot/linux-vax/kernel-2.4/arch/mips/ddb5xxx/common added to the repository |
From: Andy P. <at...@us...> - 2002-04-10 18:38:36
|
Update of /cvsroot/linux-vax/kernel-2.4/arch/mips/ddb5xxx/ddb5477 In directory usw-pr-cvs1:/tmp/cvs-serv15569/arch/mips/ddb5xxx/ddb5477 Log Message: Directory /cvsroot/linux-vax/kernel-2.4/arch/mips/ddb5xxx/ddb5477 added to the repository |
From: Andy P. <at...@us...> - 2002-04-10 18:38:35
|
Update of /cvsroot/linux-vax/kernel-2.4/arch/sparc/lib In directory usw-pr-cvs1:/tmp/cvs-serv31330/sparc/lib Modified Files: Makefile ashldi3.S ashrdi3.S bitops.S blockops.S debuglocks.c locks.S lshrdi3.S memscan.S memset.S mul.S rem.S rwsem.S sdiv.S strncmp.S udiv.S umul.S urem.S Log Message: synch 2.4.15 commit 45 Index: Makefile =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/sparc/lib/Makefile,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 Index: ashldi3.S =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/sparc/lib/ashldi3.S,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 Index: ashrdi3.S =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/sparc/lib/ashrdi3.S,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 Index: bitops.S =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/sparc/lib/bitops.S,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 --- bitops.S 14 Jan 2001 19:26:08 -0000 1.1.1.1 +++ bitops.S 10 Apr 2002 15:17:42 -0000 1.2 @@ -107,62 +107,5 @@ jmpl %o7, %g0 mov %g4, %o7 - /* Now the little endian versions. */ - .globl ___set_le_bit -___set_le_bit: - rd %psr, %g3 - nop; nop; nop - or %g3, PSR_PIL, %g5 - wr %g5, 0x0, %psr - nop; nop; nop -#ifdef CONFIG_SMP - set C_LABEL(bitops_spinlock), %g5 -2: ldstub [%g5], %g7 ! Spin on the byte lock for SMP. - orcc %g7, 0x0, %g0 ! Did we get it? - bne 2b ! Nope... -#endif - ldub [%g1], %g7 - or %g7, %g2, %g5 - and %g7, %g2, %g2 -#ifdef CONFIG_SMP - stb %g5, [%g1] - set C_LABEL(bitops_spinlock), %g5 - stb %g0, [%g5] -#else - stb %g5, [%g1] -#endif - wr %g3, 0x0, %psr - nop; nop; nop - jmpl %o7, %g0 - mov %g4, %o7 - - .globl ___clear_le_bit -___clear_le_bit: - rd %psr, %g3 - nop; nop; nop - or %g3, PSR_PIL, %g5 - wr %g5, 0x0, %psr - nop; nop; nop -#ifdef CONFIG_SMP - set C_LABEL(bitops_spinlock), %g5 -2: ldstub [%g5], %g7 ! Spin on the byte lock for SMP. - orcc %g7, 0x0, %g0 ! Did we get it? - bne 2b ! Nope... -#endif - ldub [%g1], %g7 - andn %g7, %g2, %g5 - and %g7, %g2, %g2 -#ifdef CONFIG_SMP - stb %g5, [%g1] - set C_LABEL(bitops_spinlock), %g5 - stb %g0, [%g5] -#else - stb %g5, [%g1] -#endif - wr %g3, 0x0, %psr - nop; nop; nop - jmpl %o7, %g0 - mov %g4, %o7 - .globl __bitops_end __bitops_end: Index: blockops.S =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/sparc/lib/blockops.S,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 Index: debuglocks.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/sparc/lib/debuglocks.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 --- debuglocks.c 14 Jan 2001 19:26:11 -0000 1.1.1.1 +++ debuglocks.c 10 Apr 2002 15:17:42 -0000 1.2 @@ -29,11 +29,9 @@ static inline void show(char *str, spinlock_t *lock, unsigned long caller) { int cpu = smp_processor_id(); - extern spinlock_t console_lock; - if (lock != &console_lock) - printk("%s(%p) CPU#%d stuck at %08lx, owner PC(%08lx):CPU(%lx)\n",str, - lock, cpu, caller, lock->owner_pc & ~3, lock->owner_pc & 3); + printk("%s(%p) CPU#%d stuck at %08lx, owner PC(%08lx):CPU(%lx)\n",str, + lock, cpu, caller, lock->owner_pc & ~3, lock->owner_pc & 3); } static inline void show_read(char *str, rwlock_t *lock, unsigned long caller) Index: locks.S =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/sparc/lib/locks.S,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 Index: lshrdi3.S =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/sparc/lib/lshrdi3.S,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 Index: memscan.S =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/sparc/lib/memscan.S,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 Index: memset.S =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/sparc/lib/memset.S,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 --- memset.S 14 Jan 2001 19:26:06 -0000 1.1.1.1 +++ memset.S 10 Apr 2002 15:17:42 -0000 1.2 @@ -188,7 +188,7 @@ b 30f add %o0, %o1, %o0 30: -/* %o4 is faulting address, %o5 is %pc where fault occured */ +/* %o4 is faulting address, %o5 is %pc where fault occurred */ save %sp, -104, %sp mov %i5, %o0 mov %i7, %o1 Index: mul.S =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/sparc/lib/mul.S,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 Index: rem.S =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/sparc/lib/rem.S,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 Index: rwsem.S =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/sparc/lib/rwsem.S,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 Index: sdiv.S =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/sparc/lib/sdiv.S,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 Index: strncmp.S =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/sparc/lib/strncmp.S,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 Index: udiv.S =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/sparc/lib/udiv.S,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 Index: umul.S =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/sparc/lib/umul.S,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 Index: urem.S =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/sparc/lib/urem.S,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 |
From: Andy P. <at...@us...> - 2002-04-10 18:38:33
|
Update of /cvsroot/linux-vax/kernel-2.4/arch/ppc/treeboot In directory usw-pr-cvs1:/tmp/cvs-serv25860/ppc/treeboot Removed Files: Makefile crt0.S elf.pl irSect.c irSect.h ld.script main.c misc.S mkevimg mkirimg Log Message: synch 2.4.15 commit 43 --- Makefile DELETED --- --- crt0.S DELETED --- --- elf.pl DELETED --- --- irSect.c DELETED --- --- irSect.h DELETED --- --- ld.script DELETED --- --- main.c DELETED --- --- misc.S DELETED --- --- mkevimg DELETED --- --- mkirimg DELETED --- |
From: Andy P. <at...@us...> - 2002-04-10 18:38:11
|
Update of /cvsroot/linux-vax/kernel-2.4/drivers/acpi/include/platform In directory usw-pr-cvs1:/tmp/cvs-serv16976/drivers/acpi/include/platform Log Message: Directory /cvsroot/linux-vax/kernel-2.4/drivers/acpi/include/platform added to the repository |
From: Andy P. <at...@us...> - 2002-04-10 18:38:10
|
Update of /cvsroot/linux-vax/kernel-2.4/arch/sparc64 In directory usw-pr-cvs1:/tmp/cvs-serv32333/sparc64 Modified Files: Makefile config.in defconfig vmlinux.lds Log Message: synch 2.4.15 commit 46 Index: Makefile =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/sparc64/Makefile,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 --- Makefile 14 Jan 2001 19:42:28 -0000 1.1.1.1 +++ Makefile 10 Apr 2002 15:21:22 -0000 1.2 @@ -15,7 +15,7 @@ CC := $(shell if gcc -m64 -S -o /dev/null -xc /dev/null >/dev/null 2>&1; then echo gcc; else echo sparc64-linux-gcc; fi ) NEW_GCC := $(shell if $(CC) -m64 -mcmodel=medlow -S -o /dev/null -xc /dev/null >/dev/null 2>&1; then echo y; else echo n; fi; ) -NEW_GAS := $(shell if $(LD) --version 2>&1 | grep 'elf64_sparc' > /dev/null; then echo y; else echo n; fi) +NEW_GAS := $(shell if $(LD) -V 2>&1 | grep 'elf64_sparc' > /dev/null; then echo y; else echo n; fi) UNDECLARED_REGS := $(shell if $(CC) -c -x assembler /dev/null -Wa,--help | grep undeclared-regs > /dev/null; then echo y; else echo n; fi; ) export NEW_GCC @@ -63,6 +63,15 @@ endif endif +# Uncomment this to keep track of how often flush_dcache_page +# actually flushes the caches, output via /proc/cpuinfo +# +# DEBUG_DCACHE_FLUSH = 1 +ifdef DEBUG_DCACHE_FLUSH + CFLAGS += -DDCFLUSH_DEBUG + AFLAGS += -DDCFLUSH_DEBUG +endif + LINKFLAGS = -T arch/sparc64/vmlinux.lds HEAD := arch/sparc64/kernel/head.o arch/sparc64/kernel/init_task.o @@ -98,7 +107,7 @@ archdep: check_asm -check_asm: +check_asm: include/linux/version.h $(MAKE) -C arch/sparc64/kernel check_asm tftpboot.img: Index: config.in =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/sparc64/config.in,v retrieving revision 1.1.1.2 retrieving revision 1.2 diff -u -r1.1.1.2 -r1.2 --- config.in 25 Feb 2001 23:15:20 -0000 1.1.1.2 +++ config.in 10 Apr 2002 15:21:22 -0000 1.2 @@ -21,6 +21,8 @@ mainmenu_option next_comment comment 'General setup' +tristate 'UltraSPARC-III bootbus i2c controller driver' CONFIG_BBC_I2C + define_bool CONFIG_VT y define_bool CONFIG_VT_CONSOLE y @@ -31,7 +33,10 @@ # Global things across all Sun machines. define_bool CONFIG_HAVE_DEC_LOCK y +define_bool CONFIG_RWSEM_GENERIC_SPINLOCK n +define_bool CONFIG_RWSEM_XCHGADD_ALGORITHM y define_bool CONFIG_ISA n +define_bool CONFIG_ISAPNP n define_bool CONFIG_EISA n define_bool CONFIG_MCA n define_bool CONFIG_PCMCIA n @@ -47,6 +52,9 @@ define_bool CONFIG_SUN_AUXIO y define_bool CONFIG_SUN_IO y bool 'PCI support' CONFIG_PCI +if [ "$CONFIG_PCI" = "y" ] ; then + define_bool CONFIG_RTC y +fi source drivers/pci/Config.in tristate 'Openprom tree appears in /proc/openprom' CONFIG_SUN_OPENPROMFS @@ -74,6 +82,7 @@ tristate 'SUNW, envctrl support' CONFIG_ENVCTRL tristate '7-Segment Display support' CONFIG_DISPLAY7SEG tristate 'CP1XXX Hardware Watchdog support' CONFIG_WATCHDOG_CP1XXX + tristate 'RIO Hardware Watchdog support' CONFIG_WATCHDOG_RIO fi endmenu @@ -138,9 +147,7 @@ dep_tristate ' SCSI tape support' CONFIG_CHR_DEV_ST $CONFIG_SCSI - if [ "$CONFIG_BLK_DEV_ST" != "n" ]; then - int 'Maximum number of SCSI tapes that can be loaded as modules' CONFIG_ST_EXTRA_DEVS 2 - fi + dep_tristate ' SCSI OnStream SC-x0 tape support' CONFIG_CHR_DEV_OSST $CONFIG_SCSI dep_tristate ' SCSI CDROM support' CONFIG_BLK_DEV_SR $CONFIG_SCSI @@ -165,15 +172,26 @@ dep_tristate 'PTI Qlogic, ISP Driver' CONFIG_SCSI_QLOGICPTI $CONFIG_SCSI if [ "$CONFIG_PCI" != "n" ]; then - dep_tristate 'Adaptec AIC7xxx support' CONFIG_SCSI_AIC7XXX $CONFIG_SCSI - if [ "$CONFIG_SCSI_AIC7XXX" != "n" ]; then - bool ' Enable tagged command queueing (TCQ) by default' CONFIG_AIC7XXX_TAGGED_QUEUEING - int ' Maximum number of TCQ commands per device' CONFIG_AIC7XXX_CMDS_PER_DEVICE 8 - bool ' Collect statistics to report in /proc' CONFIG_AIC7XXX_PROC_STATS - int ' Delay in seconds after SCSI bus reset' CONFIG_AIC7XXX_RESET_DELAY 5 + source drivers/scsi/aic7xxx/Config.in + if [ "$CONFIG_SCSI_AIC7XXX" != "y" ]; then + dep_tristate 'Old Adaptec AIC7xxx support' CONFIG_SCSI_AIC7XXX_OLD $CONFIG_SCSI + if [ "$CONFIG_SCSI_AIC7XXX_OLD" != "n" ]; then + bool ' Enable Tagged Command Queueing (TCQ) by default' CONFIG_AIC7XXX_OLD_TCQ_ON_BY_DEFAULT + int ' Maximum number of TCQ commands per device' CONFIG_AIC7XXX_OLD_CMDS_PER_DEVICE 8 + bool ' Collect statistics to report in /proc' CONFIG_AIC7XXX_OLD_PROC_STATS + fi + fi + dep_tristate 'SYM53C8XX Version 2 SCSI support' CONFIG_SCSI_SYM53C8XX_2 $CONFIG_SCSI + if [ "$CONFIG_SCSI_SYM53C8XX_2" != "n" ]; then + int ' DMA addressing mode' CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE 1 + int ' default tagged command queue depth' CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS 16 + int ' maximum number of queued commands' CONFIG_SCSI_SYM53C8XX_MAX_TAGS 64 + bool ' use normal IO' CONFIG_SCSI_SYM53C8XX_IOMAPPED + fi + if [ "$CONFIG_SCSI_SYM53C8XX_2" != "y" ]; then + dep_tristate 'NCR53C8XX SCSI support' CONFIG_SCSI_NCR53C8XX $CONFIG_SCSI + dep_tristate 'SYM53C8XX SCSI support' CONFIG_SCSI_SYM53C8XX $CONFIG_SCSI fi - dep_tristate 'NCR53C8XX SCSI support' CONFIG_SCSI_NCR53C8XX $CONFIG_SCSI - dep_tristate 'SYM53C8XX SCSI support' CONFIG_SCSI_SYM53C8XX $CONFIG_SCSI if [ "$CONFIG_SCSI_NCR53C8XX" != "n" -o "$CONFIG_SCSI_SYM53C8XX" != "n" ]; then int 'default tagged command queue depth' CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS 8 int 'maximum number of queued commands' CONFIG_SCSI_NCR53C8XX_MAX_TAGS 32 @@ -191,108 +209,30 @@ fi dep_tristate 'Qlogic ISP SCSI support' CONFIG_SCSI_QLOGIC_ISP $CONFIG_SCSI dep_tristate 'Qlogic ISP FC SCSI support' CONFIG_SCSI_QLOGIC_FC $CONFIG_SCSI + if [ "$CONFIG_SCSI_QLOGIC_FC" != "n" ]; then + define_bool CONFIG_SCSI_QLOGIC_FC_FIRMWARE y + fi fi endmenu fi endmenu -source drivers/message/fusion/Config.in - source drivers/fc4/Config.in -if [ "$CONFIG_PCI" = "y" -a "$CONFIG_EXPERIMENTAL" = "y" ]; then - mainmenu_option next_comment - comment 'IEEE 1394 (FireWire) support' - - dep_tristate 'IEEE 1394 (FireWire) support (EXPERIMENTAL)' CONFIG_IEEE1394 $CONFIG_PCI - - if [ "$CONFIG_IEEE1394" != "n" ]; then - dep_tristate 'Texas Instruments PCILynx support' CONFIG_IEEE1394_PCILYNX $CONFIG_IEEE1394 - if [ "$CONFIG_IEEE1394_PCILYNX" != "n" ]; then - bool ' Use PCILynx local RAM' CONFIG_IEEE1394_PCILYNX_LOCALRAM - bool ' Support for non-IEEE1394 local ports' CONFIG_IEEE1394_PCILYNX_PORTS - fi - - dep_tristate 'OHCI (Open Host Controller Interface) support' CONFIG_IEEE1394_OHCI1394 $CONFIG_IEEE1394 - - dep_tristate 'Raw IEEE1394 I/O support' CONFIG_IEEE1394_RAWIO $CONFIG_IEEE1394 - - bool 'Excessive debugging output' CONFIG_IEEE1394_VERBOSEDEBUG - fi - endmenu +if [ "$CONFIG_PCI" = "y" ]; then + source drivers/message/fusion/Config.in fi +source drivers/ieee1394/Config.in + if [ "$CONFIG_NET" = "y" ]; then mainmenu_option next_comment comment 'Network device support' bool 'Network device support' CONFIG_NETDEVICES if [ "$CONFIG_NETDEVICES" = "y" ]; then - tristate ' Dummy net driver support' CONFIG_DUMMY - tristate ' Bonding driver support' CONFIG_BONDING - tristate ' Universal TUN/TAP device driver support' CONFIG_TUN - if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then - if [ "$CONFIG_NETLINK" = "y" ]; then - tristate ' Ethertap network tap (OBSOLETE)' CONFIG_ETHERTAP - fi - fi - tristate ' PPP (point-to-point) support' CONFIG_PPP - if [ ! "$CONFIG_PPP" = "n" ]; then - dep_tristate ' PPP support for async serial ports' CONFIG_PPP_ASYNC $CONFIG_PPP - dep_tristate ' PPP support for sync tty ports' CONFIG_PPP_SYNC_TTY $CONFIG_PPP - dep_tristate ' PPP Deflate compression' CONFIG_PPP_DEFLATE $CONFIG_PPP - dep_tristate ' PPP BSD-Compress compression' CONFIG_PPP_BSDCOMP m - if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then - dep_tristate ' PPP over Ethernet (EXPERIMENTAL)' CONFIG_PPPOE $CONFIG_PPP - fi - fi - tristate ' SLIP (serial line) support' CONFIG_SLIP - if [ "$CONFIG_SLIP" != "n" ]; then - bool ' CSLIP compressed headers' CONFIG_SLIP_COMPRESSED - bool ' Keepalive and linefill' CONFIG_SLIP_SMART - bool ' Six bit SLIP encapsulation' CONFIG_SLIP_MODE_SLIP6 - fi - - mainmenu_option next_comment - comment 'Ethernet (10 or 100Mbit)' - - tristate 'Sun LANCE support' CONFIG_SUNLANCE - tristate 'Sun Happy Meal 10/100baseT support' CONFIG_HAPPYMEAL - if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then - tristate 'Sun BigMAC 10/100baseT support (EXPERIMENTAL)' CONFIG_SUNBMAC - fi - tristate ' Sun QuadEthernet support' CONFIG_SUNQE - if [ "$CONFIG_PCI" = "y" ]; then - tristate 'Generic DECchip & DIGITAL EtherWORKS PCI/EISA' CONFIG_DE4X5 - tristate 'DECchip Tulip (dc21x4x) PCI support' CONFIG_TULIP - tristate '3c590/3c900 series (592/595/597) "Vortex/Boomerang" support' CONFIG_VORTEX - tristate 'RealTek RTL-8139 support' CONFIG_8139TOO - tristate 'PCI NE2000 support' CONFIG_NE2K_PCI - tristate 'VIA Rhine support' CONFIG_VIA_RHINE - tristate 'EtherExpressPro/100 support' CONFIG_EEPRO100 - tristate 'Adaptec Starfire support' CONFIG_ADAPTEC_STARFIRE - fi - endmenu - - mainmenu_option next_comment - comment 'Ethernet (1000 Mbit)' - - if [ "$CONFIG_PCI" = "y" ]; then - tristate 'Alteon AceNIC/3Com 3C985/NetGear GA620 Gigabit support' CONFIG_ACENIC - if [ "$CONFIG_ACENIC" != "n" ]; then - bool ' Omit support for old Tigon I based AceNICs' CONFIG_ACENIC_OMIT_TIGON_I - fi - tristate 'SysKonnect SK-98xx support' CONFIG_SK98LIN - fi - tristate 'MyriCOM Gigabit Ethernet support' CONFIG_MYRI_SBUS - endmenu - - bool 'FDDI driver support' CONFIG_FDDI - if [ "$CONFIG_FDDI" = "y" ]; then - tristate ' SysKonnect FDDI PCI support' CONFIG_SKFP - fi - + source drivers/net/Config.in if [ "$CONFIG_ATM" = "y" ]; then source drivers/atm/Config.in fi @@ -323,9 +263,28 @@ comment 'XFree86 DRI support' bool 'Direct Rendering Manager (XFree86 DRI support)' CONFIG_DRM dep_tristate ' Creator/Creator3D' CONFIG_DRM_FFB $CONFIG_DRM +dep_tristate ' 3dfx Banshee/Voodoo3+' CONFIG_DRM_TDFX $CONFIG_DRM +dep_tristate ' ATI Rage 128' CONFIG_DRM_R128 $CONFIG_DRM endmenu +source drivers/input/Config.in + source fs/Config.in + +mainmenu_option next_comment +comment 'Sound' + +tristate 'Sound card support' CONFIG_SOUND +if [ "$CONFIG_SOUND" != "n" ]; then + source drivers/sound/Config.in +fi +endmenu + +source drivers/usb/Config.in + +if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then + source net/bluetooth/Config.in +fi mainmenu_option next_comment comment 'Watchdog' Index: defconfig =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/sparc64/defconfig,v retrieving revision 1.1.1.2 retrieving revision 1.2 diff -u -r1.1.1.2 -r1.2 --- defconfig 25 Feb 2001 23:15:20 -0000 1.1.1.2 +++ defconfig 10 Apr 2002 15:21:22 -0000 1.2 @@ -17,12 +17,16 @@ # # General setup # +CONFIG_BBC_I2C=m CONFIG_VT=y CONFIG_VT_CONSOLE=y -# CONFIG_SMP is not set +CONFIG_SMP=y CONFIG_SPARC64=y CONFIG_HAVE_DEC_LOCK=y +# CONFIG_RWSEM_GENERIC_SPINLOCK is not set +CONFIG_RWSEM_XCHGADD_ALGORITHM=y # CONFIG_ISA is not set +# CONFIG_ISAPNP is not set # CONFIG_EISA is not set # CONFIG_MCA is not set # CONFIG_PCMCIA is not set @@ -38,7 +42,8 @@ CONFIG_SUN_AUXIO=y CONFIG_SUN_IO=y CONFIG_PCI=y -CONFIG_PCI_NAMES=y +CONFIG_RTC=y +# CONFIG_PCI_NAMES is not set CONFIG_SUN_OPENPROMFS=m CONFIG_NET=y CONFIG_SYSVIPC=y @@ -58,11 +63,14 @@ # CONFIG_PARPORT=m CONFIG_PARPORT_PC=m +CONFIG_PARPORT_PC_CML1=m +# CONFIG_PARPORT_SERIAL is not set CONFIG_PARPORT_PC_FIFO=y # CONFIG_PARPORT_PC_SUPERIO is not set # CONFIG_PARPORT_AMIGA is not set # CONFIG_PARPORT_MFC3 is not set # CONFIG_PARPORT_ATARI is not set +# CONFIG_PARPORT_GSC is not set # CONFIG_PARPORT_SUNBPP is not set # CONFIG_PARPORT_OTHER is not set CONFIG_PARPORT_1284=y @@ -70,6 +78,7 @@ CONFIG_ENVCTRL=m CONFIG_DISPLAY7SEG=m CONFIG_WATCHDOG_CP1XXX=m +CONFIG_WATCHDOG_RIO=m # # Console drivers @@ -90,9 +99,13 @@ # CONFIG_FB_CYBER2000 is not set # CONFIG_FB_MATROX is not set CONFIG_FB_ATY=y +# CONFIG_FB_ATY_GX is not set +CONFIG_FB_ATY_CT=y +# CONFIG_FB_RADEON is not set # CONFIG_FB_ATY128 is not set -# CONFIG_FB_3DFX is not set # CONFIG_FB_SIS is not set +# CONFIG_FB_3DFX is not set +# CONFIG_FB_VOODOO1 is not set CONFIG_FB_SBUS=y CONFIG_FB_CREATOR=y CONFIG_FB_CGSIX=y @@ -101,6 +114,7 @@ # CONFIG_FB_LEO is not set CONFIG_FB_PCI=y CONFIG_FB_ATY=y +CONFIG_FB_ATY_CT=y # CONFIG_FB_VIRTUAL is not set # CONFIG_FBCON_ADVANCED is not set CONFIG_FBCON_CFB8=y @@ -125,8 +139,8 @@ # # Linux/SPARC audio subsystem (EXPERIMENTAL) # -CONFIG_SPARCAUDIO=y -CONFIG_SPARCAUDIO_CS4231=y +CONFIG_SPARCAUDIO=m +CONFIG_SPARCAUDIO_CS4231=m # CONFIG_SPARCAUDIO_DUMMY is not set # @@ -150,8 +164,8 @@ # CONFIG_MD_RAID0 is not set # CONFIG_MD_RAID1 is not set # CONFIG_MD_RAID5 is not set +# CONFIG_MD_MULTIPATH is not set # CONFIG_BLK_DEV_LVM is not set -# CONFIG_LVM_PROC_FS is not set # CONFIG_BLK_DEV_RAM is not set # CONFIG_BLK_DEV_INITRD is not set @@ -159,8 +173,10 @@ # Networking options # CONFIG_PACKET=y -# CONFIG_PACKET_MMAP is not set -# CONFIG_NETLINK is not set +CONFIG_PACKET_MMAP=y +CONFIG_NETLINK=y +CONFIG_RTNETLINK=y +CONFIG_NETLINK_DEV=y # CONFIG_NETFILTER is not set # CONFIG_FILTER is not set CONFIG_UNIX=y @@ -170,12 +186,13 @@ # CONFIG_IP_PNP is not set # CONFIG_NET_IPIP is not set # CONFIG_NET_IPGRE is not set +CONFIG_ARPD=y CONFIG_INET_ECN=y # CONFIG_SYN_COOKIES is not set CONFIG_IPV6=m -# CONFIG_IPV6_EUI64 is not set # CONFIG_KHTTPD is not set # CONFIG_ATM is not set +CONFIG_VLAN_8021Q=m # # @@ -199,7 +216,27 @@ # # QoS and/or fair queueing # -# CONFIG_NET_SCHED is not set +CONFIG_NET_SCHED=y +CONFIG_NET_SCH_CBQ=m +CONFIG_NET_SCH_CSZ=m +CONFIG_NET_SCH_PRIO=m +CONFIG_NET_SCH_RED=m +CONFIG_NET_SCH_SFQ=m +CONFIG_NET_SCH_TEQL=m +CONFIG_NET_SCH_TBF=m +CONFIG_NET_SCH_GRED=m +CONFIG_NET_SCH_DSMARK=m +CONFIG_NET_QOS=y +CONFIG_NET_ESTIMATOR=y +CONFIG_NET_CLS=y +CONFIG_NET_CLS_TCINDEX=m +CONFIG_NET_CLS_ROUTE4=m +CONFIG_NET_CLS_ROUTE=y +CONFIG_NET_CLS_FW=m +CONFIG_NET_CLS_U32=m +CONFIG_NET_CLS_RSVP=m +CONFIG_NET_CLS_RSVP6=m +CONFIG_NET_CLS_POLICE=y # # ATA/IDE/MFM/RLL support @@ -243,6 +280,7 @@ CONFIG_BLK_DEV_IDEPCI=y # CONFIG_IDEPCI_SHARE_IRQ is not set CONFIG_BLK_DEV_IDEDMA_PCI=y +CONFIG_BLK_DEV_ADMA=y # CONFIG_BLK_DEV_OFFBOARD is not set CONFIG_IDEDMA_PCI_AUTO=y CONFIG_BLK_DEV_IDEDMA=y @@ -250,10 +288,10 @@ # CONFIG_IDEDMA_NEW_DRIVE_LISTINGS is not set # CONFIG_BLK_DEV_AEC62XX is not set # CONFIG_AEC62XX_TUNING is not set -# CONFIG_BLK_DEV_ALI15X3 is not set +CONFIG_BLK_DEV_ALI15X3=y # CONFIG_WDC_ALI15X3 is not set -# CONFIG_BLK_DEV_AMD7409 is not set -# CONFIG_AMD7409_OVERRIDE is not set +# CONFIG_BLK_DEV_AMD74XX is not set +# CONFIG_AMD74XX_OVERRIDE is not set CONFIG_BLK_DEV_CMD64X=y # CONFIG_BLK_DEV_CY82C693 is not set # CONFIG_BLK_DEV_CS5530 is not set @@ -264,7 +302,8 @@ # CONFIG_BLK_DEV_OPTI621 is not set # CONFIG_BLK_DEV_PDC202XX is not set # CONFIG_PDC202XX_BURST is not set -# CONFIG_BLK_DEV_OSB4 is not set +# CONFIG_PDC202XX_FORCE is not set +# CONFIG_BLK_DEV_SVWKS is not set # CONFIG_BLK_DEV_SIS5513 is not set # CONFIG_BLK_DEV_SLC90E66 is not set # CONFIG_BLK_DEV_TRM290 is not set @@ -274,6 +313,9 @@ # CONFIG_IDEDMA_IVB is not set # CONFIG_DMA_NONPCI is not set CONFIG_BLK_DEV_IDE_MODES=y +CONFIG_BLK_DEV_ATARAID=m +CONFIG_BLK_DEV_ATARAID_PDC=m +CONFIG_BLK_DEV_ATARAID_HPT=m # # SCSI support @@ -286,7 +328,7 @@ CONFIG_BLK_DEV_SD=y CONFIG_SD_EXTRA_DEVS=40 CONFIG_CHR_DEV_ST=y -CONFIG_ST_EXTRA_DEVS=2 +CONFIG_CHR_DEV_OSST=m CONFIG_BLK_DEV_SR=y CONFIG_BLK_DEV_SR_VENDOR=y CONFIG_SR_EXTRA_DEVS=2 @@ -305,10 +347,14 @@ CONFIG_SCSI_SUNESP=y CONFIG_SCSI_QLOGICPTI=m CONFIG_SCSI_AIC7XXX=m -CONFIG_AIC7XXX_TAGGED_QUEUEING=y -CONFIG_AIC7XXX_CMDS_PER_DEVICE=8 -CONFIG_AIC7XXX_PROC_STATS=y -CONFIG_AIC7XXX_RESET_DELAY=5 +CONFIG_AIC7XXX_CMDS_PER_DEVICE=253 +CONFIG_AIC7XXX_RESET_DELAY_MS=5000 +# CONFIG_AIC7XXX_BUILD_FIRMWARE is not set +CONFIG_SCSI_AIC7XXX_OLD=m +CONFIG_AIC7XXX_OLD_TCQ_ON_BY_DEFAULT=y +CONFIG_AIC7XXX_OLD_CMDS_PER_DEVICE=8 +CONFIG_AIC7XXX_OLD_PROC_STATS=y +# CONFIG_SCSI_SYM53C8XX_2 is not set CONFIG_SCSI_NCR53C8XX=m CONFIG_SCSI_SYM53C8XX=y CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS=4 @@ -318,7 +364,8 @@ # CONFIG_SCSI_NCR53C8XX_PQS_PDS is not set # CONFIG_SCSI_NCR53C8XX_SYMBIOS_COMPAT is not set CONFIG_SCSI_QLOGIC_ISP=m -CONFIG_SCSI_QLOGIC_FC=m +CONFIG_SCSI_QLOGIC_FC=y +CONFIG_SCSI_QLOGIC_FC_FIRMWARE=y # # Fibre Channel support @@ -338,13 +385,37 @@ CONFIG_SCSI_FCAL=m # -# IEEE 1394 (FireWire) support +# Fusion MPT device support +# +CONFIG_FUSION=m +# CONFIG_FUSION_BOOT is not set + +# +# (ability to boot linux kernel from Fusion device is DISABLED!) +# +CONFIG_FUSION_ISENSE=m +CONFIG_FUSION_CTL=m +CONFIG_FUSION_LAN=m +CONFIG_NET_FC=y + +# +# IEEE 1394 (FireWire) support (EXPERIMENTAL) # CONFIG_IEEE1394=m + +# +# Device Drivers +# CONFIG_IEEE1394_PCILYNX=m # CONFIG_IEEE1394_PCILYNX_LOCALRAM is not set # CONFIG_IEEE1394_PCILYNX_PORTS is not set CONFIG_IEEE1394_OHCI1394=m + +# +# Protocol Drivers +# +# CONFIG_IEEE1394_VIDEO1394 is not set +CONFIG_IEEE1394_SBP2=m CONFIG_IEEE1394_RAWIO=m # CONFIG_IEEE1394_VERBOSEDEBUG is not set @@ -352,45 +423,128 @@ # Network device support # CONFIG_NETDEVICES=y + +# +# ARCnet devices +# +# CONFIG_ARCNET is not set + +# +# Appletalk devices +# +# CONFIG_APPLETALK is not set +# CONFIG_LTPC is not set +# CONFIG_COPS is not set +# CONFIG_IPDDP is not set CONFIG_DUMMY=m CONFIG_BONDING=m +CONFIG_EQUALIZER=m CONFIG_TUN=m -CONFIG_PPP=m -# CONFIG_PPP_ASYNC is not set -# CONFIG_PPP_SYNC_TTY is not set -# CONFIG_PPP_DEFLATE is not set -# CONFIG_PPP_BSDCOMP is not set -CONFIG_PPPOE=m -CONFIG_SLIP=m -CONFIG_SLIP_COMPRESSED=y -CONFIG_SLIP_SMART=y -# CONFIG_SLIP_MODE_SLIP6 is not set +# CONFIG_ETHERTAP is not set # # Ethernet (10 or 100Mbit) # +CONFIG_NET_ETHERNET=y CONFIG_SUNLANCE=y CONFIG_HAPPYMEAL=y CONFIG_SUNBMAC=m CONFIG_SUNQE=m -CONFIG_DE4X5=m -CONFIG_TULIP=m +CONFIG_SUNLANCE=y +CONFIG_SUNGEM=y +CONFIG_NET_VENDOR_3COM=y +# CONFIG_EL1 is not set +# CONFIG_EL2 is not set +# CONFIG_ELPLUS is not set +# CONFIG_EL16 is not set +# CONFIG_ELMC is not set +# CONFIG_ELMC_II is not set CONFIG_VORTEX=m -CONFIG_8139TOO=m +# CONFIG_LANCE is not set +# CONFIG_NET_VENDOR_SMC is not set +# CONFIG_NET_VENDOR_RACAL is not set +# CONFIG_HP100 is not set +# CONFIG_NET_ISA is not set +CONFIG_NET_PCI=y +CONFIG_PCNET32=m +CONFIG_ADAPTEC_STARFIRE=m +# CONFIG_APRICOT is not set +# CONFIG_CS89x0 is not set +CONFIG_TULIP=m +# CONFIG_TULIP_MWI is not set +# CONFIG_TULIP_MMIO is not set +CONFIG_DE4X5=m +CONFIG_DGRS=m +# CONFIG_DM9102 is not set +CONFIG_EEPRO100=m +# CONFIG_LNE390 is not set +CONFIG_FEALNX=m +CONFIG_NATSEMI=m CONFIG_NE2K_PCI=m +# CONFIG_NE3210 is not set +# CONFIG_ES3210 is not set +# CONFIG_8139CP is not set +CONFIG_8139TOO=m +# CONFIG_8139TOO_PIO is not set +# CONFIG_8139TOO_TUNE_TWISTER is not set +# CONFIG_8139TOO_8129 is not set +CONFIG_SIS900=m +CONFIG_EPIC100=m +CONFIG_SUNDANCE=m +# CONFIG_TLAN is not set CONFIG_VIA_RHINE=m -CONFIG_EEPRO100=m -CONFIG_ADAPTEC_STARFIRE=m +CONFIG_WINBOND_840=m +# CONFIG_NET_POCKET is not set # # Ethernet (1000 Mbit) # CONFIG_ACENIC=m # CONFIG_ACENIC_OMIT_TIGON_I is not set -CONFIG_SK98LIN=m +CONFIG_DL2K=m CONFIG_MYRI_SBUS=m +CONFIG_NS83820=m +CONFIG_HAMACHI=m +CONFIG_YELLOWFIN=m +CONFIG_SK98LIN=m +# CONFIG_TIGON3 is not set CONFIG_FDDI=y +# CONFIG_DEFXX is not set CONFIG_SKFP=m +CONFIG_HIPPI=y +# CONFIG_ROADRUNNER is not set +CONFIG_PLIP=m +CONFIG_PPP=m +# CONFIG_PPP_MULTILINK is not set +# CONFIG_PPP_FILTER is not set +# CONFIG_PPP_ASYNC is not set +# CONFIG_PPP_SYNC_TTY is not set +# CONFIG_PPP_DEFLATE is not set +# CONFIG_PPP_BSDCOMP is not set +CONFIG_PPPOE=m +CONFIG_SLIP=m +CONFIG_SLIP_COMPRESSED=y +CONFIG_SLIP_SMART=y +# CONFIG_SLIP_MODE_SLIP6 is not set + +# +# Wireless LAN (non-hamradio) +# +# CONFIG_NET_RADIO is not set + +# +# Token Ring devices +# +# CONFIG_TR is not set +CONFIG_NET_FC=y +# CONFIG_IPHASE5526 is not set +# CONFIG_RCPCI is not set +# CONFIG_SHAPER is not set + +# +# Wan interfaces +# +# CONFIG_WAN is not set # # Unix 98 PTY support @@ -409,6 +563,19 @@ # CONFIG_DRM=y CONFIG_DRM_FFB=m +CONFIG_DRM_TDFX=m +# CONFIG_DRM_R128 is not set + +# +# Input core support +# +CONFIG_INPUT=y +CONFIG_INPUT_KEYBDEV=y +CONFIG_INPUT_MOUSEDEV=y +CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 +# CONFIG_INPUT_JOYDEV is not set +CONFIG_INPUT_EVDEV=y # # File systems @@ -418,22 +585,30 @@ CONFIG_AUTOFS4_FS=m # CONFIG_REISERFS_FS is not set # CONFIG_REISERFS_CHECK is not set +# CONFIG_REISERFS_PROC_INFO is not set # CONFIG_ADFS_FS is not set # CONFIG_ADFS_FS_RW is not set CONFIG_AFFS_FS=m # CONFIG_HFS_FS is not set CONFIG_BFS_FS=m +CONFIG_EXT3_FS=m +CONFIG_JBD=m +# CONFIG_JBD_DEBUG is not set CONFIG_FAT_FS=m CONFIG_MSDOS_FS=m # CONFIG_UMSDOS_FS is not set CONFIG_VFAT_FS=m CONFIG_EFS_FS=m # CONFIG_JFFS_FS is not set -CONFIG_CRAMFS=m +# CONFIG_JFFS2_FS is not set +# CONFIG_CRAMFS is not set +# CONFIG_TMPFS is not set CONFIG_RAMFS=m CONFIG_ISO9660_FS=m CONFIG_JOLIET=y +# CONFIG_ZISOFS is not set CONFIG_MINIX_FS=m +# CONFIG_VXFS_FS is not set # CONFIG_NTFS_FS is not set # CONFIG_NTFS_RW is not set CONFIG_HPFS_FS=m @@ -447,7 +622,6 @@ CONFIG_ROMFS_FS=m CONFIG_EXT2_FS=y CONFIG_SYSV_FS=m -CONFIG_SYSV_FS_WRITE=y CONFIG_UDF_FS=m CONFIG_UDF_RW=y CONFIG_UFS_FS=m @@ -457,6 +631,7 @@ # Network File Systems # CONFIG_CODA_FS=m +CONFIG_INTERMEZZO_FS=m CONFIG_NFS_FS=y CONFIG_NFS_V3=y # CONFIG_ROOT_NFS is not set @@ -475,6 +650,8 @@ # CONFIG_NCPFS_SMALLDOS is not set # CONFIG_NCPFS_NLS is not set # CONFIG_NCPFS_EXTRAS is not set +# CONFIG_ZISOFS_FS is not set +# CONFIG_ZLIB_FS_INFLATE is not set # # Partition Types @@ -504,11 +681,13 @@ # CONFIG_NLS_CODEPAGE_865 is not set # CONFIG_NLS_CODEPAGE_866 is not set # CONFIG_NLS_CODEPAGE_869 is not set -# CONFIG_NLS_CODEPAGE_874 is not set -# CONFIG_NLS_CODEPAGE_932 is not set # CONFIG_NLS_CODEPAGE_936 is not set -# CONFIG_NLS_CODEPAGE_949 is not set # CONFIG_NLS_CODEPAGE_950 is not set +# CONFIG_NLS_CODEPAGE_932 is not set +# CONFIG_NLS_CODEPAGE_949 is not set +# CONFIG_NLS_CODEPAGE_874 is not set +# CONFIG_NLS_ISO8859_8 is not set +# CONFIG_NLS_CODEPAGE_1251 is not set # CONFIG_NLS_ISO8859_1 is not set # CONFIG_NLS_ISO8859_2 is not set # CONFIG_NLS_ISO8859_3 is not set @@ -516,12 +695,163 @@ # CONFIG_NLS_ISO8859_5 is not set # CONFIG_NLS_ISO8859_6 is not set # CONFIG_NLS_ISO8859_7 is not set -# CONFIG_NLS_ISO8859_8 is not set # CONFIG_NLS_ISO8859_9 is not set +# CONFIG_NLS_ISO8859_13 is not set # CONFIG_NLS_ISO8859_14 is not set # CONFIG_NLS_ISO8859_15 is not set # CONFIG_NLS_KOI8_R is not set +# CONFIG_NLS_KOI8_U is not set # CONFIG_NLS_UTF8 is not set + +# +# Sound +# +CONFIG_SOUND=m +CONFIG_SOUND_BT878=m +# CONFIG_SOUND_CMPCI is not set +# CONFIG_SOUND_EMU10K1 is not set +# CONFIG_MIDI_EMU10K1 is not set +# CONFIG_SOUND_FUSION is not set +# CONFIG_SOUND_CS4281 is not set +# CONFIG_SOUND_ES1370 is not set +CONFIG_SOUND_ES1371=m +# CONFIG_SOUND_ESSSOLO1 is not set +# CONFIG_SOUND_MAESTRO is not set +# CONFIG_SOUND_MAESTRO3 is not set +# CONFIG_SOUND_ICH is not set +# CONFIG_SOUND_RME96XX is not set +# CONFIG_SOUND_SONICVIBES is not set +CONFIG_SOUND_TRIDENT=m +# CONFIG_SOUND_MSNDCLAS is not set +# CONFIG_SOUND_MSNDPIN is not set +# CONFIG_SOUND_VIA82CXXX is not set +# CONFIG_MIDI_VIA82CXXX is not set +# CONFIG_SOUND_OSS is not set +# CONFIG_SOUND_TVMIXER is not set + +# +# USB support +# +CONFIG_USB=y +# CONFIG_USB_DEBUG is not set + +# +# Miscellaneous USB options +# +CONFIG_USB_DEVICEFS=y +# CONFIG_USB_BANDWIDTH is not set +# CONFIG_USB_LONG_TIMEOUT is not set + +# +# USB Controllers +# +CONFIG_USB_UHCI=y +# CONFIG_USB_UHCI_ALT is not set +CONFIG_USB_OHCI=y + +# +# USB Device Class drivers +# +# CONFIG_USB_AUDIO is not set +CONFIG_USB_BLUETOOTH=m +CONFIG_USB_STORAGE=m +# CONFIG_USB_STORAGE_DEBUG is not set +# CONFIG_USB_STORAGE_DATAFAB is not set +CONFIG_USB_STORAGE_FREECOM=y +CONFIG_USB_STORAGE_ISD200=y +CONFIG_USB_STORAGE_DPCM=y +CONFIG_USB_STORAGE_HP8200e=y +CONFIG_USB_STORAGE_SDDR09=y +# CONFIG_USB_STORAGE_JUMPSHOT is not set +CONFIG_USB_ACM=m +CONFIG_USB_PRINTER=m + +# +# USB Human Interface Devices (HID) +# +CONFIG_USB_HID=y +# CONFIG_USB_HIDDEV is not set +CONFIG_USB_WACOM=m + +# +# USB Imaging devices +# +CONFIG_USB_DC2XX=m +CONFIG_USB_MDC800=m +CONFIG_USB_SCANNER=m +CONFIG_USB_MICROTEK=m +CONFIG_USB_HPUSBSCSI=m + +# +# USB Multimedia devices +# +CONFIG_USB_IBMCAM=m +CONFIG_USB_OV511=m +CONFIG_USB_PWC=m +CONFIG_USB_SE401=m +CONFIG_USB_DSBR=m +CONFIG_USB_DABUSB=m + +# +# USB Network adaptors +# +CONFIG_USB_PEGASUS=m +CONFIG_USB_KAWETH=m +CONFIG_USB_CATC=m +CONFIG_USB_CDCETHER=m +CONFIG_USB_USBNET=m + +# +# USB port drivers +# +CONFIG_USB_USS720=m + +# +# USB Serial Converter support +# +CONFIG_USB_SERIAL=m +CONFIG_USB_SERIAL_GENERIC=y +CONFIG_USB_SERIAL_BELKIN=m +CONFIG_USB_SERIAL_WHITEHEAT=m +CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m +CONFIG_USB_SERIAL_EMPEG=m +CONFIG_USB_SERIAL_FTDI_SIO=m +CONFIG_USB_SERIAL_VISOR=m +# CONFIG_USB_SERIAL_IR is not set +CONFIG_USB_SERIAL_EDGEPORT=m +CONFIG_USB_SERIAL_KEYSPAN_PDA=m +CONFIG_USB_SERIAL_KEYSPAN=m +# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set +CONFIG_USB_SERIAL_MCT_U232=m +CONFIG_USB_SERIAL_PL2303=m +CONFIG_USB_SERIAL_CYBERJACK=m +CONFIG_USB_SERIAL_XIRCOM=m +CONFIG_USB_SERIAL_OMNINET=m + +# +# USB Miscellaneous drivers +# +CONFIG_USB_RIO500=m + +# +# Bluetooth support +# +CONFIG_BLUEZ=m +CONFIG_BLUEZ_L2CAP=m + +# +# Bluetooth device drivers +# +CONFIG_BLUEZ_HCIUSB=m +CONFIG_BLUEZ_HCIUART=m +CONFIG_BLUEZ_HCIVHCI=m # # Watchdog Index: vmlinux.lds =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/sparc64/vmlinux.lds,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 --- vmlinux.lds 14 Jan 2001 19:42:32 -0000 1.1.1.1 +++ vmlinux.lds 10 Apr 2002 15:21:22 -0000 1.2 @@ -5,7 +5,6 @@ SECTIONS { - empty_zero_page = 0x0000000000400000; swapper_pmd_dir = 0x0000000000402000; empty_pg_dir = 0x0000000000403000; . = 0x4000; @@ -16,7 +15,7 @@ } =0 _etext = .; PROVIDE (etext = .); - .rodata : { *(.rodata) } + .rodata : { *(.rodata) *(.rodata.*) } .rodata1 : { *(.rodata1) } .data : { |
From: Andy P. <at...@us...> - 2002-04-10 18:37:43
|
Update of /cvsroot/linux-vax/kernel-2.4/arch/i386/lib In directory usw-pr-cvs1:/tmp/cvs-serv10929/i386/lib Modified Files: Makefile delay.c mmx.c usercopy.c Added Files: strstr.c Removed Files: putuser.S Log Message: synch 2.4.15 commit 35 --- NEW FILE --- #include <linux/string.h> char * strstr(const char * cs,const char * ct) { int d0, d1; register char * __res; __asm__ __volatile__( "movl %6,%%edi\n\t" "repne\n\t" "scasb\n\t" "notl %%ecx\n\t" "decl %%ecx\n\t" /* NOTE! This also sets Z if searchstring='' */ "movl %%ecx,%%edx\n" "1:\tmovl %6,%%edi\n\t" "movl %%esi,%%eax\n\t" "movl %%edx,%%ecx\n\t" "repe\n\t" "cmpsb\n\t" "je 2f\n\t" /* also works for empty string, see above */ "xchgl %%eax,%%esi\n\t" "incl %%esi\n\t" "cmpb $0,-1(%%eax)\n\t" "jne 1b\n\t" "xorl %%eax,%%eax\n\t" "2:" :"=a" (__res), "=&c" (d0), "=&S" (d1) :"0" (0), "1" (0xffffffff), "2" (cs), "g" (ct) :"dx", "di"); return __res; } Index: Makefile =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/i386/lib/Makefile,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 --- Makefile 14 Jan 2001 19:20:53 -0000 1.1.1.1 +++ Makefile 10 Apr 2002 14:23:21 -0000 1.2 @@ -8,10 +8,11 @@ L_TARGET = lib.a obj-y = checksum.o old-checksum.o delay.o \ - usercopy.o getuser.o putuser.o iodebug.o \ - memcpy.o + usercopy.o getuser.o \ + memcpy.o strstr.o obj-$(CONFIG_X86_USE_3DNOW) += mmx.o obj-$(CONFIG_HAVE_DEC_LOCK) += dec_and_lock.o +obj-$(CONFIG_DEBUG_IOVIRT) += iodebug.o include $(TOPDIR)/Rules.make Index: delay.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/i386/lib/delay.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 --- delay.c 14 Jan 2001 19:20:53 -0000 1.1.1.1 +++ delay.c 10 Apr 2002 14:23:21 -0000 1.2 @@ -13,6 +13,7 @@ #include <linux/config.h> #include <linux/sched.h> #include <linux/delay.h> +#include <asm/processor.h> #include <asm/delay.h> #ifdef CONFIG_SMP @@ -34,9 +35,9 @@ rdtscl(bclock); do { + rep_nop(); rdtscl(now); - } - while((now-bclock) < loops); + } while ((now-bclock) < loops); } /* @@ -58,7 +59,7 @@ void __delay(unsigned long loops) { - if(x86_udelay_tsc) + if (x86_udelay_tsc) __rdtsc_delay(loops); else __loop_delay(loops); Index: mmx.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/i386/lib/mmx.c,v retrieving revision 1.1.1.2 retrieving revision 1.2 diff -u -r1.1.1.2 -r1.2 --- mmx.c 25 Feb 2001 23:15:16 -0000 1.1.1.2 +++ mmx.c 10 Apr 2002 14:23:21 -0000 1.2 @@ -1,8 +1,11 @@ +#include <linux/config.h> #include <linux/types.h> #include <linux/string.h> #include <linux/sched.h> #include <asm/i387.h> +#include <asm/hardirq.h> + /* * MMX 3DNow! library helper functions @@ -25,8 +28,14 @@ void *_mmx_memcpy(void *to, const void *from, size_t len) { - void *p=to; - int i= len >> 6; /* len/64 */ + void *p; + int i; + + if (in_interrupt()) + return __memcpy(to, from, len); + + p = to; + i = len >> 6; /* len/64 */ kernel_fpu_begin(); @@ -88,6 +97,13 @@ return p; } +#ifdef CONFIG_MK7 + +/* + * The K7 has streaming cache bypass load/store. The Cyrix III, K6 and + * other MMX using processors do not. + */ + static void fast_clear_page(void *page) { int i; @@ -147,7 +163,7 @@ ".previous" : : "r" (from) ); - for(i=0; i<4096/64; i++) + for(i=0; i<(4096-320)/64; i++) { __asm__ __volatile__ ( "1: prefetch 320(%0)\n" @@ -179,6 +195,29 @@ from+=64; to+=64; } + for(i=(4096-320)/64; i<4096/64; i++) + { + __asm__ __volatile__ ( + "2: movq (%0), %%mm0\n" + " movntq %%mm0, (%1)\n" + " movq 8(%0), %%mm1\n" + " movntq %%mm1, 8(%1)\n" + " movq 16(%0), %%mm2\n" + " movntq %%mm2, 16(%1)\n" + " movq 24(%0), %%mm3\n" + " movntq %%mm3, 24(%1)\n" + " movq 32(%0), %%mm4\n" + " movntq %%mm4, 32(%1)\n" + " movq 40(%0), %%mm5\n" + " movntq %%mm5, 40(%1)\n" + " movq 48(%0), %%mm6\n" + " movntq %%mm6, 48(%1)\n" + " movq 56(%0), %%mm7\n" + " movntq %%mm7, 56(%1)\n" + : : "r" (from), "r" (to) : "memory"); + from+=64; + to+=64; + } /* since movntq is weakly-ordered, a "sfence" is needed to become * ordered again. */ @@ -187,6 +226,110 @@ ); kernel_fpu_end(); } + +#else + +/* + * Generic MMX implementation without K7 specific streaming + */ + +static void fast_clear_page(void *page) +{ + int i; + + kernel_fpu_begin(); + + __asm__ __volatile__ ( + " pxor %%mm0, %%mm0\n" : : + ); + + for(i=0;i<4096/128;i++) + { + __asm__ __volatile__ ( + " movq %%mm0, (%0)\n" + " movq %%mm0, 8(%0)\n" + " movq %%mm0, 16(%0)\n" + " movq %%mm0, 24(%0)\n" + " movq %%mm0, 32(%0)\n" + " movq %%mm0, 40(%0)\n" + " movq %%mm0, 48(%0)\n" + " movq %%mm0, 56(%0)\n" + " movq %%mm0, 64(%0)\n" + " movq %%mm0, 72(%0)\n" + " movq %%mm0, 80(%0)\n" + " movq %%mm0, 88(%0)\n" + " movq %%mm0, 96(%0)\n" + " movq %%mm0, 104(%0)\n" + " movq %%mm0, 112(%0)\n" + " movq %%mm0, 120(%0)\n" + : : "r" (page) : "memory"); + page+=128; + } + + kernel_fpu_end(); +} + +static void fast_copy_page(void *to, void *from) +{ + int i; + + + kernel_fpu_begin(); + + __asm__ __volatile__ ( + "1: prefetch (%0)\n" + " prefetch 64(%0)\n" + " prefetch 128(%0)\n" + " prefetch 192(%0)\n" + " prefetch 256(%0)\n" + "2: \n" + ".section .fixup, \"ax\"\n" + "3: movw $0x1AEB, 1b\n" /* jmp on 26 bytes */ + " jmp 2b\n" + ".previous\n" + ".section __ex_table,\"a\"\n" + " .align 4\n" + " .long 1b, 3b\n" + ".previous" + : : "r" (from) ); + + for(i=0; i<4096/64; i++) + { + __asm__ __volatile__ ( + "1: prefetch 320(%0)\n" + "2: movq (%0), %%mm0\n" + " movq 8(%0), %%mm1\n" + " movq 16(%0), %%mm2\n" + " movq 24(%0), %%mm3\n" + " movq %%mm0, (%1)\n" + " movq %%mm1, 8(%1)\n" + " movq %%mm2, 16(%1)\n" + " movq %%mm3, 24(%1)\n" + " movq 32(%0), %%mm0\n" + " movq 40(%0), %%mm1\n" + " movq 48(%0), %%mm2\n" + " movq 56(%0), %%mm3\n" + " movq %%mm0, 32(%1)\n" + " movq %%mm1, 40(%1)\n" + " movq %%mm2, 48(%1)\n" + " movq %%mm3, 56(%1)\n" + ".section .fixup, \"ax\"\n" + "3: movw $0x05EB, 1b\n" /* jmp on 5 bytes */ + " jmp 2b\n" + ".previous\n" + ".section __ex_table,\"a\"\n" + " .align 4\n" + " .long 1b, 3b\n" + ".previous" + : : "r" (from), "r" (to) : "memory"); + from+=64; + to+=64; + } + kernel_fpu_end(); +} + + +#endif /* * Favour MMX for page clear and copy. Index: usercopy.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/i386/lib/usercopy.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 --- usercopy.c 14 Jan 2001 19:20:54 -0000 1.1.1.1 +++ usercopy.c 10 Apr 2002 14:23:21 -0000 1.2 @@ -34,6 +34,8 @@ else mmx_copy_user_zeroing(to, from, n); } + else + memset(to, 0, n); return n; } @@ -42,6 +44,7 @@ unsigned long __generic_copy_to_user(void *to, const void *from, unsigned long n) { + prefetch(from); if (access_ok(VERIFY_WRITE, to, n)) __copy_user(to,from,n); return n; @@ -50,8 +53,11 @@ unsigned long __generic_copy_from_user(void *to, const void *from, unsigned long n) { + prefetchw(to); if (access_ok(VERIFY_READ, from, n)) __copy_user_zeroing(to,from,n); + else + memset(to, 0, n); return n; } @@ -159,6 +165,8 @@ unsigned long res, tmp; __asm__ __volatile__( + " testl %0, %0\n" + " jz 3f\n" " andl %0,%%ecx\n" "0: repne; scasb\n" " setne %%al\n" @@ -167,6 +175,8 @@ "1:\n" ".section .fixup,\"ax\"\n" "2: xorl %%eax,%%eax\n" + " jmp 1b\n" + "3: movb $1,%%al\n" " jmp 1b\n" ".previous\n" ".section __ex_table,\"a\"\n" --- putuser.S DELETED --- |
From: Andy P. <at...@us...> - 2002-04-10 18:37:40
|
Update of /cvsroot/linux-vax/kernel-2.4/arch/i386/mm In directory usw-pr-cvs1:/tmp/cvs-serv10929/i386/mm Modified Files: extable.c fault.c init.c ioremap.c Log Message: synch 2.4.15 commit 35 Index: extable.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/i386/mm/extable.c,v retrieving revision 1.1.1.2 retrieving revision 1.2 diff -u -r1.1.1.2 -r1.2 --- extable.c 25 Feb 2001 23:15:16 -0000 1.1.1.2 +++ extable.c 10 Apr 2002 14:23:22 -0000 1.2 @@ -37,19 +37,19 @@ search_exception_table(unsigned long addr) { unsigned long ret = 0; - unsigned long flags; #ifndef CONFIG_MODULES /* There is only the kernel to search. */ ret = search_one_table(__start___ex_table, __stop___ex_table-1, addr); return ret; #else + unsigned long flags; /* The kernel is the last "module" -- no need to treat it special. */ struct module *mp; spin_lock_irqsave(&modlist_lock, flags); for (mp = module_list; mp != NULL; mp = mp->next) { - if (mp->ex_table_start == NULL) + if (mp->ex_table_start == NULL || !(mp->flags&(MOD_RUNNING|MOD_INITIALIZING))) continue; ret = search_one_table(mp->ex_table_start, mp->ex_table_end - 1, addr); Index: fault.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/i386/mm/fault.c,v retrieving revision 1.1.1.2 retrieving revision 1.2 diff -u -r1.1.1.2 -r1.2 --- fault.c 25 Feb 2001 23:15:16 -0000 1.1.1.2 +++ fault.c 10 Apr 2002 14:23:22 -0000 1.2 @@ -17,6 +17,8 @@ #include <linux/smp_lock.h> #include <linux/interrupt.h> #include <linux/init.h> +#include <linux/tty.h> +#include <linux/vt_kern.h> /* For unblank_screen() */ #include <asm/system.h> #include <asm/uaccess.h> @@ -25,6 +27,8 @@ extern void die(const char *,struct pt_regs *,long); +extern int console_loglevel; + /* * Ugly, ugly, but the goto's result in better assembly.. */ @@ -51,8 +55,14 @@ start &= PAGE_MASK; for (;;) { - if (handle_mm_fault(current->mm, vma, start, 1) <= 0) - goto bad_area; + survive: + { + int fault = handle_mm_fault(current->mm, vma, start, 1); + if (!fault) + goto bad_area; + if (fault < 0) + goto out_of_memory; + } if (!size) break; size--; @@ -75,19 +85,52 @@ bad_area: return 0; + +out_of_memory: + if (current->pid == 1) { + current->policy |= SCHED_YIELD; + schedule(); + goto survive; + } + goto bad_area; } -extern spinlock_t console_lock, timerlist_lock; +extern spinlock_t timerlist_lock; /* * Unlock any spinlocks which will prevent us from getting the * message out (timerlist_lock is acquired through the * console unblank code) */ -void bust_spinlocks(void) +void bust_spinlocks(int yes) { - spin_lock_init(&console_lock); spin_lock_init(&timerlist_lock); + if (yes) { + oops_in_progress = 1; +#ifdef CONFIG_SMP + global_irq_lock = 0; /* Many serial drivers do __global_cli() */ +#endif + } else { + int loglevel_save = console_loglevel; +#ifdef CONFIG_VT + unblank_screen(); +#endif + oops_in_progress = 0; + /* + * OK, the message is on the console. Now we call printk() + * without oops_in_progress set so that printk will give klogd + * a poke. Hold onto your hats... + */ + console_loglevel = 15; /* NMI oopser may have shut the console up */ + printk(" "); + console_loglevel = loglevel_save; + } +} + +void do_BUG(const char *file, int line) +{ + bust_spinlocks(1); + printk("kernel BUG at %s:%d!\n", file, line); } asmlinkage void do_invalid_op(struct pt_regs *, unsigned long); @@ -117,6 +160,10 @@ /* get the address */ __asm__("movl %%cr2,%0":"=r" (address)); + /* It's safe to allow irq's after cr2 has been saved */ + if (regs->eflags & X86_EFLAGS_IF) + local_irq_enable(); + tsk = current; /* @@ -127,8 +174,12 @@ * be in an interrupt or a critical region, and should * only copy the information from the master page table, * nothing more. + * + * This verifies that the fault happens in kernel space + * (error_code & 4) == 0, and that the fault was not a + * protection error (error_code & 1) == 0. */ - if (address >= TASK_SIZE) + if (address >= TASK_SIZE && !(error_code & 5)) goto vmalloc_fault; mm = tsk->mm; @@ -141,7 +192,7 @@ if (in_interrupt() || !mm) goto no_context; - down(&mm->mmap_sem); + down_read(&mm->mmap_sem); vma = find_vma(mm, address); if (!vma) @@ -188,6 +239,7 @@ goto bad_area; } + survive: /* * If for any reason at all we couldn't handle the fault, * make sure we exit gracefully rather than endlessly redo @@ -214,7 +266,7 @@ if (bit < 32) tsk->thread.screen_bitmap |= 1 << bit; } - up(&mm->mmap_sem); + up_read(&mm->mmap_sem); return; /* @@ -222,9 +274,8 @@ * Fix it, but check if it's kernel or user first.. */ bad_area: - up(&mm->mmap_sem); + up_read(&mm->mmap_sem); -bad_area_nosemaphore: /* User mode accesses just cause a SIGSEGV */ if (error_code & 4) { tsk->thread.cr2 = address; @@ -264,7 +315,7 @@ * terminate things with extreme prejudice. */ - bust_spinlocks(); + bust_spinlocks(1); if (address < PAGE_SIZE) printk(KERN_ALERT "Unable to handle kernel NULL pointer dereference"); @@ -283,6 +334,7 @@ printk(KERN_ALERT "*pte = %08lx\n", page); } die("Oops", regs, error_code); + bust_spinlocks(0); do_exit(SIGKILL); /* @@ -290,14 +342,20 @@ * us unable to handle the page fault gracefully. */ out_of_memory: - up(&mm->mmap_sem); + up_read(&mm->mmap_sem); + if (tsk->pid == 1) { + tsk->policy |= SCHED_YIELD; + schedule(); + down_read(&mm->mmap_sem); + goto survive; + } printk("VM: killing process %s\n", tsk->comm); if (error_code & 4) do_exit(SIGKILL); goto no_context; do_sigbus: - up(&mm->mmap_sem); + up_read(&mm->mmap_sem); /* * Send a sigbus, regardless of whether we were in kernel @@ -306,7 +364,7 @@ tsk->thread.cr2 = address; tsk->thread.error_code = error_code; tsk->thread.trap_no = 14; - info.si_code = SIGBUS; + info.si_signo = SIGBUS; info.si_errno = 0; info.si_code = BUS_ADRERR; info.si_addr = (void *)address; @@ -322,27 +380,32 @@ /* * Synchronize this task's top level page-table * with the 'reference' page table. + * + * Do _not_ use "tsk" here. We might be inside + * an interrupt in the middle of a task switch.. */ int offset = __pgd_offset(address); pgd_t *pgd, *pgd_k; pmd_t *pmd, *pmd_k; + pte_t *pte_k; - pgd = tsk->active_mm->pgd + offset; + asm("movl %%cr3,%0":"=r" (pgd)); + pgd = offset + (pgd_t *)__va(pgd); pgd_k = init_mm.pgd + offset; - if (!pgd_present(*pgd)) { - if (!pgd_present(*pgd_k)) - goto bad_area_nosemaphore; - set_pgd(pgd, *pgd_k); - return; - } - + if (!pgd_present(*pgd_k)) + goto no_context; + set_pgd(pgd, *pgd_k); + pmd = pmd_offset(pgd, address); pmd_k = pmd_offset(pgd_k, address); - - if (pmd_present(*pmd) || !pmd_present(*pmd_k)) - goto bad_area_nosemaphore; + if (!pmd_present(*pmd_k)) + goto no_context; set_pmd(pmd, *pmd_k); + + pte_k = pte_offset(pmd_k, address); + if (!pte_present(*pte_k)) + goto no_context; return; } } Index: init.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/i386/mm/init.c,v retrieving revision 1.1.1.2 retrieving revision 1.2 diff -u -r1.1.1.2 -r1.2 --- init.c 25 Feb 2001 23:15:16 -0000 1.1.1.2 +++ init.c 10 Apr 2002 14:23:22 -0000 1.2 @@ -35,137 +35,30 @@ #include <asm/fixmap.h> #include <asm/e820.h> #include <asm/apic.h> +#include <asm/tlb.h> +mmu_gather_t mmu_gathers[NR_CPUS]; unsigned long highstart_pfn, highend_pfn; static unsigned long totalram_pages; static unsigned long totalhigh_pages; -/* - * BAD_PAGE is the page that is used for page faults when linux - * is out-of-memory. Older versions of linux just did a - * do_exit(), but using this instead means there is less risk - * for a process dying in kernel mode, possibly leaving an inode - * unused etc.. - * - * BAD_PAGETABLE is the accompanying page-table: it is initialized - * to point to BAD_PAGE entries. - * - * ZERO_PAGE is a special page that is used for zero-initialized - * data and COW. - */ - -/* - * These are allocated in head.S so that we get proper page alignment. - * If you change the size of these then change head.S as well. - */ -extern char empty_bad_page[PAGE_SIZE]; -#if CONFIG_X86_PAE -extern pmd_t empty_bad_pmd_table[PTRS_PER_PMD]; -#endif -extern pte_t empty_bad_pte_table[PTRS_PER_PTE]; - -/* - * We init them before every return and make them writable-shared. - * This guarantees we get out of the kernel in some more or less sane - * way. - */ -#if CONFIG_X86_PAE -static pmd_t * get_bad_pmd_table(void) -{ - pmd_t v; - int i; - - set_pmd(&v, __pmd(_PAGE_TABLE + __pa(empty_bad_pte_table))); - - for (i = 0; i < PAGE_SIZE/sizeof(pmd_t); i++) - empty_bad_pmd_table[i] = v; - - return empty_bad_pmd_table; -} -#endif - -static pte_t * get_bad_pte_table(void) -{ - pte_t v; - int i; - - v = pte_mkdirty(mk_pte_phys(__pa(empty_bad_page), PAGE_SHARED)); - - for (i = 0; i < PAGE_SIZE/sizeof(pte_t); i++) - empty_bad_pte_table[i] = v; - - return empty_bad_pte_table; -} - - - -void __handle_bad_pmd(pmd_t *pmd) -{ - pmd_ERROR(*pmd); - set_pmd(pmd, __pmd(_PAGE_TABLE + __pa(get_bad_pte_table()))); -} - -void __handle_bad_pmd_kernel(pmd_t *pmd) -{ - pmd_ERROR(*pmd); - set_pmd(pmd, __pmd(_KERNPG_TABLE + __pa(get_bad_pte_table()))); -} - -pte_t *get_pte_kernel_slow(pmd_t *pmd, unsigned long offset) -{ - pte_t *pte; - - pte = (pte_t *) __get_free_page(GFP_KERNEL); - if (pmd_none(*pmd)) { - if (pte) { - clear_page(pte); - set_pmd(pmd, __pmd(_KERNPG_TABLE + __pa(pte))); - return pte + offset; - } - set_pmd(pmd, __pmd(_KERNPG_TABLE + __pa(get_bad_pte_table()))); - return NULL; - } - free_page((unsigned long)pte); - if (pmd_bad(*pmd)) { - __handle_bad_pmd_kernel(pmd); - return NULL; - } - return (pte_t *) pmd_page(*pmd) + offset; -} - -pte_t *get_pte_slow(pmd_t *pmd, unsigned long offset) -{ - unsigned long pte; - - pte = (unsigned long) __get_free_page(GFP_KERNEL); - if (pmd_none(*pmd)) { - if (pte) { - clear_page((void *)pte); - set_pmd(pmd, __pmd(_PAGE_TABLE + __pa(pte))); - return (pte_t *)pte + offset; - } - set_pmd(pmd, __pmd(_PAGE_TABLE + __pa(get_bad_pte_table()))); - return NULL; - } - free_page(pte); - if (pmd_bad(*pmd)) { - __handle_bad_pmd(pmd); - return NULL; - } - return (pte_t *) pmd_page(*pmd) + offset; -} - int do_check_pgt_cache(int low, int high) { int freed = 0; if(pgtable_cache_size > high) { do { - if(pgd_quicklist) - free_pgd_slow(get_pgd_fast()), freed++; - if(pmd_quicklist) - free_pmd_slow(get_pmd_fast()), freed++; - if(pte_quicklist) - free_pte_slow(get_pte_fast()), freed++; + if (pgd_quicklist) { + free_pgd_slow(get_pgd_fast()); + freed++; + } + if (pmd_quicklist) { + pmd_free_slow(pmd_alloc_one_fast(NULL, 0)); + freed++; + } + if (pte_quicklist) { + pte_free_slow(pte_alloc_one_fast(NULL, 0)); + freed++; + } } while(pgtable_cache_size > low); } return freed; @@ -327,10 +220,8 @@ pgd_base = swapper_pg_dir; #if CONFIG_X86_PAE - for (i = 0; i < PTRS_PER_PGD; i++) { - pgd = pgd_base + i; - __pgd_clear(pgd); - } + for (i = 0; i < PTRS_PER_PGD; i++) + set_pgd(pgd_base + i, __pgd(1 + __pa(empty_zero_page))); #endif i = __pgd_offset(PAGE_OFFSET); pgd = pgd_base + i; @@ -420,14 +311,11 @@ * Zap initial low-memory mappings. * * Note that "pgd_clear()" doesn't do it for - * us in this case, because pgd_clear() is a - * no-op in the 2-level case (pmd_clear() is - * the thing that clears the page-tables in - * that case). + * us, because pgd_clear() is a no-op on i386. */ for (i = 0; i < USER_PTRS_PER_PGD; i++) #if CONFIG_X86_PAE - pgd_clear(swapper_pg_dir+i); + set_pgd(swapper_pg_dir+i, __pgd(1 + __pa(empty_zero_page))); #else set_pgd(swapper_pg_dir+i, __pgd(0)); #endif @@ -551,13 +439,24 @@ return 0; } +static inline int page_kills_ppro(unsigned long pagenr) +{ + if(pagenr >= 0x70000 && pagenr <= 0x7003F) + return 1; + return 0; +} + void __init mem_init(void) { + extern int ppro_with_ram_bug(void); int codesize, reservedpages, datasize, initsize; int tmp; + int bad_ppro; if (!mem_map) BUG(); + + bad_ppro = ppro_with_ram_bug(); #ifdef CONFIG_HIGHMEM highmem_start_page = mem_map + highstart_pfn; @@ -585,6 +484,11 @@ struct page *page = mem_map + tmp; if (!page_is_ram(tmp)) { + SetPageReserved(page); + continue; + } + if (bad_ppro && page_kills_ppro(tmp)) + { SetPageReserved(page); continue; } Index: ioremap.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/i386/mm/ioremap.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 --- ioremap.c 14 Jan 2001 19:20:04 -0000 1.1.1.1 +++ ioremap.c 10 Apr 2002 14:23:22 -0000 1.2 @@ -49,7 +49,7 @@ if (address >= end) BUG(); do { - pte_t * pte = pte_alloc_kernel(pmd, address); + pte_t * pte = pte_alloc(&init_mm, pmd, address); if (!pte) return -ENOMEM; remap_area_pte(pte, address, end - address, address + phys_addr, flags); @@ -62,6 +62,7 @@ static int remap_area_pages(unsigned long address, unsigned long phys_addr, unsigned long size, unsigned long flags) { + int error; pgd_t * dir; unsigned long end = address + size; @@ -70,19 +71,23 @@ flush_cache_all(); if (address >= end) BUG(); + spin_lock(&init_mm.page_table_lock); do { pmd_t *pmd; - pmd = pmd_alloc_kernel(dir, address); + pmd = pmd_alloc(&init_mm, dir, address); + error = -ENOMEM; if (!pmd) - return -ENOMEM; + break; if (remap_area_pmd(pmd, address, end - address, phys_addr + address, flags)) - return -ENOMEM; + break; + error = 0; address = (address + PGDIR_SIZE) & PGDIR_MASK; dir++; } while (address && (address < end)); + spin_unlock(&init_mm.page_table_lock); flush_tlb_all(); - return 0; + return error; } /* |
From: Andy P. <at...@us...> - 2002-04-10 18:37:27
|
Update of /cvsroot/linux-vax/kernel-2.4/arch/alpha/lib In directory usw-pr-cvs1:/tmp/cvs-serv19209/alpha/lib Modified Files: Makefile io.c Added Files: dec_and_lock.c udelay.c Log Message: synch 2.4.15 commit 31 --- NEW FILE --- /* * arch/alpha/lib/dec_and_lock.c * * ll/sc version of atomic_dec_and_lock() * */ #include <linux/spinlock.h> #include <asm/atomic.h> asm (".text \n\ .global atomic_dec_and_lock \n\ .ent atomic_dec_and_lock \n\ .align 4 \n\ atomic_dec_and_lock: \n\ .prologue 0 \n\ 1: ldl_l $1, 0($16) \n\ subl $1, 1, $1 \n\ beq $1, 2f \n\ stl_c $1, 0($16) \n\ beq $1, 4f \n\ mb \n\ clr $0 \n\ ret \n\ 2: br $29, 3f \n\ 3: ldgp $29, 0($29) \n\ br $atomic_dec_and_lock_1..ng \n\ .subsection 2 \n\ 4: br 1b \n\ .end atomic_dec_and_lock"); static int __attribute__((unused)) atomic_dec_and_lock_1(atomic_t *atomic, spinlock_t *lock) { /* Slow path */ spin_lock(lock); if (atomic_dec_and_test(atomic)) return 1; spin_unlock(lock); return 0; } --- NEW FILE --- #include <linux/config.h> #include <linux/sched.h> /* for udelay's use of smp_processor_id */ #include <asm/param.h> #include <asm/smp.h> #include <linux/delay.h> /* * Copyright (C) 1993, 2000 Linus Torvalds * * Delay routines, using a pre-computed "loops_per_jiffy" value. */ /* * Use only for very small delays (< 1 msec). * * The active part of our cycle counter is only 32-bits wide, and * we're treating the difference between two marks as signed. On * a 1GHz box, that's about 2 seconds. */ void __delay(int loops) { int tmp; __asm__ __volatile__( " rpcc %0\n" " addl %1,%0,%1\n" "1: rpcc %0\n" " subl %1,%0,%0\n" " bgt %0,1b" : "=&r" (tmp), "=r" (loops) : "1"(loops)); } void __udelay(unsigned long usecs, unsigned long lpj) { usecs *= (((unsigned long)HZ << 32) / 1000000) * lpj; __delay((long)usecs >> 32); } void udelay(unsigned long usecs) { #ifdef CONFIG_SMP __udelay(usecs, cpu_data[smp_processor_id()].loops_per_jiffy); #else __udelay(usecs, loops_per_jiffy); #endif } Index: Makefile =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/alpha/lib/Makefile,v retrieving revision 1.1.1.2 retrieving revision 1.2 diff -u -r1.1.1.2 -r1.2 --- Makefile 25 Feb 2001 23:15:16 -0000 1.1.1.2 +++ Makefile 10 Apr 2002 13:07:22 -0000 1.2 @@ -21,6 +21,7 @@ endif OBJS = __divqu.o __remqu.o __divlu.o __remlu.o \ + udelay.o \ $(ev6)memset.o \ $(ev6)memcpy.o \ memmove.o \ @@ -47,6 +48,10 @@ strcasecmp.o \ fpreg.o \ callback_srm.o srm_puts.o srm_printk.o + +ifeq ($(CONFIG_SMP),y) + OBJS += dec_and_lock.o +endif lib.a: $(OBJS) $(AR) rcs lib.a $(OBJS) Index: io.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/alpha/lib/io.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 --- io.c 14 Jan 2001 19:22:30 -0000 1.1.1.1 +++ io.c 10 Apr 2002 13:07:22 -0000 1.2 @@ -9,124 +9,124 @@ #include <asm/io.h> -unsigned int _inb(unsigned long addr) +u8 _inb(unsigned long addr) { return __inb(addr); } -unsigned int _inw(unsigned long addr) +u16 _inw(unsigned long addr) { return __inw(addr); } -unsigned int _inl(unsigned long addr) +u32 _inl(unsigned long addr) { return __inl(addr); } -void _outb(unsigned char b, unsigned long addr) +void _outb(u8 b, unsigned long addr) { __outb(b, addr); } -void _outw(unsigned short b, unsigned long addr) +void _outw(u16 b, unsigned long addr) { __outw(b, addr); } -void _outl(unsigned int b, unsigned long addr) +void _outl(u32 b, unsigned long addr) { __outl(b, addr); } -unsigned long ___raw_readb(unsigned long addr) +u8 ___raw_readb(unsigned long addr) { return __readb(addr); } -unsigned long ___raw_readw(unsigned long addr) +u16 ___raw_readw(unsigned long addr) { return __readw(addr); } -unsigned long ___raw_readl(unsigned long addr) +u32 ___raw_readl(unsigned long addr) { return __readl(addr); } -unsigned long ___raw_readq(unsigned long addr) +u64 ___raw_readq(unsigned long addr) { return __readq(addr); } -unsigned long _readb(unsigned long addr) +u8 _readb(unsigned long addr) { unsigned long r = __readb(addr); mb(); return r; } -unsigned long _readw(unsigned long addr) +u16 _readw(unsigned long addr) { unsigned long r = __readw(addr); mb(); return r; } -unsigned long _readl(unsigned long addr) +u32 _readl(unsigned long addr) { unsigned long r = __readl(addr); mb(); return r; } -unsigned long _readq(unsigned long addr) +u64 _readq(unsigned long addr) { unsigned long r = __readq(addr); mb(); return r; } -void ___raw_writeb(unsigned char b, unsigned long addr) +void ___raw_writeb(u8 b, unsigned long addr) { __writeb(b, addr); } -void ___raw_writew(unsigned short b, unsigned long addr) +void ___raw_writew(u16 b, unsigned long addr) { __writew(b, addr); } -void ___raw_writel(unsigned int b, unsigned long addr) +void ___raw_writel(u32 b, unsigned long addr) { __writel(b, addr); } -void ___raw_writeq(unsigned long b, unsigned long addr) +void ___raw_writeq(u64 b, unsigned long addr) { __writeq(b, addr); } -void _writeb(unsigned char b, unsigned long addr) +void _writeb(u8 b, unsigned long addr) { __writeb(b, addr); mb(); } -void _writew(unsigned short b, unsigned long addr) +void _writew(u16 b, unsigned long addr) { __writew(b, addr); mb(); } -void _writel(unsigned int b, unsigned long addr) +void _writel(u32 b, unsigned long addr) { __writel(b, addr); mb(); } -void _writeq(unsigned long b, unsigned long addr) +void _writeq(u64 b, unsigned long addr) { __writeq(b, addr); mb(); |
From: Andy P. <at...@us...> - 2002-04-10 18:37:13
|
Update of /cvsroot/linux-vax/kernel-2.4/arch/ppc/boot/utils In directory usw-pr-cvs1:/tmp/cvs-serv25860/ppc/boot/utils Added Files: Makefile addnote.c elf.pl hack-coff.c mkevimg mkirimg mknote.c mkprep.c mksimage.c offset piggyback.c sioffset sisize size Log Message: synch 2.4.15 commit 43 --- NEW FILE --- # # arch/ppc/boot/utils/Makefile # # This file is subject to the terms and conditions of the GNU General Public # License. See the file "COPYING" in the main directory of this archive # for more details. HOSTCFLAGS += -I$(TOPDIR)/arch/$(ARCH)/boot/include all: dummy # Simple programs with 1 file and no extra CFLAGS UTILS = addnote hack-coff mkprep mksimage mknote piggyback mkpmon mkbugboot $(UTILS): $(HOSTCC) $(HOSTCFLAGS) -o $@ $@.c clean: rm -f $(UTILS) include $(TOPDIR)/Rules.make --- NEW FILE --- /* * BK Id: SCCS/s.addnote.c 1.7 05/18/01 15:17:23 cort */ /* * Program to hack in a PT_NOTE program header entry in an ELF file. * This is needed for OF on RS/6000s to load an image correctly. * Note that OF needs a program header entry for the note, not an * ELF section. * * Copyright 2000 Paul Mackerras. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version * 2 of the License, or (at your option) any later version. * * Usage: addnote zImage */ #include <stdio.h> #include <fcntl.h> #include <unistd.h> #include <string.h> char arch[] = "PowerPC"; #define N_DESCR 6 unsigned int descr[N_DESCR] = { #if 1 /* values for IBM RS/6000 machines */ 0xffffffff, /* real-mode = true */ 0x00c00000, /* real-base, i.e. where we expect OF to be */ 0xffffffff, /* real-size */ 0xffffffff, /* virt-base */ 0xffffffff, /* virt-size */ 0x4000, /* load-base */ #else /* values for longtrail CHRP */ 0, /* real-mode = false */ 0xffffffff, /* real-base */ 0xffffffff, /* real-size */ 0xffffffff, /* virt-base */ 0xffffffff, /* virt-size */ 0x00600000, /* load-base */ #endif }; unsigned char buf[512]; #define GET_16BE(off) ((buf[off] << 8) + (buf[(off)+1])) #define GET_32BE(off) ((GET_16BE(off) << 16) + GET_16BE((off)+2)) #define PUT_16BE(off, v) (buf[off] = ((v) >> 8) & 0xff, \ buf[(off) + 1] = (v) & 0xff) #define PUT_32BE(off, v) (PUT_16BE((off), (v) >> 16), \ PUT_16BE((off) + 2, (v))) /* Structure of an ELF file */ #define E_IDENT 0 /* ELF header */ #define E_PHOFF 28 #define E_PHENTSIZE 42 #define E_PHNUM 44 #define E_HSIZE 52 /* size of ELF header */ #define EI_MAGIC 0 /* offsets in E_IDENT area */ #define EI_CLASS 4 #define EI_DATA 5 #define PH_TYPE 0 /* ELF program header */ #define PH_OFFSET 4 #define PH_FILESZ 16 #define PH_HSIZE 32 /* size of program header */ #define PT_NOTE 4 /* Program header type = note */ #define ELFCLASS32 1 #define ELFDATA2MSB 2 unsigned char elf_magic[4] = { 0x7f, 'E', 'L', 'F' }; int main(int ac, char **av) { int fd, n, i; int ph, ps, np; int nnote, ns; if (ac != 2) { fprintf(stderr, "Usage: %s elf-file\n", av[0]); exit(1); } fd = open(av[1], O_RDWR); if (fd < 0) { perror(av[1]); exit(1); } nnote = strlen(arch) + 1 + (N_DESCR + 3) * 4; n = read(fd, buf, sizeof(buf)); if (n < 0) { perror("read"); exit(1); } if (n < E_HSIZE || memcmp(&buf[E_IDENT+EI_MAGIC], elf_magic, 4) != 0) goto notelf; if (buf[E_IDENT+EI_CLASS] != ELFCLASS32 || buf[E_IDENT+EI_DATA] != ELFDATA2MSB) { fprintf(stderr, "%s is not a big-endian 32-bit ELF image\n", av[1]); exit(1); } ph = GET_32BE(E_PHOFF); ps = GET_16BE(E_PHENTSIZE); np = GET_16BE(E_PHNUM); if (ph < E_HSIZE || ps < PH_HSIZE || np < 1) goto notelf; if (ph + (np + 1) * ps + nnote > n) goto nospace; for (i = 0; i < np; ++i) { if (GET_32BE(ph + PH_TYPE) == PT_NOTE) { fprintf(stderr, "%s already has a note entry\n", av[1]); exit(0); } ph += ps; } /* XXX check that the area we want to use is all zeroes */ for (i = 0; i < ps + nnote; ++i) if (buf[ph + i] != 0) goto nospace; /* fill in the program header entry */ ns = ph + ps; PUT_32BE(ph + PH_TYPE, PT_NOTE); PUT_32BE(ph + PH_OFFSET, ns); PUT_32BE(ph + PH_FILESZ, nnote); /* fill in the note area we point to */ /* XXX we should probably make this a proper section */ PUT_32BE(ns, strlen(arch) + 1); PUT_32BE(ns + 4, N_DESCR * 4); PUT_32BE(ns + 8, 0x1275); strcpy(&buf[ns + 12], arch); ns += 12 + strlen(arch) + 1; for (i = 0; i < N_DESCR; ++i) PUT_32BE(ns + i * 4, descr[i]); /* Update the number of program headers */ PUT_16BE(E_PHNUM, np + 1); /* write back */ lseek(fd, (long) 0, SEEK_SET); i = write(fd, buf, n); if (i < 0) { perror("write"); exit(1); } if (i < n) { fprintf(stderr, "%s: write truncated\n", av[1]); exit(1); } exit(0); notelf: fprintf(stderr, "%s does not appear to be an ELF file\n", av[0]); exit(1); nospace: fprintf(stderr, "sorry, I can't find space in %s to put the note\n", av[0]); exit(1); } --- NEW FILE --- # # ELF header field numbers # $e_ident = 0; # Identification bytes / magic number $e_type = 1; # ELF file type $e_machine = 2; # Target machine type $e_version = 3; # File version $e_entry = 4; # Start address $e_phoff = 5; # Program header file offset $e_shoff = 6; # Section header file offset $e_flags = 7; # File flags $e_ehsize = 8; # Size of ELF header $e_phentsize = 9; # Size of program header $e_phnum = 10; # Number of program header entries $e_shentsize = 11; # Size of section header $e_shnum = 12; # Number of section header entries $e_shstrndx = 13; # Section header table string index # # Section header field numbers # $sh_name = 0; # Section name $sh_type = 1; # Section header type $sh_flags = 2; # Section header flags $sh_addr = 3; # Virtual address $sh_offset = 4; # File offset $sh_size = 5; # Section size $sh_link = 6; # Miscellaneous info $sh_info = 7; # More miscellaneous info $sh_addralign = 8; # Memory alignment $sh_entsize = 9; # Entry size if this is a table --- NEW FILE --- /* * BK Id: SCCS/s.hack-coff.c 1.8 05/18/01 06:20:29 patch */ /* * hack-coff.c - hack the header of an xcoff file to fill in * a few fields needed by the Open Firmware xcoff loader on * Power Macs but not initialized by objcopy. * * Copyright (C) Paul Mackerras 1997. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version * 2 of the License, or (at your option) any later version. */ #include <stdio.h> #include <unistd.h> #include <fcntl.h> #include "rs6000.h" #define AOUT_MAGIC 0x010b #define get_16be(x) ((((unsigned char *)(x))[0] << 8) \ + ((unsigned char *)(x))[1]) #define put_16be(x, v) (((unsigned char *)(x))[0] = (v) >> 8, \ ((unsigned char *)(x))[1] = (v) & 0xff) #define get_32be(x) ((((unsigned char *)(x))[0] << 24) \ + (((unsigned char *)(x))[1] << 16) \ + (((unsigned char *)(x))[2] << 8) \ + ((unsigned char *)(x))[3]) int main(int ac, char **av) { int fd; int i, nsect; int aoutsz; struct external_filehdr fhdr; AOUTHDR aout; struct external_scnhdr shdr; if (ac != 2) { fprintf(stderr, "Usage: hack-coff coff-file\n"); exit(1); } if ((fd = open(av[1], 2)) == -1) { perror(av[2]); exit(1); } if (read(fd, &fhdr, sizeof(fhdr)) != sizeof(fhdr)) goto readerr; i = get_16be(fhdr.f_magic); if (i != U802TOCMAGIC && i != U802WRMAGIC && i != U802ROMAGIC) { fprintf(stderr, "%s: not an xcoff file\n", av[1]); exit(1); } aoutsz = get_16be(fhdr.f_opthdr); if (read(fd, &aout, aoutsz) != aoutsz) goto readerr; nsect = get_16be(fhdr.f_nscns); for (i = 0; i < nsect; ++i) { if (read(fd, &shdr, sizeof(shdr)) != sizeof(shdr)) goto readerr; if (strcmp(shdr.s_name, ".text") == 0) { put_16be(aout.o_snentry, i+1); put_16be(aout.o_sntext, i+1); } else if (strcmp(shdr.s_name, ".data") == 0) { put_16be(aout.o_sndata, i+1); } else if (strcmp(shdr.s_name, ".bss") == 0) { put_16be(aout.o_snbss, i+1); } } put_16be(aout.magic, AOUT_MAGIC); if (lseek(fd, (long) sizeof(struct external_filehdr), 0) == -1 || write(fd, &aout, aoutsz) != aoutsz) { fprintf(stderr, "%s: write error\n", av[1]); exit(1); } close(fd); exit(0); readerr: fprintf(stderr, "%s: read error or file too short\n", av[1]); exit(1); } --- NEW FILE --- #!/usr/bin/perl # # Copyright (c) 1998-1999 TiVo, Inc. # All rights reserved. # # Copyright (c) 1999 Grant Erickson <gr...@lc...> # Major syntactic and usability rework. # # Module name: mkevimg # # Description: # Converts an ELF output file from the linker into the format used by # the IBM evaluation board ROM Monitor to load programs from a host # onto the evaluation board. The ELF file must be an otherwise execut- # able file (with the text and data addresses bound at link time) and # have space reserved after the entry point for the load information # block: # # typedef struct boot_block { # unsigned long magic; 0x0052504F # unsigned long dest; Target address of the image # unsigned long num_512blocks; Size, rounded-up, in 512 byte blocks # unsigned long debug_flag; Run the debugger or image after load # unsigned long entry_point; The image address to jump to after load # unsigned long checksum; 32 bit checksum including header # unsigned long reserved[2]; # } boot_block_t; # # use File::Basename; use Getopt::Std; # # usage() # # Description: # This routine prints out the proper command line usage for this program # # Input(s): # status - Flag determining what usage information will be printed and what # the exit status of the program will be after the information is # printed. # # Output(s): # N/A # # Returns: # This subroutine does not return. # sub usage { my($status); $status = $_[0]; printf("Usage: %s [-hlvV] <ELF input file> <Evaluation board output file>\n", $program); if ($status != 0) { printf("Try `%s -h' for more information.\n", $program); } if ($status != 1) { print(" -c Put checksum in load information block.\n"); print(" -h Print out this message and exit.\n"); print(" -l Linux mode; if present, copy 'image' and 'initrd' sections.\n"); print(" -v Verbose. Print out lots of ELF information.\n"); print(" -V Print out version information and exit.\n"); } exit($status); } # # version() # # Description: # This routine prints out program version information # # Input(s): # N/A # # Output(s): # N/A # # Returns: # This subroutine does not return. # sub version { print("mkevimg Version 1.1.0\n"); print("Copyright (c) 1998-1999 TiVo, Inc.\n"); print("Copyright (c) 1999 Grant Erickson <grant\@lcse.umn.edu>\n"); exit (0); } # # file_check() # # Description: # This routine checks an input file to ensure that it exists, is a # regular file, and is readable. # # Input(s): # file - Input file to be checked. # # Output(s): # N/A # # Returns: # 0 if the file exists, is a regular file, and is readable, otherwise -1. # sub file_check { my($file); $file = $_[0]; if (!(-e $file)) { printf("The file \"%s\" does not exist.\n", $file); return (-1); } elsif (!(-f $file)) { printf("The file \"%s\" is not a regular file.\n", $file); return (-1); } elsif (!(-r $file)) { printf("The file \"%s\" is not readable.\n", $file); return (-1); } return (0); } # # decode_options() # # Description: # This routine steps through the command-line arguments, parsing out # recognzied options. # # Input(s): # N/A # # Output(s): # N/A # # Returns: # N/A # sub decode_options { if (!getopts("chlvV")) { usage(1); } if ($opt_c) { $do_checksum = 1; } if ($opt_h) { usage(0); } if ($opt_l) { $linux = 1; } if ($opt_V) { version(); exit (0); } if ($opt_v) { $verbose = 1; } if (!($ifile = shift(@ARGV))) { usage(1); } if (!($ofile = shift(@ARGV))) { usage (1); } if (file_check($ifile)) { exit(1); } } # # ELF file and section header field numbers # require '../utils/elf.pl'; # # Main program body # { $program = basename($0); decode_options(); open(ELF, "<$ifile") || die "Cannot open input file"; $ifilesize = (-s $ifile); if ($verbose) { print("Output file: $ofile\n"); print("Input file: $ifile, $ifilesize bytes.\n"); } if (read(ELF, $ibuf, $ifilesize) != $ifilesize) { print("Failed to read input file!\n"); exit(1); } # # Parse ELF header # @eh = unpack("a16n2N5n6", $ibuf); # # Make sure this is actually a PowerPC ELF file. # if (substr($eh[$e_ident], 0, 4) ne "\177ELF") { printf("The file \"%s\" is not an ELF file.\n", $ifile); exit (1); } elsif ($eh[$e_machine] != 20) { printf("The file \"%s\" is not a PowerPC ELF file.\n", $ifile); exit (1); } if ($verbose) { print("File header:\n"); printf(" Identifier: %s\n", $eh[$e_ident]); printf(" Type: %d\n", $eh[$e_type]); printf(" Machine: %d\n", $eh[$e_machine]); printf(" Version: %d\n", $eh[$e_version]); printf(" Entry point: 0x%08x\n", $eh[$e_entry]); printf(" Program header offset: 0x%x\n", $eh[$e_phoff]); printf(" Section header offset: 0x%x\n", $eh[$e_shoff]); printf(" Flags: 0x%08x\n", $eh[$e_flags]); printf(" Header size: %d\n", $eh[$e_ehsize]); printf(" Program entry size: %d\n", $eh[$e_phentsize]); printf(" Program table entries: %d\n", $eh[$e_phnum]); printf(" Section header size: %d\n", $eh[$e_shentsize]); printf(" Section table entries: %d\n", $eh[$e_shnum]); printf(" String table section: %d\n", $eh[$e_shstrndx]); } # # Find the section header for the string table. # $strtable_section_offset = $eh[$e_shoff] + $eh[$e_shstrndx] * $eh[$e_shentsize]; if ($verbose) { printf("String table section header offset: 0x%x\n", $strtable_section_offset); } # # Find the start of the string table. # @strh = unpack("N10", substr($ibuf, $strtable_section_offset, $eh[$e_shentsize])); if ($verbose) { printf("Section name strings start at: 0x%x, %d bytes.\n", $strh[$sh_offset], $strh[$sh_size]); } $names = substr($ibuf, $strh[$sh_offset], $strh[$sh_size]); # Grab each section header and find '.text' and '.bss' sections in # particular. if ($verbose) { print("Section headers:\n"); print("Idx Name Size Address File off Algn\n"); print("--- ------------------------ -------- -------- -------- ----\n"); } $off = $eh[$e_shoff]; for($i = 0; $i < $eh[$e_shnum]; $i++, $off += $eh[$e_shentsize]) { @sh = unpack("N10", substr($ibuf, $off, $eh[$e_shentsize])); # Take the first section name from the array returned by split. ($name) = split(/\000/, substr($names, $sh[$sh_name])); if ($verbose) { printf("%3d %-24s %8x %08x %08x %4d\n", $i, $name, $sh[$sh_size], $sh[$sh_addr], $sh[$sh_offset], $sh[$sh_addralign]); } # Attempt to find the .text and .bss sections if ($name =~ /^\.bss$/) { ($bss_addr, $bss_offset, $bss_size) = ($sh[$sh_addr], $sh[$sh_offset], $sh[$sh_size]); } elsif ($name =~ /^\.text$/) { ($text_addr, $text_offset, $text_size) = ($sh[$sh_addr], $sh[$sh_offset], $sh[$sh_size]); } elsif ($linux && ($name =~ /^\image$/)) { $image_found = 1; ($image_addr, $image_offset, $image_size) = ($sh[$sh_addr], $sh[$sh_offset], $sh[$sh_size]); } elsif ($linux && ($name =~ /^\initrd$/)) { $initrd_found = 1; ($initrd_addr, $initrd_offset, $initrd_size) = ($sh[$sh_addr], $sh[$sh_offset], $sh[$sh_size]); } } printf("Text section - Address: 0x%08x, Size: 0x%08x\n", $text_addr, $text_size); printf("Bss section - Address: 0x%08x, Size: 0x%08x\n", $bss_addr, $bss_size); if ($linux) { if ($image_found) { printf("Image section - Address: 0x%08x, Size: 0x%08x\n", $image_addr, $image_size); } if ($initrd_found) { printf("Initrd section - Address: 0x%08x, Size: 0x%08x\n", $initrd_addr, $initrd_size); } } # # Open output file # open(BOOT, ">$ofile") || die "Cannot open output file"; # # Compute image size # $output_size = $bss_offset - $text_offset + $bss_size; if ($linux && $image_found) { $output_size += $image_size; } if ($linux && $initrd_found) { $output_size += $initrd_size; } # # Compute size with header # $header = pack("H8N7", "0052504f", 0, 0, 0, 0, 0, 0, 0); $num_blocks = ($output_size + length($header) + 511) / 512; # # Write IBM PowerPC evaluation board boot_block_t header # $header = pack("H8N7", "0052504f", $text_addr, $num_blocks, 0, $text_addr, 0, 0, 0); $bytes = length($header); if (($resid = syswrite(BOOT, $header, $bytes)) != $bytes) { die("Could not write boot image header to output file."); } printf("Entry point = 0x%08x\n", $text_addr); printf("Image size = 0x%08x (%d bytes) (%d blocks).\n", $output_size, $output_size, $num_blocks); # # Write image starting after ELF and program headers and # continuing to beginning of bss # $bytes = $bss_offset - $text_offset + $bss_size; if (($resid = syswrite(BOOT, $ibuf, $bytes, $text_offset)) != $bytes) { die("Could not write boot image to output file.\n"); } # # If configured, write out the image and initrd sections as well # if ($linux) { if ($image_found) { $bytes = $image_size; if (($resid = syswrite(BOOT, $ibuf, $bytes, $image_offset)) != $bytes) { die("Could not write boot image to output file.\n"); } } if ($initrd_found) { $bytes = $initrd_size; if (($resid = syswrite(BOOT, $ibuf, $bytes, $initrd_offset)) != $bytes) { die("Could not write boot image to output file.\n"); } } } # # Pad to a multiple of 512 bytes # If the (size of the boot image mod 512) is between 509 and 511 bytes # then the tftp to the Walnut fails. This may be fixed in more recent # Walnut bootrom. # $pad_size = 512 - ((length($header) + $output_size) % 512); if ($pad_size == 512) { $pad_size = 0; } if ($pad_size != 0) { if ($verbose) { print("Padding boot image by an additional $pad_size bytes.\n"); } $pad_string = pack("H8","deadbeef") x 128; syswrite(BOOT, $pad_string, $pad_size) or die "Could not pad boot image in output file.\n"; } # # Compute 32 bit checksum over entire file. # if ($do_checksum) { close(BOOT); open(BOOT, "+<$ofile") || die "Cannot open output file"; undef $/; $temp = unpack("%32N*", <BOOT>); # Solaris and PPC Linux return 0x80000000 for "-$temp" when $temp # is negative. "~($temp - 1)" negates $temp properly. $csum = ~($temp - 1); printf("Checksum = 0x%08x\r\n", $csum); # # Rewrite IBM PowerPC evaluation board boot_block_t header, # this time with the checksum included # $header = pack("H8N7", "0052504f", $text_addr, $num_blocks, 0, $text_addr, $csum, 0, 0); seek(BOOT, 0, 0); syswrite(BOOT, $header, length($header)) or die("Could not write boot image header to output file."); } # # Clean-up and leave # close(BOOT); print("\nBoot image file \"$ofile\" built successfully.\n\n"); exit(0); } --- NEW FILE --- #!/usr/bin/perl # # Copyright (c) 1998-1999 TiVo, Inc. # Original ELF parsing code. # # Copyright (c) 1999 Grant Erickson <gr...@lc...> # Original code from 'mkevimg'. # # Module name: mkirimg # # Description: # Reads an ELF file and assigns global variables 'imageSect_start', # 'imageSect_size', 'initrdSect_start', and 'initrdSect_size' from # the "image" and "initrd" section header information. It then # rewrites the input ELF file with assigned globals to an output # file. # # An input file, "irSectStart.txt" has the memory address of # 'irSectStart'. The irSectStart memory address is used to find # the global variables in the ".data" section of the ELF file. # The 'irSectStart' and the above global variables are defined # in "irSect.c". # # use File::Basename; use Getopt::Std; # # usage() # # Description: # This routine prints out the proper command line usage for this program # # Input(s): # status - Flag determining what usage information will be printed and what # the exit status of the program will be after the information is # printed. # # Output(s): # N/A # # Returns: # This subroutine does not return. # sub usage { my($status); $status = $_[0]; printf("Usage: %s [-hvV] <ELF input file> <Evaluation board output file> <irSectStart.txt file>\n", $program); if ($status != 0) { printf("Try `%s -h' for more information.\n", $program); } if ($status != 1) { print(" -h Print out this message and exit.\n"); print(" -v Verbose. Print out lots of ELF information.\n"); print(" -V Print out version information and exit.\n"); } exit($status); } # # version() # # Description: # This routine prints out program version information # # Input(s): # N/A # # Output(s): # N/A # # Returns: # This subroutine does not return. # sub version { print("mkirimg Version 1.1.0\n"); print("Copyright (c) 1998-1999 TiVo, Inc.\n"); print("Copyright (c) 1999 Grant Erickson <grant\@lcse.umn.edu>\n"); exit (0); } # # file_check() # # Description: # This routine checks an input file to ensure that it exists, is a # regular file, and is readable. # # Input(s): # file - Input file to be checked. # # Output(s): # N/A # # Returns: # 0 if the file exists, is a regular file, and is readable, otherwise -1. # sub file_check { my($file); $file = $_[0]; if (!(-e $file)) { printf("The file \"%s\" does not exist.\n", $file); return (-1); } elsif (!(-f $file)) { printf("The file \"%s\" is not a regular file.\n", $file); return (-1); } elsif (!(-r $file)) { printf("The file \"%s\" is not readable.\n", $file); return (-1); } return (0); } # # decode_options() # # Description: # This routine steps through the command-line arguments, parsing out # recognzied options. # # Input(s): # N/A # # Output(s): # N/A # # Returns: # N/A # sub decode_options { if (!getopts("hvV")) { usage(1); } if ($opt_h) { usage(0); } if ($opt_V) { version(); exit (0); } if ($opt_v) { $verbose = 1; } if (!($ElfFile = shift(@ARGV))) { usage(1); } if (!($OutputFile = shift(@ARGV))) { usage (1); } if (!($IrFile = shift(@ARGV))) { usage (1); } if (file_check($ElfFile)) { exit(1); } if (file_check($IrFile)) { exit(1); } } # # ELF file and section header field numbers # require '../utils/elf.pl'; # # Main program body # { $program = basename($0); decode_options(); open(ELF, "<$ElfFile") || die "Cannot open input file"; open(OUTPUT, ">$OutputFile") || die "Cannot open output file"; open(IR, "$IrFile") || die "Cannot open input file"; $ElfFilesize = (-s $ElfFile); if (read(ELF, $ibuf, $ElfFilesize) != $ElfFilesize) { print("Failed to read ELF input file!\n"); exit(1); } if (read(IR, $irbuf, 8) != 8) { print("Failed to read Ir input file!\n"); exit(1); } # # Parse ELF header # @eh = unpack("a16n2N5n6", $ibuf); # # Make sure this is actually a PowerPC ELF file. # if (substr($eh[$e_ident], 0, 4) ne "\177ELF") { printf("The file \"%s\" is not an ELF file.\n", $ElfFile); exit (1); } elsif ($eh[$e_machine] != 20) { printf("The file \"%s\" is not a PowerPC ELF file.\n", $ElfFile); exit (1); } # # Find the section header for the string table. # $strtable_section_offset = $eh[$e_shoff] + $eh[$e_shstrndx] * $eh[$e_shentsize]; if ($verbose) { printf("String table section header offset: 0x%x\n", $strtable_section_offset); } # # Find the start of the string table. # @strh = unpack("N10", substr($ibuf, $strtable_section_offset, $eh[$e_shentsize])); if ($verbose) { printf("Section name strings start at: 0x%x, %d bytes.\n", $strh[$sh_offset], $strh[$sh_size]); } $names = substr($ibuf, $strh[$sh_offset], $strh[$sh_size]); # Grab each section header and find '.data', 'image', and # 'initrd' sections in particular. $off = $eh[$e_shoff]; $imageFound = 0; $initrdFound = 0; for($i = 0; $i < $eh[$e_shnum]; $i++, $off += $eh[$e_shentsize]) { @sh = unpack("N10", substr($ibuf, $off, $eh[$e_shentsize])); # Take the first section name from the array returned by split. ($name) = split(/\000/, substr($names, $sh[$sh_name])); # Attempt to find the .data, image, and initrd sections if ($name =~ /^\image$/) { ($image_addr, $image_offset, $image_size) = ($sh[$sh_addr], $sh[$sh_offset], $sh[$sh_size]); $imageFound = 1; } elsif ($name =~ /^\initrd$/) { ($initrd_addr, $initrd_offset, $initrd_size) = ($sh[$sh_addr], $sh[$sh_offset], $sh[$sh_size]); $initrdFound = 1; } elsif ($name =~ /^\.data$/) { ($data_addr, $data_offset, $data_size) = ($sh[$sh_addr], $sh[$sh_offset], $sh[$sh_size]); } elsif ($name =~ /^\.bss$/) { ($bss_addr, $bss_offset, $bss_size) = ($sh[$sh_addr], $sh[$sh_offset], $sh[$sh_size]); } } if ($verbose) { printf("Data section - Address: 0x%08x, Size: 0x%08x, File Offset 0x%08x\n", $data_addr, $data_size, $data_offset); printf("Bss section - Address: 0x%08x, Size: 0x%08x, File Offset 0x%08x\n", $bss_addr, $bss_size, $bss_offset); } if ($verbose) { if ($imageFound) { printf("Image section - Address: 0x%08x, Size: 0x%08x\n", $image_addr, $image_size); } else { printf("Image section not found in file: $ElfFile\n"); } if ($initrdFound) { printf("Initrd section - Address: 0x%08x, Size: 0x%08x\n", $initrd_addr, $initrd_size); } else { printf("Initrd section not found in file: $ElfFile\n"); } } # get file offset of irSectStart $irSectStartoffset = hex ($irbuf); if ($verbose) { printf("irSectStartOffset Address: 0x%08x\n", $irSectStartoffset); } # get the offset of global variables $initialOffset = ($irSectStartoffset - $data_addr) + $data_offset + 4; # write modified values to OUTPUT file syswrite(OUTPUT, $ibuf, $initialOffset); if ($imageFound) { $testN = pack ("N2", $bss_addr + $bss_size, $image_size); syswrite(OUTPUT, $testN, length($testN)); printf("Updated symbol \"imageSect_start\" to 0x%08x\n", $bss_addr + $bss_size); printf("Updated symbol \"imageSect_size\" to 0x%08x\n", $image_size); } else { syswrite(OUTPUT, $ibuf, 8, $initialOffset); } if ($initrdFound) { $testN = pack ("N2", $bss_addr + $bss_size + $image_size, $initrd_size); syswrite(OUTPUT, $testN, length($testN)); printf("Updated symbol \"initrdSect_start\" to 0x%08x\n", $bss_addr + $bss_size + $image_size); printf("Updated symbol \"initrdSect_size\" to 0x%08x\n", $initrd_size); } else { syswrite(OUTPUT, $ibuf,8, $initialOffset + 8); } syswrite(OUTPUT, $ibuf, $ElfFilesize - ($initialOffset + 16), $initialOffset + 16); # # Clean-up and leave # close (ELF); close (OUTPUT); close (IR); exit (0); } --- NEW FILE --- /* * BK Id: SCCS/s.mknote.c 1.7 05/18/01 15:17:23 cort */ /* * Copyright (C) Cort Dougan 1999. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version * 2 of the License, or (at your option) any later version. * * Generate a note section as per the CHRP specification. * */ #include <stdio.h> #define PL(x) printf("%c%c%c%c", ((x)>>24)&0xff, ((x)>>16)&0xff, ((x)>>8)&0xff, (x)&0xff ); int main(void) { /* header */ /* namesz */ PL(strlen("PowerPC")+1); /* descrsz */ PL(6*4); /* type */ PL(0x1275); /* name */ printf("PowerPC"); printf("%c", 0); /* descriptor */ /* real-mode */ PL(0xffffffff); /* real-base */ PL(0x00c00000); /* real-size */ PL(0xffffffff); /* virt-base */ PL(0xffffffff); /* virt-size */ PL(0xffffffff); /* load-base */ PL(0x4000); return 0; } --- NEW FILE --- /* * BK Id: SCCS/s.mkprep.c 1.7 05/18/01 06:20:29 patch */ /* * Makes a prep bootable image which can be dd'd onto * a disk device to make a bootdisk. Will take * as input a elf executable, strip off the header * and write out a boot image as: * 1) default - strips elf header * suitable as a network boot image * 2) -pbp - strips elf header and writes out prep boot partition image * cat or dd onto disk for booting * 3) -asm - strips elf header and writes out as asm data * useful for generating data for a compressed image * -- Cort * * Modified for x86 hosted builds by Matt Porter <po...@ne...> */ #include <fcntl.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/stat.h> #include <unistd.h> #define cpu_to_le32(x) le32_to_cpu((x)) unsigned long le32_to_cpu(unsigned long x) { return (((x & 0x000000ffU) << 24) | ((x & 0x0000ff00U) << 8) | ((x & 0x00ff0000U) >> 8) | ((x & 0xff000000U) >> 24)); } #define cpu_to_le16(x) le16_to_cpu((x)) unsigned short le16_to_cpu(unsigned short x) { return (((x & 0x00ff) << 8) | ((x & 0xff00) >> 8)); } #define cpu_to_be32(x) (x) #define be32_to_cpu(x) (x) #define cpu_to_be16(x) (x) #define be16_to_cpu(x) (x) /* size of read buffer */ #define SIZE 0x1000 typedef unsigned long dword_t; typedef unsigned short word_t; typedef unsigned char byte_t; typedef byte_t block_t[512]; typedef byte_t page_t[4096]; /* * Partition table entry * - from the PReP spec */ typedef struct partition_entry { byte_t boot_indicator; byte_t starting_head; byte_t starting_sector; byte_t starting_cylinder; byte_t system_indicator; byte_t ending_head; byte_t ending_sector; byte_t ending_cylinder; dword_t beginning_sector; dword_t number_of_sectors; } partition_entry_t; #define BootActive 0x80 #define SystemPrep 0x41 void copy_image(int , int); void write_prep_partition(int , int ); void write_asm_data( int in, int out ); unsigned int elfhdr_size = 65536; int main(int argc, char *argv[]) { int in_fd, out_fd; int argptr = 1; unsigned int prep = 0; unsigned int asmoutput = 0; if ( (argc < 3) || (argc > 4) ) { fprintf(stderr, "usage: %s [-pbp] [-asm] <boot-file> <image>\n",argv[0]); exit(-1); } /* needs to handle args more elegantly -- but this is a small/simple program */ /* check for -pbp */ if ( !strcmp( argv[argptr], "-pbp" ) ) { prep = 1; argptr++; } /* check for -asm */ if ( !strcmp( argv[argptr], "-asm" ) ) { asmoutput = 1; argptr++; } /* input file */ if ( !strcmp( argv[argptr], "-" ) ) in_fd = 0; /* stdin */ else if ((in_fd = open( argv[argptr] , 0)) < 0) exit(-1); argptr++; /* output file */ if ( !strcmp( argv[argptr], "-" ) ) out_fd = 1; /* stdout */ else if ((out_fd = creat( argv[argptr] , 0755)) < 0) exit(-1); argptr++; /* skip elf header in input file */ /*if ( !prep )*/ lseek(in_fd, elfhdr_size, SEEK_SET); /* write prep partition if necessary */ if ( prep ) write_prep_partition( in_fd, out_fd ); /* write input image to bootimage */ if ( asmoutput ) write_asm_data( in_fd, out_fd ); else copy_image(in_fd, out_fd); return 0; } void write_prep_partition(int in, int out) { unsigned char block[512]; partition_entry_t *pe = (partition_entry_t *)&block[0x1BE]; dword_t *entry = (dword_t *)&block[0]; dword_t *length = (dword_t *)&block[sizeof(long)]; struct stat info; if (fstat(in, &info) < 0) { fprintf(stderr,"info failed\n"); exit(-1); } bzero( block, sizeof block ); /* set entry point and boot image size skipping over elf header */ #ifdef __i386__ *entry = 0x400/*+65536*/; *length = info.st_size-elfhdr_size+0x400; #else *entry = cpu_to_le32(0x400/*+65536*/); *length = cpu_to_le32(info.st_size-elfhdr_size+0x400); #endif /* __i386__ */ /* sets magic number for msdos partition (used by linux) */ block[510] = 0x55; block[511] = 0xAA; /* * Build a "PReP" partition table entry in the boot record * - "PReP" may only look at the system_indicator */ pe->boot_indicator = BootActive; pe->system_indicator = SystemPrep; /* * The first block of the diskette is used by this "boot record" which * actually contains the partition table. (The first block of the * partition contains the boot image, but I digress...) We'll set up * one partition on the diskette and it shall contain the rest of the * diskette. */ pe->starting_head = 0; /* zero-based */ pe->starting_sector = 2; /* one-based */ pe->starting_cylinder = 0; /* zero-based */ pe->ending_head = 1; /* assumes two heads */ pe->ending_sector = 18; /* assumes 18 sectors/track */ pe->ending_cylinder = 79; /* assumes 80 cylinders/diskette */ /* * The "PReP" software ignores the above fields and just looks at * the next two. * - size of the diskette is (assumed to be) * (2 tracks/cylinder)(18 sectors/tracks)(80 cylinders/diskette) * - unlike the above sector numbers, the beginning sector is zero-based! */ #if 0 pe->beginning_sector = cpu_to_le32(1); #else /* This has to be 0 on the PowerStack? */ #ifdef __i386__ pe->beginning_sector = 0; #else pe->beginning_sector = cpu_to_le32(0); #endif /* __i386__ */ #endif #ifdef __i386__ pe->number_of_sectors = 2*18*80-1; #else pe->number_of_sectors = cpu_to_le32(2*18*80-1); #endif /* __i386__ */ write( out, block, sizeof(block) ); write( out, entry, sizeof(*entry) ); write( out, length, sizeof(*length) ); /* set file position to 2nd sector where image will be written */ lseek( out, 0x400, SEEK_SET ); } void copy_image(int in, int out) { char buf[SIZE]; int n; while ( (n = read(in, buf, SIZE)) > 0 ) write(out, buf, n); } void write_asm_data( int in, int out ) { int i, cnt, pos, len; unsigned int cksum, val; unsigned char *lp; unsigned char buf[SIZE]; unsigned char str[256]; write( out, "\t.data\n\t.globl input_data\ninput_data:\n", strlen( "\t.data\n\t.globl input_data\ninput_data:\n" ) ); pos = 0; cksum = 0; while ((len = read(in, buf, sizeof(buf))) > 0) { cnt = 0; lp = (unsigned char *)buf; len = (len + 3) & ~3; /* Round up to longwords */ for (i = 0; i < len; i += 4) { if (cnt == 0) { write( out, "\t.long\t", strlen( "\t.long\t" ) ); } sprintf( str, "0x%02X%02X%02X%02X", lp[0], lp[1], lp[2], lp[3]); write( out, str, strlen(str) ); val = *(unsigned long *)lp; cksum ^= val; lp += 4; if (++cnt == 4) { cnt = 0; sprintf( str, " # %x \n", pos+i-12); write( out, str, strlen(str) ); } else { write( out, ",", 1 ); } } if (cnt) { write( out, "0\n", 2 ); } pos += len; } sprintf(str, "\t.globl input_len\ninput_len:\t.long\t0x%x\n", pos); write( out, str, strlen(str) ); fprintf(stderr, "cksum = %x\n", cksum); } --- NEW FILE --- /* * BK Id: SCCS/s.mksimage.c 1.6 05/18/01 15:16:42 cort */ /* * * * * */ #include <stdio.h> #include <string.h> #include <stdlib.h> #include <stdarg.h> #include <sys/types.h> #include <fcntl.h> #include <unistd.h> #include <errno.h> #define SIZE 1024 #define BLOCK_ALIGN(x) (((x)+SIZE-1)&(~(SIZE-1))) static void die(const char *fmt, ...) { va_list args; va_start(args, fmt); vfprintf(stderr, fmt, args); fputc('\n', stderr); exit(1); } static void usage(void) { printf("Usage: mkbinimg <bootstrap> <kernel> <ramdisk> -o <binary>\n"); exit(1); } static int copy_blocks(int ifd, int ofd, unsigned long *offset, unsigned long *size) { off_t cur; int amt; unsigned long len = 0; char buffer[SIZE]; cur = lseek(ofd, 0, SEEK_CUR); if (cur % SIZE) { cur = BLOCK_ALIGN(cur); cur = lseek(ofd, cur, SEEK_SET); } *offset = (unsigned long) cur; while((amt = read(ifd, buffer, SIZE)) > 0) { write(ofd, buffer, amt); len += amt; } *size = len; return 0; } int main(int argc, char *argv[]) { char *kernel, *loader, *rdimage = NULL; unsigned long ld_off, kern_off, rd_off; unsigned long ld_size, kern_size, rd_size; int fd, ofd, len; char buffer[500]; if (argc < 5 && !strcmp(argv[argc-2], "-o")) usage(); if (argc > 5) rdimage = argv[3]; kernel = argv[2]; loader = argv[1]; ofd = open(argv[argc-1], (O_RDWR|O_CREAT), 0755); if (ofd < 0) { die("can't open %s: %s", argv[5], strerror(errno)); } ld_off = kern_off = rd_off = 0; ld_size = kern_size = rd_size = 0; memset(buffer, 0, 500); len = 0; fd = open(loader, O_RDONLY); if (fd < 0) die("can't open loader: %s", strerror(errno)); copy_blocks(fd, ofd, &ld_off, &ld_size); len = sprintf(buffer, "bootloader: %x %x\n", ld_off, ld_size); close(fd); fd = open(kernel, O_RDONLY); if (fd < 0) die("can't open kernel: %s", strerror(errno)); copy_blocks(fd, ofd, &kern_off, &kern_size); len += sprintf(buffer+len, "zimage: %x %x\n", kern_off, kern_size); close(fd); if (rdimage) { fd = open(rdimage, O_RDONLY); if (fd < 0) die("can't get ramdisk: %s", strerror(errno)); copy_blocks(fd, ofd, &rd_off, &rd_size); close(fd); } len += sprintf(buffer+len, "initrd: %x %x", rd_off, rd_size); close(ofd); printf("%s\n", buffer); return 0; } --- NEW FILE --- #!/bin/bash OFFSET=`$1 -h $2 | grep $3 | grep -v zvmlinux| awk '{print $6}'` echo "0x"$OFFSET --- NEW FILE --- /* * BK Id: SCCS/s.piggyback.c 1.7 05/18/01 15:17:23 cort */ #include <stdio.h> #include <unistd.h> extern long ce_exec_config[]; int main(int argc, char *argv[]) { int i, cnt, pos, len; unsigned int cksum, val; unsigned char *lp; unsigned char buf[8192]; if (argc != 2) { fprintf(stderr, "usage: %s name <in-file >out-file\n", argv[0]); exit(1); } fprintf(stdout, "#\n"); fprintf(stdout, "# Miscellaneous data structures:\n"); fprintf(stdout, "# WARNING - this file is automatically generated!\n"); fprintf(stdout, "#\n"); fprintf(stdout, "\n"); fprintf(stdout, "\t.data\n"); fprintf(stdout, "\t.globl %s_data\n", argv[1]); fprintf(stdout, "%s_data:\n", argv[1]); pos = 0; cksum = 0; while ((len = read(0, buf, sizeof(buf))) > 0) { cnt = 0; lp = (unsigned char *)buf; len = (len + 3) & ~3; /* Round up to longwords */ for (i = 0; i < len; i += 4) { if (cnt == 0) { fprintf(stdout, "\t.long\t"); } fprintf(stdout, "0x%02X%02X%02X%02X", lp[0], lp[1], lp[2], lp[3]); val = *(unsigned long *)lp; cksum ^= val; lp += 4; if (++cnt == 4) { cnt = 0; fprintf(stdout, " # %x \n", pos+i-12); fflush(stdout); } else { fprintf(stdout, ","); } } if (cnt) { fprintf(stdout, "0\n"); } pos += len; } fprintf(stdout, "\t.globl %s_len\n", argv[1]); fprintf(stdout, "%s_len:\t.long\t0x%x\n", argv[1], pos); fflush(stdout); fclose(stdout); fprintf(stderr, "cksum = %x\n", cksum); exit(0); } --- NEW FILE --- #!/bin/bash OFFSET=`grep $1 sImage.map | awk '{print $2}'` echo "0x"$OFFSET --- NEW FILE --- #!/bin/bash OFFSET=`grep $1 sImage.map | awk '{print $3}'` echo "0x"$OFFSET --- NEW FILE --- #!/bin/bash OFFSET=`$1 -h $2 | grep $3 | grep -v zvmlinux | awk '{print $3}'` echo "0x"$OFFSET |