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
|