* Re: PATCH powerpc: Merge asm-ppc*/sections.h
From: Gabriel Paubert @ 2005-09-15 20:57 UTC (permalink / raw)
To: Paul Mackerras; +Cc: linuxppc64-dev, Arnd Bergmann, linuxppc-dev@ozlabs.org
In-Reply-To: <17193.22140.962651.122114@cargo.ozlabs.ibm.com>
On Thu, Sep 15, 2005 at 09:09:48PM +1000, Paul Mackerras wrote:
> Jon Loeliger writes:
>
> > In the Grand Scheme of Things, removing things and making them
> > simpler seems a lofty goal. :-) Anyone know of any pitfalls that
> > await me if I try to remove these sections, a la pmac and friends?
>
> You'll probably get most objection from the PReP users, for whom
> getting back a few hundred kB is a big deal. (Maybe we should just
> buy both of them a G5 or something. 8-)
Well, we have something like 20 or 25 VME machines controlling
experiments here, some with only 16Mb of RAM. The lifetime
of these systems is often of the order of 20 years (we shall
finally get rid of our TMS9900 processors with 32kB in November,
they were bought in 1982 I believe).
So yes, I object strongly object if I don't have a way
of removing useless PMAC code. The kernel is already very
bloated compared with the 2.2 we started with, which was
well below 1MB with the minimal setup: serial console, root
on NFS, no swap, some locally modules to control the PCI<->VME
bridge and what is behind on the VME bus.
Gabriel
^ permalink raw reply
* Re: PPC4xx cleanup
From: Dan Malek @ 2005-09-15 19:03 UTC (permalink / raw)
To: Matt Porter; +Cc: Stefan Roese, linuxppc-embedded
In-Reply-To: <20050915092555.A27452@cox.net>
On Sep 15, 2005, at 12:25 PM, Matt Porter wrote:
> Sounds great to me. This will have to wait to go in mainline until
> after 2.6.14 is out though.
If you are considering this, I think you should be looking at the
recent U-Boot discussion and patches for the "flat OF tree" and
follow that path.
Thanks.
-- Dan
^ permalink raw reply
* Re: [PATCH] powerpc: merge include/asm/cputable.h
From: Kumar Gala @ 2005-09-15 17:44 UTC (permalink / raw)
To: Arnd Bergmann
Cc: linuxppc-dev, pantelis.antoniou, linuxppc64-dev,
linuxppc-embedded
In-Reply-To: <200509150158.10511.arnd@arndb.de>
I get the idea now, how about we make CPU_FTR_ALWAYS &
CPU_FTR_POSSIBLE just #defines and leave it to various sub-archs to
define CPU_FTR_POSSIBLE if they want to.
I see the classes of for FTR_POSSIBLE: CLASSIC_PPC, 8xx, 4xx, FSL-
BOOKE, PPC64 (maybe more subclasses here).
The hugh enum while useful, is just really ugly and I can't believe
it's worth it for the ~60 cases we are using cpu_has_feature() in.
- kumar
On Sep 14, 2005, at 6:58 PM, Arnd Bergmann wrote:
> On Middeweken 14 September 2005 21:11, Kumar Gala wrote:
>
>> I not sure I understand what the introduction of the enum's gets us.
>>
>>
> It doesn't have to be an enum, it could just as well be a #define,
> if we find that to be better in some way (maybe compile-time).
>
> The general idea is to convert run-time checks into compile-time
> checks in order to improve the running kernel. If you have
>
> // start code
> enum {
> FEATURE_1 = 1,
> FEATURE_2 = 2,
> PLATFORM_1 = FEATURE_1,
> PLATFORM_2 = FEATURE_2,
> PLATFORM_3 = FEATURE_1 | FEATURE_2,
> FEATURE_POSSIBLE =
> #ifdef CONFIG_PLATFORM_1
> PLATFORM_1 |
> #endif
> #ifdef CONFIG_FEATURE_2
> PLATFORM_2 |
> #endif
> #ifdef CONFIG_FEATURE_3
> PLATFORM_3 |
> #endif
> 0,
> FEATURE_ALWAYS =
> #ifdef CONFIG_PLATFORM_1
> PLATFORM_1 &
> #endif
> #ifdef CONFIG_PLATFORM_2
> PLATFORM_2 &
> #endif
> #ifdef CONFIG_PLATFORM_3
> PLATFORM_3 &
> #endif
> FEATURE_POSSIBLE,
> };
>
> static inline int have_feature(unsigned long feature)
> {
> return (FEATURE_ALWAYS & feature) ||
> (FEATURE_POSSIBLE & runtime_feature & feature);
> }
>
> int foo();
> int bar();
> int main(void)
> {
> if (have_feature(FEATURE_1))
> return foo();
> if (have_feature(FEATURE_2))
> return bar();
> return 0;
> }
> // end code
>
> Then gcc will produce optimal object code for any combination
> of CONFIG_PLATFORM_{1,2,3}. Of course I have to admit that the
> header file is not exactly elegant ;-).
>
> Arnd <><
>
^ permalink raw reply
* Re: PATCH powerpc: Merge asm-ppc*/sections.h
From: Kumar Gala @ 2005-09-15 17:28 UTC (permalink / raw)
To: Paul Mackerras; +Cc: linuxppc64-dev, Arnd Bergmann, linuxppc-dev
In-Reply-To: <17193.22140.962651.122114@cargo.ozlabs.ibm.com>
On Sep 15, 2005, at 6:09 AM, Paul Mackerras wrote:
> Jon Loeliger writes:
>
>
>> In the Grand Scheme of Things, removing things and making them
>> simpler seems a lofty goal. :-) Anyone know of any pitfalls that
>> await me if I try to remove these sections, a la pmac and friends?
>>
>
> You'll probably get most objection from the PReP users, for whom
> getting back a few hundred kB is a big deal. (Maybe we should just
> buy both of them a G5 or something. 8-)
If they care that much they should submit a patch to build a PReP
specific kernel that doesn't include this stuff. And while you are
buying G5's for people send one my way :)
I vote that we just get ride of this sections stuff for prep, pmac,
of, chrp and if we want to reduce the code size make it a compile
choice to build specific kernel's that dont include the crap that the
others need. (especially based on the numbers that Jon has posted
for size).
- kumar
^ permalink raw reply
* Re: PATCH powerpc: Merge asm-ppc*/sections.h
From: Jon Loeliger @ 2005-09-15 17:07 UTC (permalink / raw)
To: linuxppc64-dev, linuxppc-dev@ozlabs.org
In-Reply-To: <17193.22140.962651.122114@cargo.ozlabs.ibm.com>
On Thu, 2005-09-15 at 06:09, Paul Mackerras wrote:
> Jon Loeliger writes:
>
> > In the Grand Scheme of Things, removing things and making them
> > simpler seems a lofty goal. :-) Anyone know of any pitfalls that
> > await me if I try to remove these sections, a la pmac and friends?
>
> You'll probably get most objection from the PReP users, for whom
> getting back a few hundred kB is a big deal. (Maybe we should just
> buy both of them a G5 or something. 8-)
OK. I dug up some data.
Compiled ppc32 *_defconfig across the page.
Section down the left. All numbers are 4K pages.
OF is the so-called "__openfirmware" section.
pmac ibmchrp stx_gp3 mpc8555_cds
--------------------------------------
pmac 10 7 0 0
prep 2 2 0 0
chrp 1 1 0 0
OF 2 1 0 0
init 47 46 23 32
Over in arch/ppc/mm/init.c this gets done:
printk ("Freeing unused kernel memory:");
FREESEC(init);
if (_machine != _MACH_Pmac)
FREESEC(pmac);
if (_machine != _MACH_chrp)
FREESEC(chrp);
if (_machine != _MACH_prep)
FREESEC(prep);
if (!have_of)
FREESEC(openfirmware);
Toss sections that don't match your _machine.
Everyone tosses init section.
Embedded boards will take no hit.
Ppc64 currently does not have these special sections
and hence will see no impact here.
That is the cost of removing these section identifiers.
So, is everyone prepared to live with these few pages
of occasional increased image size and remove the
special sections?
Thanks,
jdl
^ permalink raw reply
* Re: PPC4xx cleanup
From: Matt Porter @ 2005-09-15 16:25 UTC (permalink / raw)
To: Stefan Roese; +Cc: linuxppc-embedded
In-Reply-To: <200509151803.15301.sr@denx.de>
On Thu, Sep 15, 2005 at 06:03:14PM +0200, Stefan Roese wrote:
> Hi,
>
> I am right now testing and cleaning up some of the AMCC 4xx eval board ports
> to better support U-Boot as firmware. One question before I begin to send a
> few patches:
>
> All of the 44x boards I looked at (e.g. Ocotea) have to be extended in the
> platform file (e.g. platforms/4xx/ocotea.c) to not only copy the bd_info
> struct from r3, but also check r4 and r6 for initrd and kernel command line
> passing from the bootloader. Instead of adding this code to all different
> platform files, I would like to move this code to the common function
> "ibm44x_platform_init" (syslib/ibm44x_common.c) like it is done in the 40x
> ports "ppc4xx_init" (syslib/ppc4xx_setup.c).
>
> Any objections/remarks?
Sounds great to me. This will have to wait to go in mainline until
after 2.6.14 is out though.
-Matt
^ permalink raw reply
* PPC4xx cleanup
From: Stefan Roese @ 2005-09-15 16:03 UTC (permalink / raw)
To: linuxppc-embedded
In-Reply-To: <20050830083859.B5925@cox.net>
Hi,
I am right now testing and cleaning up some of the AMCC 4xx eval board ports
to better support U-Boot as firmware. One question before I begin to send a
few patches:
All of the 44x boards I looked at (e.g. Ocotea) have to be extended in the
platform file (e.g. platforms/4xx/ocotea.c) to not only copy the bd_info
struct from r3, but also check r4 and r6 for initrd and kernel command line
passing from the bootloader. Instead of adding this code to all different
platform files, I would like to move this code to the common function
"ibm44x_platform_init" (syslib/ibm44x_common.c) like it is done in the 40x
ports "ppc4xx_init" (syslib/ppc4xx_setup.c).
Any objections/remarks?
Best regards,
Stefan
^ permalink raw reply
* non-inlined versions of local_irq*
From: Kumar Gala @ 2005-09-15 15:12 UTC (permalink / raw)
To: linuxppc-dev list; +Cc: linuxppc64-dev
Anyone know why on ppc32 we have non-inlined versions of:
extern void local_irq_enable(void);
extern void local_irq_disable(void);
extern void local_irq_restore(unsigned long);
extern void local_save_flags_ptr(unsigned long *);
From looking at the code they are never used. Just wondering if
this was for debug or some other reason.
- kumar
^ permalink raw reply
* Re: [PATCH] powerpc: don't execute a temporary comment
From: John W. Linville @ 2005-09-15 14:07 UTC (permalink / raw)
To: Stephen Rothwell; +Cc: ppc-dev, ppc64-dev
In-Reply-To: <20050915160430.550d02ed.sfr@canb.auug.org.au>
On Thu, Sep 15, 2005 at 04:04:30PM +1000, Stephen Rothwell wrote:
> --- a/arch/ppc/Makefile
> +++ b/arch/ppc/Makefile
> @@ -102,9 +102,9 @@ define archhelp
> @echo ' *_defconfig - Select default config from arch/$(ARCH)/ppc/configs'
> endef
>
> +# arch/$(ARCH)/include is a temporary hack until we have migrated to asm-powerpc
> archclean:
> $(Q)$(MAKE) $(clean)=arch/ppc/boot
> - # Temporary hack until we have migrated to asm-powerpc
> $(Q)rm -rf arch/$(ARCH)/include
>
> archprepare: checkbin
Why is this helpful? Better in general to keep the commment near the code, no?
John
--
John W. Linville
linville@tuxdriver.com
^ permalink raw reply
* Re: __switch_to test-and-branch ALTIVEC specific?
From: Paul Mackerras @ 2005-09-15 11:18 UTC (permalink / raw)
To: Marcelo Tosatti; +Cc: linuxppc-dev, linux-ppc-embedded
In-Reply-To: <20050913175028.GB14889@dmt.cnet>
Marcelo Tosatti writes:
> This test&branch looks AltiVec specific, any reason for not #ifdef'ing it
> out?
No, your patch looks fine. (/me wishes patchwork had a "Queued"
state.)
Paul.
^ permalink raw reply
* Re: PATCH powerpc: Merge asm-ppc*/sections.h
From: Paul Mackerras @ 2005-09-15 11:09 UTC (permalink / raw)
To: Jon Loeliger; +Cc: linuxppc64-dev, Arnd Bergmann, linuxppc-dev@ozlabs.org
In-Reply-To: <1126705588.14036.10.camel@cashmere.sps.mot.com>
Jon Loeliger writes:
> In the Grand Scheme of Things, removing things and making them
> simpler seems a lofty goal. :-) Anyone know of any pitfalls that
> await me if I try to remove these sections, a la pmac and friends?
You'll probably get most objection from the PReP users, for whom
getting back a few hundred kB is a big deal. (Maybe we should just
buy both of them a G5 or something. 8-)
> And I assume that the obvious mappings can take place (ie, that
> "pmac.text" can just be placed in regular .text, etc), right?
Yes.
Paul.
^ permalink raw reply
* Re: [PATCH] powerpc: Merged ppc_asm.h
From: Paul Mackerras @ 2005-09-15 10:54 UTC (permalink / raw)
To: Kumar Gala; +Cc: linuxppc-dev list, linuxppc64-dev
In-Reply-To: <F0F2A9CC-F204-407C-A9FA-A60818D09DAB@freescale.com>
Kumar Gala writes:
> What's the status of applying this to your tree?
>
> http://patchwork.ozlabs.org/linuxppc/patch?id=2330
I'm going to start up a ppc-merge.git tree on kernel.org soon. I
don't intend to send any more 32/64 merge patches to Linus until after
2.6.14 is out.
Regards,
Paul.
^ permalink raw reply
* Re: A question about the /dev/ide
From: Clemens Koller @ 2005-09-15 10:41 UTC (permalink / raw)
To: FCG WANG Baohua; +Cc: linuxppc-embedded
In-Reply-To: <A9DE2BAF233E444FA9C5E77A5825A01E86506C@ydmail.sbell.com.cn>
Hello, Wang Baohua!
FCG WANG Baohua wrote:
> Dear all:
> I had use the UPM of MPC8270 to create the device driver of my pcmcia CF card.
Just an idea: There are IDE-to-CF adapters and PCI-IDE adapters with working drivers.
(for evaluation)
> How to create the "/dev/hda" device nodes? I had only "/dev/ide" device nodes,
> I want to use command like "mkswap /dev/hda4".
> When I use "mkswap /dev/ide/host0/bus0/target0/lun0/part1p4",
> it shows the "No such file or directory" message. How can I create
> the right device nodes? thanks!
man mknod?
But maybe you want to read some more things about devfs, udev, ... /etc/devfsd.conf
before you know what you are doing there?
Well... all that depends on your kernel/system config a bit...
Best greets,
--
Clemens Koller
_______________________________
R&D Imaging Devices
Anagramm GmbH
Rupert-Mayer-Str. 45/1
81379 Muenchen
Germany
http://www.anagramm.de
Phone: +49-89-741518-50
Fax: +49-89-741518-19
^ permalink raw reply
* Re: __switch_to test-and-branch ALTIVEC specific?
From: Segher Boessenkool @ 2005-09-15 8:21 UTC (permalink / raw)
To: Marcelo Tosatti; +Cc: linuxppc-dev, cort, linux-ppc-embedded
In-Reply-To: <20050913203555.GB18639@dmt.cnet>
>> This probably has to due with what happens on a G4 system with a
>> kernel not build with Altivec.. However, I dont remember exactly what
>> behavior is desired.
A kernel not build with AltiVec support will just
SIGILL any user process that tries to use it (and
MSR[VEC] = 0).
The code here can safely be #ifdef'ed out (but note
I only looked at the code, I didn't test it ;-) )
Segher
^ permalink raw reply
* Re: Help on 8260 board
From: Tore Martin Hagen @ 2005-09-15 8:24 UTC (permalink / raw)
To: prabha.j; +Cc: linuxppc-embedded
In-Reply-To: <OF29F8842B.21C92BA3-ON6525707B.0016F392-6525707B.0017A365@tcs.com>
Hi,
To change u-boot for your needs you will need to do approximately the
following:
copy include/configs/MPC8260ADS.h to include/configs/YOURBOARD8260.h
Print out the the file and sit down with the 8260 ref. manual. Adjust
the YOURBOARD8260.h to fit your needs. (If you are not a HW designer
this will definitely take you some time)
Added a new directory
board/yourboard8260
copied the following files from board/mpc8266ads to board/fox8275:
config.mk
flash.c
Makefile
mpc8260ads.c -> yourboard8260.c
u-boot.lds
Changed the files to fit the your board.
Changed the main Makefile to support a new target
> YOURBOARD8260_config: unconfig
> @./mkconfig $(@:_config=) ppc mpc8260 yourboard8260
good luck
^ permalink raw reply
* Re: How to use kerberos in ELDK
From: Wolfgang Denk @ 2005-09-15 7:08 UTC (permalink / raw)
To: JohnsonCheng; +Cc: linux-ppc-embedded
In-Reply-To: <20050915062857.B598968263@ozlabs.org>
In message <20050915062857.B598968263@ozlabs.org> you wrote:
>
> I have loadload ELDK-3.1.1 (ppc-2005-03-07 & ppc-2005-03-07-src), but
> whatever I try it, it doesn't work.
Can you please provide a specific example command you tried (and make
sure that it's working in a standard Linux environment), and post it
with a complete list of all output and error messages it produces?
Best regards,
Wolfgang Denk
--
Software Engineering: Embedded and Realtime Systems, Embedded Linux
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd@denx.de
Calm down, it's *__only* ones and zeroes.
^ permalink raw reply
* MPC5200 BestComm
From: zhonglei @ 2005-09-15 7:10 UTC (permalink / raw)
To: linuxppc-dev
hi:
My BestComm driver encounter the TEA.Please give
me a help!
The register values are as follows:
/**********************************************/
Setting BestComm Interface to the Local Plus
Bus......Set GR=001
starts DMA when 0x000001f3 bytes!
[ OK ]
MPC5xxx_MBAR+0x3C04 is 0x00000140
MPC5xxx_MBAR+0x3C08 is 0x03010002
MPC5xxx_MBAR+0x3C0C is 0x00000101
MPC5xxx_MBAR+0x3C48 is 0x01000000
MPC5xxx_MBAR+0x3C4C is 0x000001F3
MPC5xxx_MBAR+0x3C00 is 0x00000010
Starting BestComm setting......
TaskSetup......[ OK ]
LPRDTaskId=0x00000004
BestComm request_irq
succeed!MPC5xxx_SDMA_IRQ_BASE+LPRDTaskId=0x00000019
TaskStart running ......[ OK ]
htm_open: LPRDTaskId task 4 started
Kick off FIFO!
irq is entered!
TaskIntStatus=0xFFFFFFFF
End of irq!
MPC5xxx_MBAR+0x1F64 is 0x00000007
MPC5xxx_MBAR+0x1F68 is 0x00007121 // this is
the priority setting
MPC5xxx_MBAR+0x0500 is 0x0AFFFD00
MPC5xxx_MBAR+0x0504 is 0x00000000
MPC5xxx_MBAR+0x0508 is 0x00000000
MPC5xxx_MBAR+0x050C is 0x00000000
MPC5xxx_MBAR+0x0510 is 0x00D01001
MPC5xxx_MBAR+0x0514 is 0x00010FFF
MPC5xxx_MBAR+0x0518 is 0x00000000
MPC5xxx_MBAR+0x051C is 0x00000000
MPC5xxx_MBAR+0x0524 is 0x00000001
MPC5xxx_MBAR+0x0528 is 0x00000000
MPC5xxx_MBAR+0x052C is 0x00002000
MPC5xxx_MBAR+0x0530 is 0x00800000
MPC5xxx_MBAR+0x0538 is 0x00000000
MPC5xxx_MBAR+0x3C44 is 0x00020000
MPC5xxx_MBAR+0x3C48 is 0x01000000
MPC5xxx_MBAR+0x3C4C is 0x000001F3
MPC5xxx_MBAR+0x3C50 is 0x00000008 // readptr is
correct (I set bestcomm transfer 8 bytes from fifo
LPTaskParam.Size.NumBytes = 8;)
MPC5xxx_MBAR+0x3C54 is 0x00000010 // writeptr is
correct
MPC5xxx_MBAR+0x3C14 is 0x01000010 // bytedone is
correct
MPC5xxx_MBAR+0x1218 is 0xFFFFFFE3
MPC5xxx_MBAR+0x1214 is 0x14000000 // a TEA on
task 4 happens!!!
MPC5xxx_MBAR+0x1210 is 0x0F0F0001
MPC5xxx_MBAR+0x121C is 0x03002000
MPC5xxx_MBAR+0x1220 is 0x20C2C3C3
MPC5xxx_MBAR+0x1224 is 0x204400C5
MPC5xxx_MBAR+0x1228 is 0x00000000
MPC5xxx_MBAR+0x122C is 0x00000000
MPC5xxx_MBAR+0x1230 is 0x00000000
MPC5xxx_MBAR+0x1234 is 0x00000000
MPC5xxx_MBAR+0x1238 is 0x00000000
MPC5xxx_MBAR+0x123C is 0x07000006
MPC5xxx_MBAR+0x1240 is 0x05000000
MPC5xxx_MBAR+0x1244 is 0x00000000
MPC5xxx_MBAR+0x1248 is 0x00000000
MPC5xxx_MBAR+0x124C is 0x07000000
MPC5xxx_MBAR+0x1250 is 0x00000000
MPC5xxx_MBAR+0x1254 is 0x00000000
MPC5xxx_MBAR+0x1258 is 0x00000000
MPC5xxx_MBAR+0x1F48 is 0x00000103 // data tenure
time-out and address tenure time-out
MPC5xxx_MBAR+0x1F58 is 0x0FFFFFFF
MPC5xxx_MBAR+0x1F5C is 0x0FFFFFFF
MPC5xxx_MBAR+0x1F50 is 0xC1C24CC0 // captured
address
MPC5xxx_MBAR+0x1F54 is 0x00000062 // captured
signal
/**********************************************/
Please give me a help!!!!
Thanks a lot!
BestRegards
zhonglei
^ permalink raw reply
* How to use kerberos in ELDK
From: JohnsonCheng @ 2005-09-15 6:28 UTC (permalink / raw)
To: linux-ppc-embedded
[-- Attachment #1: Type: text/plain, Size: 184 bytes --]
Dear All,
I have loadload ELDK-3.1.1 (ppc-2005-03-07 & ppc-2005-03-07-src), but
whatever I try it, it doesn't work.
Do anybody know how to use it?
Thanks,
Johnson Cheng
[-- Attachment #2: Type: text/html, Size: 3109 bytes --]
^ permalink raw reply
* [PATCH] powerpc: don't execute a temporary comment
From: Stephen Rothwell @ 2005-09-15 6:04 UTC (permalink / raw)
To: paulus; +Cc: ppc-dev, ppc64-dev
Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
---
arch/ppc/Makefile | 2 +-
arch/ppc64/Makefile | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
--
Cheers,
Stephen Rothwell sfr@canb.auug.org.au
http://www.canb.auug.org.au/~sfr/
86f7688825b1f1e6fa4c43bce001b2a232f7d1bc
diff --git a/arch/ppc/Makefile b/arch/ppc/Makefile
--- a/arch/ppc/Makefile
+++ b/arch/ppc/Makefile
@@ -102,9 +102,9 @@ define archhelp
@echo ' *_defconfig - Select default config from arch/$(ARCH)/ppc/configs'
endef
+# arch/$(ARCH)/include is a temporary hack until we have migrated to asm-powerpc
archclean:
$(Q)$(MAKE) $(clean)=arch/ppc/boot
- # Temporary hack until we have migrated to asm-powerpc
$(Q)rm -rf arch/$(ARCH)/include
archprepare: checkbin
diff --git a/arch/ppc64/Makefile b/arch/ppc64/Makefile
--- a/arch/ppc64/Makefile
+++ b/arch/ppc64/Makefile
@@ -113,9 +113,9 @@ defaultimage-$(CONFIG_PPC_ISERIES) := vm
KBUILD_IMAGE := $(defaultimage-y)
all: $(KBUILD_IMAGE)
+# arch/$(ARCH)/include is a temporary hack until we have migrated to asm-powerpc
archclean:
$(Q)$(MAKE) $(clean)=$(boot)
- # Temporary hack until we have migrated to asm-powerpc
$(Q)rm -rf arch/$(ARCH)/include
^ permalink raw reply
* A question about the /dev/ide
From: FCG WANG Baohua @ 2005-09-15 1:57 UTC (permalink / raw)
To: wd; +Cc: linuxppc-embedded
Dear all:
I had use the UPM of MPC8270 to create the device driver of my pcmcia =
CF card.=20
How to create the "/dev/hda" device nodes? I had only "/dev/ide" =
device nodes, I want to use command like "mkswap /dev/hda4".
When I use "mkswap /dev/ide/host0/bus0/target0/lun0/part1p4", it shows =
the "No such file or directory" message. How can I create=20
the right device nodes? thanks!
When it booted, it showed the following message:
Uniform Multi-Platform E-IDE driver Revision: 7.00beta4-2.4
ide: Assuming 66MHz system bus speed for PIO modes
ide0: MPC82xx IDE interface
Probing IDE interface ide0...
hda: STI Flash 7.2.0, CFA DISK drive
ide0 at 0xc900d800-0xc900d807,0xc900d80e on irq 24
hda: attached ide-disk driver.
hda: 250880 sectors (128 MB), CHS=3D980/8/32
Partition check:
Partition check:
When using "fdisk -l" it shows the following message:
Disk /dev/ide/host0/bus0/target0/lun0/disc: 128 MB, 128450560 =
bytes
8 heads, 32 sectors/track, 980 cylinders
Units =3D cylinders of 256 * 512 =3D 131072 bytes
Device Boot Start End =
Blocks Id System
/dev/ide/host0/bus0/target0/lun0/part1 * 1 972 =
124400 6 FAT16
When use "p" option of "fdisk", it shows the following message:
Disk /dev/ide/host0/bus0/target0/lun0/part1: 127 MB, 127385600 =
bytes
8 heads, 32 sectors/track, 971 cylinders
Units =3D cylinders of 256 * 512 =3D 131072 bytes
Device Boot =
Start End Blocks Id System
/dev/ide/host0/bus0/target0/lun0/part1p1 1 16 =
2032 83 Linux
/dev/ide/host0/bus0/target0/lun0/part1p2 17 32 =
2048 83 Linux=20
/dev/ide/host0/bus0/target0/lun0/part1p3 33 788 =
96768 83 Linux=20
/dev/ide/host0/bus0/target0/lun0/part1p4 789 971 =
23424 83 Linux
=20
^ permalink raw reply
* Re: [PATCH] powerpc: merge include/asm/cputable.h
From: Arnd Bergmann @ 2005-09-14 23:58 UTC (permalink / raw)
To: Kumar Gala
Cc: linuxppc-dev, pantelis.antoniou, linuxppc64-dev,
linuxppc-embedded
In-Reply-To: <06F93AF6-7AF8-4320-B9E3-CBF9EA333403@freescale.com>
On Middeweken 14 September 2005 21:11, Kumar Gala wrote:
> I not sure I understand what the introduction of the enum's gets us.
>
It doesn't have to be an enum, it could just as well be a #define,
if we find that to be better in some way (maybe compile-time).
The general idea is to convert run-time checks into compile-time
checks in order to improve the running kernel. If you have
// start code
enum {
FEATURE_1 = 1,
FEATURE_2 = 2,
PLATFORM_1 = FEATURE_1,
PLATFORM_2 = FEATURE_2,
PLATFORM_3 = FEATURE_1 | FEATURE_2,
FEATURE_POSSIBLE =
#ifdef CONFIG_PLATFORM_1
PLATFORM_1 |
#endif
#ifdef CONFIG_FEATURE_2
PLATFORM_2 |
#endif
#ifdef CONFIG_FEATURE_3
PLATFORM_3 |
#endif
0,
FEATURE_ALWAYS =
#ifdef CONFIG_PLATFORM_1
PLATFORM_1 &
#endif
#ifdef CONFIG_PLATFORM_2
PLATFORM_2 &
#endif
#ifdef CONFIG_PLATFORM_3
PLATFORM_3 &
#endif
FEATURE_POSSIBLE,
};
static inline int have_feature(unsigned long feature)
{
return (FEATURE_ALWAYS & feature) ||
(FEATURE_POSSIBLE & runtime_feature & feature);
}
int foo();
int bar();
int main(void)
{
if (have_feature(FEATURE_1))
return foo();
if (have_feature(FEATURE_2))
return bar();
return 0;
}
// end code
Then gcc will produce optimal object code for any combination
of CONFIG_PLATFORM_{1,2,3}. Of course I have to admit that the
header file is not exactly elegant ;-).
Arnd <><
^ permalink raw reply
* Re: gdb hangs on Linux 2.6.11 on 8xx
From: Aristeu Sergio Rozanski Filho @ 2005-09-14 21:30 UTC (permalink / raw)
To: Marcelo Tosatti; +Cc: linuxppc-embedded
In-Reply-To: <20050914205521.GA9808@dmt.cnet>
> Using a different device than the one used by the serial console? Yes,
> think so..
no, I'm not trying to use gdb over serial... :)
--
Aristeu
^ permalink raw reply
* Re: gdb hangs on Linux 2.6.11 on 8xx
From: Marcelo Tosatti @ 2005-09-14 20:55 UTC (permalink / raw)
To: Aristeu Sergio Rozanski Filho; +Cc: linuxppc-embedded
In-Reply-To: <20050914154218.GA4335@oops.ghostprotocols.net>
On Wed, Sep 14, 2005 at 12:42:18PM -0300, Aristeu Sergio Rozanski Filho wrote:
> Hi Marcelo,
>
> > flash_test is trying to handle a signal, can you print some information
> > about it in get_signal_to_deliver (before ptrace_stop), such as si_signo:
> >
> > typedef struct siginfo {
> > int si_signo;
> > int si_errno;
> > int si_code;
> >
> > ptrace_stop() calls do_notify_parent_cldstop() to wakeup gdb, maybe
> > there's something wrong during wakeup?
> >
> > The box locks up completly or its just gdb that freezes?
> seems it's more simple than I thought: seems to be a problem with serial
> console as I'm able to use gdb using ssh
> Is serial console (using ttyCPM) supposed to work with gdb?
Using a different device than the one used by the serial console? Yes,
think so..
^ permalink raw reply
* [PATCH] Remove arch/ppc/syslib/ppc4xx_pm.c
From: Alexey Dobriyan @ 2005-09-14 20:10 UTC (permalink / raw)
To: Paul Mackerras; +Cc: linuxppc-dev, Armin Kuster, Domen Puncer
From: Domen Puncer <domen@coderock.org>
Remove nowhere referenced file (grep ppc4xx_pm -r . didn't find anything)
Signed-off-by: Domen Puncer <domen@coderock.org>
Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com>
---
arch/ppc/syslib/ppc4xx_pm.c | 47 --------------------------------------------
1 files changed, 47 deletions(-)
--- a/arch/ppc/syslib/ppc4xx_pm.c 2005-09-14 19:05:25.000000000 +0400
+++ /dev/null 1970-01-01 00:00:00.000000000 +0000
@@ -1,47 +0,0 @@
-/*
- * Author: Armin Kuster <akuster@mvista.com>
- *
- * 2002 (c) MontaVista, Software, Inc. This file is licensed under
- * the terms of the GNU General Public License version 2. This program
- * is licensed "as is" without any warranty of any kind, whether express
- * or implied.
- *
- * This an attempt to get Power Management going for the IBM 4xx processor.
- * This was derived from the ppc4xx._setup.c file
- */
-
-#include <linux/config.h>
-#include <linux/init.h>
-
-#include <asm/ibm4xx.h>
-
-void __init
-ppc4xx_pm_init(void)
-{
-
- unsigned int value = 0;
-
- /* turn off unused hardware to save power */
-#ifdef CONFIG_405GP
- value |= CPM_DCP; /* CodePack */
-#endif
-
-#if !defined(CONFIG_IBM_OCP_GPIO)
- value |= CPM_GPIO0;
-#endif
-
-#if !defined(CONFIG_PPC405_I2C_ADAP)
- value |= CPM_IIC0;
-#ifdef CONFIG_STB03xxx
- value |= CPM_IIC1;
-#endif
-#endif
-
-
-#if !defined(CONFIG_405_DMA)
- value |= CPM_DMA;
-#endif
-
- mtdcr(DCRN_CPMFR, value);
-
-}
^ permalink raw reply
* Re: [PATCH] powerpc: merge include/asm/cputable.h
From: Kumar Gala @ 2005-09-14 19:11 UTC (permalink / raw)
To: Arnd Bergmann
Cc: linuxppc-dev, pantelis.antoniou, linuxppc64-dev,
linuxppc-embedded
In-Reply-To: <200509090623.41889.arnd@arndb.de>
Arnd,
I not sure I understand what the introduction of the enum's gets us.
- kumar
On Sep 8, 2005, at 11:23 PM, Arnd Bergmann wrote:
> This is an updated version of my old patch that creates a more
> optimized
> version of cpu_has_feature(). This version actually combines
> asm-ppc/cputable.h and asm-ppc64/cputable.h, which turned out to be
> a lot more work than only the 64 bit version.
>
> The 64 bit parts a relatively straightforward port of my earlier work
> which I tested in a number of configurations. The 32 bit parts are
> not tested at all, all I did was compiling the ppc defconfig with
> this.
>
> I think it is best if I hand the patch over to Kumar and Becky for
> further testing and cleaning up the remaining bits in the new
> file, as they appear to have invested some thought in it already.
> This version still has a number of #ifdef __powerpc64__ that should
> probably go away in the process.
>
> The patch also relies on having the ASM_CONST() macro in ppc_asm.h,
> as proposed by Kumar Gala, so it won't work on the current git
> head without that change.
>
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
>
> --
>
> clean-cg/arch/ppc/kernel/cputable.c | 401 ++++
> +----------------------
> clean-cg/arch/ppc64/Kconfig | 30 ++
> clean-cg/arch/ppc64/kernel/cputable.c | 82 +----
> clean-cg/include/asm-powerpc/cputable.h | 475 ++++++++++++++++++++
> ++++++++++++
> include/asm-ppc/cputable.h | 128 --------
> include/asm-ppc64/cputable.h | 167 -----------
>
> Index: clean-cg/include/asm-ppc64/cputable.h
> ===================================================================
> --- clean-cg.orig/include/asm-ppc64/cputable.h
> +++ /dev/null
> @@ -1,167 +0,0 @@
> -/*
> - * include/asm-ppc64/cputable.h
> - *
> - * Copyright (C) 2001 Ben. Herrenschmidt (benh@kernel.crashing.org)
> - *
> - * Modifications for ppc64:
> - * Copyright (C) 2003 Dave Engebretsen <engebret@us.ibm.com>
> - *
> - * 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.
> - */
> -
> -#ifndef __ASM_PPC_CPUTABLE_H
> -#define __ASM_PPC_CPUTABLE_H
> -
> -#include <linux/config.h>
> -#include <asm/page.h> /* for ASM_CONST */
> -
> -/* Exposed to userland CPU features - Must match ppc32 definitions */
> -#define PPC_FEATURE_32 0x80000000
> -#define PPC_FEATURE_64 0x40000000
> -#define PPC_FEATURE_601_INSTR 0x20000000
> -#define PPC_FEATURE_HAS_ALTIVEC 0x10000000
> -#define PPC_FEATURE_HAS_FPU 0x08000000
> -#define PPC_FEATURE_HAS_MMU 0x04000000
> -#define PPC_FEATURE_HAS_4xxMAC 0x02000000
> -#define PPC_FEATURE_UNIFIED_CACHE 0x01000000
> -
> -#ifdef __KERNEL__
> -
> -#ifndef __ASSEMBLY__
> -
> -/* This structure can grow, it's real size is used by head.S code
> - * via the mkdefs mechanism.
> - */
> -struct cpu_spec;
> -struct op_ppc64_model;
> -
> -typedef void (*cpu_setup_t)(unsigned long offset, struct
> cpu_spec* spec);
> -
> -struct cpu_spec {
> - /* CPU is matched via (PVR & pvr_mask) == pvr_value */
> - unsigned int pvr_mask;
> - unsigned int pvr_value;
> -
> - char *cpu_name;
> - unsigned long cpu_features; /* Kernel features */
> - unsigned int cpu_user_features; /* Userland features */
> -
> - /* cache line sizes */
> - unsigned int icache_bsize;
> - unsigned int dcache_bsize;
> -
> - /* number of performance monitor counters */
> - unsigned int num_pmcs;
> -
> - /* this is called to initialize various CPU bits like L1 cache,
> - * BHT, SPD, etc... from head.S before branching to
> identify_machine
> - */
> - cpu_setup_t cpu_setup;
> -
> - /* Used by oprofile userspace to select the right counters */
> - char *oprofile_cpu_type;
> -
> - /* Processor specific oprofile operations */
> - struct op_ppc64_model *oprofile_model;
> -};
> -
> -extern struct cpu_spec cpu_specs[];
> -extern struct cpu_spec *cur_cpu_spec;
> -
> -static inline unsigned long cpu_has_feature(unsigned long feature)
> -{
> - return cur_cpu_spec->cpu_features & feature;
> -}
> -
> -#endif /* __ASSEMBLY__ */
> -
> -/* CPU kernel features */
> -
> -/* Retain the 32b definitions for the time being - use bottom half
> of word */
> -#define CPU_FTR_SPLIT_ID_CACHE ASM_CONST(0x0000000000000001)
> -#define CPU_FTR_L2CR ASM_CONST(0x0000000000000002)
> -#define CPU_FTR_SPEC7450 ASM_CONST(0x0000000000000004)
> -#define CPU_FTR_ALTIVEC ASM_CONST(0x0000000000000008)
> -#define CPU_FTR_TAU ASM_CONST(0x0000000000000010)
> -#define CPU_FTR_CAN_DOZE ASM_CONST(0x0000000000000020)
> -#define CPU_FTR_USE_TB ASM_CONST(0x0000000000000040)
> -#define CPU_FTR_604_PERF_MON ASM_CONST(0x0000000000000080)
> -#define CPU_FTR_601 ASM_CONST(0x0000000000000100)
> -#define CPU_FTR_HPTE_TABLE ASM_CONST(0x0000000000000200)
> -#define CPU_FTR_CAN_NAP ASM_CONST(0x0000000000000400)
> -#define CPU_FTR_L3CR ASM_CONST(0x0000000000000800)
> -#define CPU_FTR_L3_DISABLE_NAP ASM_CONST(0x0000000000001000)
> -#define CPU_FTR_NAP_DISABLE_L2_PR ASM_CONST(0x0000000000002000)
> -#define CPU_FTR_DUAL_PLL_750FX ASM_CONST(0x0000000000004000)
> -
> -/* Add the 64b processor unique features in the top half of the
> word */
> -#define CPU_FTR_SLB ASM_CONST(0x0000000100000000)
> -#define CPU_FTR_16M_PAGE ASM_CONST(0x0000000200000000)
> -#define CPU_FTR_TLBIEL ASM_CONST(0x0000000400000000)
> -#define CPU_FTR_NOEXECUTE ASM_CONST(0x0000000800000000)
> -#define CPU_FTR_NODSISRALIGN ASM_CONST(0x0000001000000000)
> -#define CPU_FTR_IABR ASM_CONST(0x0000002000000000)
> -#define CPU_FTR_MMCRA ASM_CONST(0x0000004000000000)
> -/* unused ASM_CONST(0x0000008000000000) */
> -#define CPU_FTR_SMT ASM_CONST(0x0000010000000000)
> -#define CPU_FTR_COHERENT_ICACHE ASM_CONST(0x0000020000000000)
> -#define CPU_FTR_LOCKLESS_TLBIE ASM_CONST(0x0000040000000000)
> -#define CPU_FTR_MMCRA_SIHV ASM_CONST(0x0000080000000000)
> -#define CPU_FTR_CTRL ASM_CONST(0x0000100000000000)
> -
> -#ifndef __ASSEMBLY__
> -
> -#define COMMON_USER_PPC64 (PPC_FEATURE_32 | PPC_FEATURE_64 | \
> - PPC_FEATURE_HAS_FPU | PPC_FEATURE_HAS_MMU)
> -
> -#define CPU_FTR_PPCAS_ARCH_V2_BASE (CPU_FTR_SLB | \
> - CPU_FTR_TLBIEL |
> CPU_FTR_NOEXECUTE | \
> - CPU_FTR_NODSISRALIGN | CPU_FTR_CTRL)
> -
> -/* iSeries doesn't support large pages */
> -#ifdef CONFIG_PPC_ISERIES
> -#define CPU_FTR_PPCAS_ARCH_V2 (CPU_FTR_PPCAS_ARCH_V2_BASE)
> -#else
> -#define CPU_FTR_PPCAS_ARCH_V2 (CPU_FTR_PPCAS_ARCH_V2_BASE |
> CPU_FTR_16M_PAGE)
> -#endif /* CONFIG_PPC_ISERIES */
> -
> -#endif /* __ASSEMBLY */
> -
> -#ifdef __ASSEMBLY__
> -
> -#define BEGIN_FTR_SECTION 98:
> -
> -#define END_FTR_SECTION(msk, val) \
> -99: \
> - .section __ftr_fixup,"a"; \
> - .align 3; \
> - .llong msk; \
> - .llong val; \
> - .llong 98b; \
> - .llong 99b; \
> - .previous
> -
> -#else
> -
> -#define BEGIN_FTR_SECTION "98:\n"
> -#define END_FTR_SECTION(msk, val) \
> -"99:\n" \
> -" .section __ftr_fixup,\"a\";\n" \
> -" .align 3;\n" \
> -" .llong "#msk";\n" \
> -" .llong "#val";\n" \
> -" .llong 98b;\n" \
> -" .llong 99b;\n" \
> -" .previous\n"
> -
> -#endif /* __ASSEMBLY__ */
> -
> -#define END_FTR_SECTION_IFSET(msk) END_FTR_SECTION((msk), (msk))
> -#define END_FTR_SECTION_IFCLR(msk) END_FTR_SECTION((msk), 0)
> -
> -#endif /* __ASM_PPC_CPUTABLE_H */
> -#endif /* __KERNEL__ */
> -
> Index: clean-cg/arch/ppc64/Kconfig
> ===================================================================
> --- clean-cg.orig/arch/ppc64/Kconfig
> +++ clean-cg/arch/ppc64/Kconfig
> @@ -125,6 +125,36 @@ config BPA_IIC
> bool
> default y
>
> +config CPU_POWER3
> + bool
> + default y
> + depends on (PPC_ISERIES || PPC_PSERIES) && !POWER4_ONLY
> +
> +config CPU_RS64
> + bool
> + default y
> + depends on (PPC_ISERIES || PPC_PSERIES) && !POWER4_ONLY
> +
> +config CPU_POWER4
> + bool
> + default y
> + depends on PPC_ISERIES || PPC_PSERIES
> +
> +config CPU_PPC970
> + bool
> + default y
> + depends on PPC_PSERIES || PPC_PMAC || PPC_MAPLE
> +
> +config CPU_POWER5
> + bool
> + default y
> + depends on PPC_PSERIES
> +
> +config CPU_CELL
> + bool
> + default y
> + depends on PPC_BPA
> +
> # VMX is pSeries only for now until somebody writes the iSeries
> # exception vectors for it
> config ALTIVEC
> Index: clean-cg/arch/ppc64/kernel/cputable.c
> ===================================================================
> --- clean-cg.orig/arch/ppc64/kernel/cputable.c
> +++ clean-cg/arch/ppc64/kernel/cputable.c
> @@ -37,26 +37,13 @@ extern void __setup_cpu_power4(unsigned
> extern void __setup_cpu_ppc970(unsigned long offset, struct
> cpu_spec* spec);
> extern void __setup_cpu_be(unsigned long offset, struct cpu_spec*
> spec);
>
> -
> -/* We only set the altivec features if the kernel was compiled
> with altivec
> - * support
> - */
> -#ifdef CONFIG_ALTIVEC
> -#define CPU_FTR_ALTIVEC_COMP CPU_FTR_ALTIVEC
> -#define PPC_FEATURE_HAS_ALTIVEC_COMP PPC_FEATURE_HAS_ALTIVEC
> -#else
> -#define CPU_FTR_ALTIVEC_COMP 0
> -#define PPC_FEATURE_HAS_ALTIVEC_COMP 0
> -#endif
> -
> struct cpu_spec cpu_specs[] = {
> { /* Power3 */
> .pvr_mask = 0xffff0000,
> .pvr_value = 0x00400000,
> .cpu_name = "POWER3 (630)",
> - .cpu_features = CPU_FTR_SPLIT_ID_CACHE |
> - CPU_FTR_USE_TB | CPU_FTR_HPTE_TABLE | CPU_FTR_IABR,
> - .cpu_user_features = COMMON_USER_PPC64,
> + .cpu_features = CPU_FTR_POWER3,
> + .cpu_user_features = COMMON_USER_PPC64,
> .icache_bsize = 128,
> .dcache_bsize = 128,
> .num_pmcs = 8,
> @@ -70,8 +57,7 @@ struct cpu_spec cpu_specs[] = {
> .pvr_mask = 0xffff0000,
> .pvr_value = 0x00410000,
> .cpu_name = "POWER3 (630+)",
> - .cpu_features = CPU_FTR_SPLIT_ID_CACHE |
> - CPU_FTR_USE_TB | CPU_FTR_HPTE_TABLE | CPU_FTR_IABR,
> + .cpu_features = CPU_FTR_POWER3,
> .cpu_user_features = COMMON_USER_PPC64,
> .icache_bsize = 128,
> .dcache_bsize = 128,
> @@ -86,9 +72,7 @@ struct cpu_spec cpu_specs[] = {
> .pvr_mask = 0xffff0000,
> .pvr_value = 0x00330000,
> .cpu_name = "RS64-II (northstar)",
> - .cpu_features = CPU_FTR_SPLIT_ID_CACHE |
> - CPU_FTR_USE_TB | CPU_FTR_HPTE_TABLE | CPU_FTR_IABR |
> - CPU_FTR_MMCRA | CPU_FTR_CTRL,
> + .cpu_features = CPU_FTR_RS64,
> .cpu_user_features = COMMON_USER_PPC64,
> .icache_bsize = 128,
> .dcache_bsize = 128,
> @@ -103,9 +87,7 @@ struct cpu_spec cpu_specs[] = {
> .pvr_mask = 0xffff0000,
> .pvr_value = 0x00340000,
> .cpu_name = "RS64-III (pulsar)",
> - .cpu_features = CPU_FTR_SPLIT_ID_CACHE |
> - CPU_FTR_USE_TB | CPU_FTR_HPTE_TABLE | CPU_FTR_IABR |
> - CPU_FTR_MMCRA | CPU_FTR_CTRL,
> + .cpu_features = CPU_FTR_RS64,
> .cpu_user_features = COMMON_USER_PPC64,
> .icache_bsize = 128,
> .dcache_bsize = 128,
> @@ -120,9 +102,7 @@ struct cpu_spec cpu_specs[] = {
> .pvr_mask = 0xffff0000,
> .pvr_value = 0x00360000,
> .cpu_name = "RS64-III (icestar)",
> - .cpu_features = CPU_FTR_SPLIT_ID_CACHE |
> - CPU_FTR_USE_TB | CPU_FTR_HPTE_TABLE | CPU_FTR_IABR |
> - CPU_FTR_MMCRA | CPU_FTR_CTRL,
> + .cpu_features = CPU_FTR_RS64,
> .cpu_user_features = COMMON_USER_PPC64,
> .icache_bsize = 128,
> .dcache_bsize = 128,
> @@ -137,9 +117,7 @@ struct cpu_spec cpu_specs[] = {
> .pvr_mask = 0xffff0000,
> .pvr_value = 0x00370000,
> .cpu_name = "RS64-IV (sstar)",
> - .cpu_features = CPU_FTR_SPLIT_ID_CACHE |
> - CPU_FTR_USE_TB | CPU_FTR_HPTE_TABLE | CPU_FTR_IABR |
> - CPU_FTR_MMCRA | CPU_FTR_CTRL,
> + .cpu_features = CPU_FTR_RS64,
> .cpu_user_features = COMMON_USER_PPC64,
> .icache_bsize = 128,
> .dcache_bsize = 128,
> @@ -154,9 +132,7 @@ struct cpu_spec cpu_specs[] = {
> .pvr_mask = 0xffff0000,
> .pvr_value = 0x00350000,
> .cpu_name = "POWER4 (gp)",
> - .cpu_features = CPU_FTR_SPLIT_ID_CACHE |
> - CPU_FTR_USE_TB | CPU_FTR_HPTE_TABLE |
> - CPU_FTR_PPCAS_ARCH_V2 | CPU_FTR_MMCRA,
> + .cpu_features = CPU_FTR_POWER4,
> .cpu_user_features = COMMON_USER_PPC64,
> .icache_bsize = 128,
> .dcache_bsize = 128,
> @@ -171,9 +147,7 @@ struct cpu_spec cpu_specs[] = {
> .pvr_mask = 0xffff0000,
> .pvr_value = 0x00380000,
> .cpu_name = "POWER4+ (gq)",
> - .cpu_features = CPU_FTR_SPLIT_ID_CACHE |
> - CPU_FTR_USE_TB | CPU_FTR_HPTE_TABLE |
> - CPU_FTR_PPCAS_ARCH_V2 | CPU_FTR_MMCRA,
> + .cpu_features = CPU_FTR_POWER4,
> .cpu_user_features = COMMON_USER_PPC64,
> .icache_bsize = 128,
> .dcache_bsize = 128,
> @@ -188,10 +162,7 @@ struct cpu_spec cpu_specs[] = {
> .pvr_mask = 0xffff0000,
> .pvr_value = 0x00390000,
> .cpu_name = "PPC970",
> - .cpu_features = CPU_FTR_SPLIT_ID_CACHE |
> - CPU_FTR_USE_TB | CPU_FTR_HPTE_TABLE |
> - CPU_FTR_PPCAS_ARCH_V2 | CPU_FTR_ALTIVEC_COMP |
> - CPU_FTR_CAN_NAP | CPU_FTR_MMCRA,
> + .cpu_features = CPU_FTR_PPC970,
> .cpu_user_features = COMMON_USER_PPC64 |
> PPC_FEATURE_HAS_ALTIVEC_COMP,
> .icache_bsize = 128,
> @@ -207,10 +178,7 @@ struct cpu_spec cpu_specs[] = {
> .pvr_mask = 0xffff0000,
> .pvr_value = 0x003c0000,
> .cpu_name = "PPC970FX",
> - .cpu_features = CPU_FTR_SPLIT_ID_CACHE |
> - CPU_FTR_USE_TB | CPU_FTR_HPTE_TABLE |
> - CPU_FTR_PPCAS_ARCH_V2 | CPU_FTR_ALTIVEC_COMP |
> - CPU_FTR_CAN_NAP | CPU_FTR_MMCRA,
> + .cpu_features = CPU_FTR_PPC970,
> .cpu_user_features = COMMON_USER_PPC64 |
> PPC_FEATURE_HAS_ALTIVEC_COMP,
> .icache_bsize = 128,
> @@ -226,10 +194,7 @@ struct cpu_spec cpu_specs[] = {
> .pvr_mask = 0xffff0000,
> .pvr_value = 0x00440000,
> .cpu_name = "PPC970MP",
> - .cpu_features = CPU_FTR_SPLIT_ID_CACHE |
> - CPU_FTR_USE_TB | CPU_FTR_HPTE_TABLE |
> - CPU_FTR_PPCAS_ARCH_V2 | CPU_FTR_ALTIVEC_COMP |
> - CPU_FTR_CAN_NAP | CPU_FTR_MMCRA,
> + .cpu_features = CPU_FTR_PPC970,
> .cpu_user_features = COMMON_USER_PPC64 |
> PPC_FEATURE_HAS_ALTIVEC_COMP,
> .icache_bsize = 128,
> @@ -244,11 +209,7 @@ struct cpu_spec cpu_specs[] = {
> .pvr_mask = 0xffff0000,
> .pvr_value = 0x003a0000,
> .cpu_name = "POWER5 (gr)",
> - .cpu_features = CPU_FTR_SPLIT_ID_CACHE |
> - CPU_FTR_USE_TB | CPU_FTR_HPTE_TABLE |
> - CPU_FTR_PPCAS_ARCH_V2 | CPU_FTR_MMCRA | CPU_FTR_SMT |
> - CPU_FTR_COHERENT_ICACHE | CPU_FTR_LOCKLESS_TLBIE |
> - CPU_FTR_MMCRA_SIHV,
> + .cpu_features = CPU_FTR_POWER5,
> .cpu_user_features = COMMON_USER_PPC64,
> .icache_bsize = 128,
> .dcache_bsize = 128,
> @@ -263,11 +224,7 @@ struct cpu_spec cpu_specs[] = {
> .pvr_mask = 0xffff0000,
> .pvr_value = 0x003b0000,
> .cpu_name = "POWER5 (gs)",
> - .cpu_features = CPU_FTR_SPLIT_ID_CACHE |
> - CPU_FTR_USE_TB | CPU_FTR_HPTE_TABLE |
> - CPU_FTR_PPCAS_ARCH_V2 | CPU_FTR_MMCRA | CPU_FTR_SMT |
> - CPU_FTR_COHERENT_ICACHE | CPU_FTR_LOCKLESS_TLBIE |
> - CPU_FTR_MMCRA_SIHV,
> + .cpu_features = CPU_FTR_POWER5,
> .cpu_user_features = COMMON_USER_PPC64,
> .icache_bsize = 128,
> .dcache_bsize = 128,
> @@ -281,11 +238,8 @@ struct cpu_spec cpu_specs[] = {
> { /* BE DD1.x */
> .pvr_mask = 0xffff0000,
> .pvr_value = 0x00700000,
> - .cpu_name = "Broadband Engine",
> - .cpu_features = CPU_FTR_SPLIT_ID_CACHE |
> - CPU_FTR_USE_TB | CPU_FTR_HPTE_TABLE |
> - CPU_FTR_PPCAS_ARCH_V2 | CPU_FTR_ALTIVEC_COMP |
> - CPU_FTR_SMT,
> + .cpu_name = "Cell Broadband Engine",
> + .cpu_features = CPU_FTR_CELL,
> .cpu_user_features = COMMON_USER_PPC64 |
> PPC_FEATURE_HAS_ALTIVEC_COMP,
> .icache_bsize = 128,
> @@ -296,9 +250,7 @@ struct cpu_spec cpu_specs[] = {
> .pvr_mask = 0x00000000,
> .pvr_value = 0x00000000,
> .cpu_name = "POWER4 (compatible)",
> - .cpu_features = CPU_FTR_SPLIT_ID_CACHE |
> - CPU_FTR_USE_TB | CPU_FTR_HPTE_TABLE |
> - CPU_FTR_PPCAS_ARCH_V2,
> + .cpu_features = CPU_FTR_COMPATIBLE,
> .cpu_user_features = COMMON_USER_PPC64,
> .icache_bsize = 128,
> .dcache_bsize = 128,
> Index: clean-cg/arch/ppc/kernel/cputable.c
> ===================================================================
> --- clean-cg.orig/arch/ppc/kernel/cputable.c
> +++ clean-cg/arch/ppc/kernel/cputable.c
> @@ -42,17 +42,6 @@ extern void __setup_cpu_generic(unsigned
> #define COMMON_PPC (PPC_FEATURE_32 | PPC_FEATURE_HAS_FPU | \
> PPC_FEATURE_HAS_MMU)
>
> -/* We only set the altivec features if the kernel was compiled
> with altivec
> - * support
> - */
> -#ifdef CONFIG_ALTIVEC
> -#define CPU_FTR_ALTIVEC_COMP CPU_FTR_ALTIVEC
> -#define PPC_FEATURE_ALTIVEC_COMP PPC_FEATURE_HAS_ALTIVEC
> -#else
> -#define CPU_FTR_ALTIVEC_COMP 0
> -#define PPC_FEATURE_ALTIVEC_COMP 0
> -#endif
> -
> /* We only set the spe features if the kernel was compiled with
> * spe support
> */
> @@ -62,34 +51,13 @@ extern void __setup_cpu_generic(unsigned
> #define PPC_FEATURE_SPE_COMP 0
> #endif
>
> -/* We need to mark all pages as being coherent if we're SMP or we
> - * have a 74[45]x and an MPC107 host bridge.
> - */
> -#if defined(CONFIG_SMP) || defined(CONFIG_MPC10X_BRIDGE)
> -#define CPU_FTR_COMMON CPU_FTR_NEED_COHERENT
> -#else
> -#define CPU_FTR_COMMON 0
> -#endif
> -
> -/* The powersave features NAP & DOZE seems to confuse BDI when
> - debugging. So if a BDI is used, disable theses
> - */
> -#ifndef CONFIG_BDI_SWITCH
> -#define CPU_FTR_MAYBE_CAN_DOZE CPU_FTR_CAN_DOZE
> -#define CPU_FTR_MAYBE_CAN_NAP CPU_FTR_CAN_NAP
> -#else
> -#define CPU_FTR_MAYBE_CAN_DOZE 0
> -#define CPU_FTR_MAYBE_CAN_NAP 0
> -#endif
> -
> struct cpu_spec cpu_specs[] = {
> #if CLASSIC_PPC
> { /* 601 */
> .pvr_mask = 0xffff0000,
> .pvr_value = 0x00010000,
> .cpu_name = "601",
> - .cpu_features = CPU_FTR_COMMON | CPU_FTR_601 |
> - CPU_FTR_HPTE_TABLE,
> + .cpu_features = CPU_FTR_PPC601,
> .cpu_user_features = COMMON_PPC | PPC_FEATURE_601_INSTR |
> PPC_FEATURE_UNIFIED_CACHE,
> .icache_bsize = 32,
> @@ -100,9 +68,7 @@ struct cpu_spec cpu_specs[] = {
> .pvr_mask = 0xffff0000,
> .pvr_value = 0x00030000,
> .cpu_name = "603",
> - .cpu_features = CPU_FTR_COMMON |
> - CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_MAYBE_CAN_DOZE |
> - CPU_FTR_USE_TB | CPU_FTR_MAYBE_CAN_NAP,
> + .cpu_features = CPU_FTR_603,
> .cpu_user_features = COMMON_PPC,
> .icache_bsize = 32,
> .dcache_bsize = 32,
> @@ -112,9 +78,7 @@ struct cpu_spec cpu_specs[] = {
> .pvr_mask = 0xffff0000,
> .pvr_value = 0x00060000,
> .cpu_name = "603e",
> - .cpu_features = CPU_FTR_COMMON |
> - CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_MAYBE_CAN_DOZE |
> - CPU_FTR_USE_TB | CPU_FTR_MAYBE_CAN_NAP,
> + .cpu_features = CPU_FTR_603,
> .cpu_user_features = COMMON_PPC,
> .icache_bsize = 32,
> .dcache_bsize = 32,
> @@ -124,9 +88,7 @@ struct cpu_spec cpu_specs[] = {
> .pvr_mask = 0xffff0000,
> .pvr_value = 0x00070000,
> .cpu_name = "603ev",
> - .cpu_features = CPU_FTR_COMMON |
> - CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_MAYBE_CAN_DOZE |
> - CPU_FTR_USE_TB | CPU_FTR_MAYBE_CAN_NAP,
> + .cpu_features = CPU_FTR_603,
> .cpu_user_features = COMMON_PPC,
> .icache_bsize = 32,
> .dcache_bsize = 32,
> @@ -136,9 +98,7 @@ struct cpu_spec cpu_specs[] = {
> .pvr_mask = 0xffff0000,
> .pvr_value = 0x00040000,
> .cpu_name = "604",
> - .cpu_features = CPU_FTR_COMMON |
> - CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_USE_TB |
> - CPU_FTR_604_PERF_MON | CPU_FTR_HPTE_TABLE,
> + .cpu_features = CPU_FTR_604,
> .cpu_user_features = COMMON_PPC,
> .icache_bsize = 32,
> .dcache_bsize = 32,
> @@ -149,9 +109,7 @@ struct cpu_spec cpu_specs[] = {
> .pvr_mask = 0xfffff000,
> .pvr_value = 0x00090000,
> .cpu_name = "604e",
> - .cpu_features = CPU_FTR_COMMON |
> - CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_USE_TB |
> - CPU_FTR_604_PERF_MON | CPU_FTR_HPTE_TABLE,
> + .cpu_features = CPU_FTR_604,
> .cpu_user_features = COMMON_PPC,
> .icache_bsize = 32,
> .dcache_bsize = 32,
> @@ -162,9 +120,7 @@ struct cpu_spec cpu_specs[] = {
> .pvr_mask = 0xffff0000,
> .pvr_value = 0x00090000,
> .cpu_name = "604r",
> - .cpu_features = CPU_FTR_COMMON |
> - CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_USE_TB |
> - CPU_FTR_604_PERF_MON | CPU_FTR_HPTE_TABLE,
> + .cpu_features = CPU_FTR_604,
> .cpu_user_features = COMMON_PPC,
> .icache_bsize = 32,
> .dcache_bsize = 32,
> @@ -175,9 +131,7 @@ struct cpu_spec cpu_specs[] = {
> .pvr_mask = 0xffff0000,
> .pvr_value = 0x000a0000,
> .cpu_name = "604ev",
> - .cpu_features = CPU_FTR_COMMON |
> - CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_USE_TB |
> - CPU_FTR_604_PERF_MON | CPU_FTR_HPTE_TABLE,
> + .cpu_features = CPU_FTR_604,
> .cpu_user_features = COMMON_PPC,
> .icache_bsize = 32,
> .dcache_bsize = 32,
> @@ -188,10 +142,7 @@ struct cpu_spec cpu_specs[] = {
> .pvr_mask = 0xffffffff,
> .pvr_value = 0x00084202,
> .cpu_name = "740/750",
> - .cpu_features = CPU_FTR_COMMON |
> - CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_MAYBE_CAN_DOZE |
> - CPU_FTR_USE_TB | CPU_FTR_L2CR | CPU_FTR_HPTE_TABLE |
> - CPU_FTR_MAYBE_CAN_NAP,
> + .cpu_features = CPU_FTR_740_NOTAU,
> .cpu_user_features = COMMON_PPC,
> .icache_bsize = 32,
> .dcache_bsize = 32,
> @@ -202,10 +153,7 @@ struct cpu_spec cpu_specs[] = {
> .pvr_mask = 0xfffffff0,
> .pvr_value = 0x00080100,
> .cpu_name = "750CX",
> - .cpu_features = CPU_FTR_COMMON |
> - CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_MAYBE_CAN_DOZE |
> - CPU_FTR_USE_TB | CPU_FTR_L2CR | CPU_FTR_TAU |
> - CPU_FTR_HPTE_TABLE | CPU_FTR_MAYBE_CAN_NAP,
> + .cpu_features = CPU_FTR_750,
> .cpu_user_features = COMMON_PPC,
> .icache_bsize = 32,
> .dcache_bsize = 32,
> @@ -216,10 +164,7 @@ struct cpu_spec cpu_specs[] = {
> .pvr_mask = 0xfffffff0,
> .pvr_value = 0x00082200,
> .cpu_name = "750CX",
> - .cpu_features = CPU_FTR_COMMON |
> - CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_MAYBE_CAN_DOZE |
> - CPU_FTR_USE_TB | CPU_FTR_L2CR | CPU_FTR_TAU |
> - CPU_FTR_HPTE_TABLE | CPU_FTR_MAYBE_CAN_NAP,
> + .cpu_features = CPU_FTR_750,
> .cpu_user_features = COMMON_PPC,
> .icache_bsize = 32,
> .dcache_bsize = 32,
> @@ -230,10 +175,7 @@ struct cpu_spec cpu_specs[] = {
> .pvr_mask = 0xfffffff0,
> .pvr_value = 0x00082210,
> .cpu_name = "750CXe",
> - .cpu_features = CPU_FTR_COMMON |
> - CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_MAYBE_CAN_DOZE |
> - CPU_FTR_USE_TB | CPU_FTR_L2CR | CPU_FTR_TAU |
> - CPU_FTR_HPTE_TABLE | CPU_FTR_MAYBE_CAN_NAP,
> + .cpu_features = CPU_FTR_750,
> .cpu_user_features = COMMON_PPC,
> .icache_bsize = 32,
> .dcache_bsize = 32,
> @@ -244,10 +186,7 @@ struct cpu_spec cpu_specs[] = {
> .pvr_mask = 0xffffffff,
> .pvr_value = 0x00083214,
> .cpu_name = "750CXe",
> - .cpu_features = CPU_FTR_COMMON |
> - CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_MAYBE_CAN_DOZE |
> - CPU_FTR_USE_TB | CPU_FTR_L2CR | CPU_FTR_TAU |
> - CPU_FTR_HPTE_TABLE | CPU_FTR_MAYBE_CAN_NAP,
> + .cpu_features = CPU_FTR_750,
> .cpu_user_features = COMMON_PPC,
> .icache_bsize = 32,
> .dcache_bsize = 32,
> @@ -258,10 +197,7 @@ struct cpu_spec cpu_specs[] = {
> .pvr_mask = 0xfffff000,
> .pvr_value = 0x00083000,
> .cpu_name = "745/755",
> - .cpu_features = CPU_FTR_COMMON |
> - CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_MAYBE_CAN_DOZE |
> - CPU_FTR_USE_TB | CPU_FTR_L2CR | CPU_FTR_TAU |
> - CPU_FTR_HPTE_TABLE | CPU_FTR_MAYBE_CAN_NAP,
> + .cpu_features = CPU_FTR_750,
> .cpu_user_features = COMMON_PPC,
> .icache_bsize = 32,
> .dcache_bsize = 32,
> @@ -272,11 +208,7 @@ struct cpu_spec cpu_specs[] = {
> .pvr_mask = 0xffffff00,
> .pvr_value = 0x70000100,
> .cpu_name = "750FX",
> - .cpu_features = CPU_FTR_COMMON |
> - CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_MAYBE_CAN_DOZE |
> - CPU_FTR_USE_TB | CPU_FTR_L2CR | CPU_FTR_TAU |
> - CPU_FTR_HPTE_TABLE | CPU_FTR_MAYBE_CAN_NAP |
> - CPU_FTR_DUAL_PLL_750FX | CPU_FTR_NO_DPM,
> + .cpu_features = CPU_FTR_750FX1,
> .cpu_user_features = COMMON_PPC,
> .icache_bsize = 32,
> .dcache_bsize = 32,
> @@ -287,11 +219,7 @@ struct cpu_spec cpu_specs[] = {
> .pvr_mask = 0xffffffff,
> .pvr_value = 0x70000200,
> .cpu_name = "750FX",
> - .cpu_features = CPU_FTR_COMMON |
> - CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_MAYBE_CAN_DOZE |
> - CPU_FTR_USE_TB | CPU_FTR_L2CR | CPU_FTR_TAU |
> - CPU_FTR_HPTE_TABLE | CPU_FTR_MAYBE_CAN_NAP |
> - CPU_FTR_NO_DPM,
> + .cpu_features = CPU_FTR_750FX2,
> .cpu_user_features = COMMON_PPC,
> .icache_bsize = 32,
> .dcache_bsize = 32,
> @@ -302,11 +230,7 @@ struct cpu_spec cpu_specs[] = {
> .pvr_mask = 0xffff0000,
> .pvr_value = 0x70000000,
> .cpu_name = "750FX",
> - .cpu_features = CPU_FTR_COMMON |
> - CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_MAYBE_CAN_DOZE |
> - CPU_FTR_USE_TB | CPU_FTR_L2CR | CPU_FTR_TAU |
> - CPU_FTR_HPTE_TABLE | CPU_FTR_MAYBE_CAN_NAP |
> - CPU_FTR_DUAL_PLL_750FX | CPU_FTR_HAS_HIGH_BATS,
> + .cpu_features = CPU_FTR_750FX,
> .cpu_user_features = COMMON_PPC,
> .icache_bsize = 32,
> .dcache_bsize = 32,
> @@ -317,11 +241,7 @@ struct cpu_spec cpu_specs[] = {
> .pvr_mask = 0xffff0000,
> .pvr_value = 0x70020000,
> .cpu_name = "750GX",
> - .cpu_features = CPU_FTR_SPLIT_ID_CACHE |
> - CPU_FTR_MAYBE_CAN_DOZE | CPU_FTR_USE_TB |
> - CPU_FTR_L2CR | CPU_FTR_TAU | CPU_FTR_HPTE_TABLE |
> - CPU_FTR_MAYBE_CAN_NAP | CPU_FTR_DUAL_PLL_750FX |
> - CPU_FTR_HAS_HIGH_BATS,
> + .cpu_features = CPU_FTR_750GX,
> .cpu_user_features = COMMON_PPC,
> .icache_bsize = 32,
> .dcache_bsize = 32,
> @@ -332,10 +252,7 @@ struct cpu_spec cpu_specs[] = {
> .pvr_mask = 0xffff0000,
> .pvr_value = 0x00080000,
> .cpu_name = "740/750",
> - .cpu_features = CPU_FTR_COMMON |
> - CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_MAYBE_CAN_DOZE |
> - CPU_FTR_USE_TB | CPU_FTR_L2CR | CPU_FTR_TAU |
> - CPU_FTR_HPTE_TABLE | CPU_FTR_MAYBE_CAN_NAP,
> + .cpu_features = CPU_FTR_740,
> .cpu_user_features = COMMON_PPC,
> .icache_bsize = 32,
> .dcache_bsize = 32,
> @@ -346,11 +263,8 @@ struct cpu_spec cpu_specs[] = {
> .pvr_mask = 0xffffffff,
> .pvr_value = 0x000c1101,
> .cpu_name = "7400 (1.1)",
> - .cpu_features = CPU_FTR_COMMON |
> - CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_MAYBE_CAN_DOZE |
> - CPU_FTR_USE_TB | CPU_FTR_L2CR | CPU_FTR_ALTIVEC_COMP |
> - CPU_FTR_HPTE_TABLE | CPU_FTR_MAYBE_CAN_NAP,
> - .cpu_user_features = COMMON_PPC |
> PPC_FEATURE_ALTIVEC_COMP,
> + .cpu_features = CPU_FTR_7400_NOTAU,
> + .cpu_user_features = COMMON_PPC |
> PPC_FEATURE_HAS_ALTIVEC_COMP,
> .icache_bsize = 32,
> .dcache_bsize = 32,
> .num_pmcs = 4,
> @@ -360,12 +274,8 @@ struct cpu_spec cpu_specs[] = {
> .pvr_mask = 0xffff0000,
> .pvr_value = 0x000c0000,
> .cpu_name = "7400",
> - .cpu_features = CPU_FTR_COMMON |
> - CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_MAYBE_CAN_DOZE |
> - CPU_FTR_USE_TB | CPU_FTR_L2CR | CPU_FTR_TAU |
> - CPU_FTR_ALTIVEC_COMP | CPU_FTR_HPTE_TABLE |
> - CPU_FTR_MAYBE_CAN_NAP,
> - .cpu_user_features = COMMON_PPC |
> PPC_FEATURE_ALTIVEC_COMP,
> + .cpu_features = CPU_FTR_7400,
> + .cpu_user_features = COMMON_PPC |
> PPC_FEATURE_HAS_ALTIVEC_COMP,
> .icache_bsize = 32,
> .dcache_bsize = 32,
> .num_pmcs = 4,
> @@ -375,12 +285,8 @@ struct cpu_spec cpu_specs[] = {
> .pvr_mask = 0xffff0000,
> .pvr_value = 0x800c0000,
> .cpu_name = "7410",
> - .cpu_features = CPU_FTR_COMMON |
> - CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_MAYBE_CAN_DOZE |
> - CPU_FTR_USE_TB | CPU_FTR_L2CR | CPU_FTR_TAU |
> - CPU_FTR_ALTIVEC_COMP | CPU_FTR_HPTE_TABLE |
> - CPU_FTR_MAYBE_CAN_NAP,
> - .cpu_user_features = COMMON_PPC |
> PPC_FEATURE_ALTIVEC_COMP,
> + .cpu_features = CPU_FTR_7400,
> + .cpu_user_features = COMMON_PPC |
> PPC_FEATURE_HAS_ALTIVEC_COMP,
> .icache_bsize = 32,
> .dcache_bsize = 32,
> .num_pmcs = 4,
> @@ -390,12 +296,8 @@ struct cpu_spec cpu_specs[] = {
> .pvr_mask = 0xffffffff,
> .pvr_value = 0x80000200,
> .cpu_name = "7450",
> - .cpu_features = CPU_FTR_COMMON |
> - CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_USE_TB |
> - CPU_FTR_L2CR | CPU_FTR_ALTIVEC_COMP | CPU_FTR_L3CR |
> - CPU_FTR_HPTE_TABLE | CPU_FTR_SPEC7450 |
> - CPU_FTR_NEED_COHERENT,
> - .cpu_user_features = COMMON_PPC |
> PPC_FEATURE_ALTIVEC_COMP,
> + .cpu_features = CPU_FTR_7450_20,
> + .cpu_user_features = COMMON_PPC |
> PPC_FEATURE_HAS_ALTIVEC_COMP,
> .icache_bsize = 32,
> .dcache_bsize = 32,
> .num_pmcs = 6,
> @@ -405,14 +307,8 @@ struct cpu_spec cpu_specs[] = {
> .pvr_mask = 0xffffffff,
> .pvr_value = 0x80000201,
> .cpu_name = "7450",
> - .cpu_features = CPU_FTR_COMMON |
> - CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_USE_TB |
> - CPU_FTR_MAYBE_CAN_NAP | CPU_FTR_L2CR |
> - CPU_FTR_ALTIVEC_COMP | CPU_FTR_L3CR |
> - CPU_FTR_HPTE_TABLE | CPU_FTR_SPEC7450 |
> - CPU_FTR_NAP_DISABLE_L2_PR | CPU_FTR_L3_DISABLE_NAP |
> - CPU_FTR_NEED_COHERENT,
> - .cpu_user_features = COMMON_PPC |
> PPC_FEATURE_ALTIVEC_COMP,
> + .cpu_features = CPU_FTR_7450_21,
> + .cpu_user_features = COMMON_PPC |
> PPC_FEATURE_HAS_ALTIVEC_COMP,
> .icache_bsize = 32,
> .dcache_bsize = 32,
> .num_pmcs = 6,
> @@ -422,13 +318,8 @@ struct cpu_spec cpu_specs[] = {
> .pvr_mask = 0xffff0000,
> .pvr_value = 0x80000000,
> .cpu_name = "7450",
> - .cpu_features = CPU_FTR_COMMON |
> - CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_USE_TB |
> - CPU_FTR_MAYBE_CAN_NAP | CPU_FTR_L2CR |
> - CPU_FTR_ALTIVEC_COMP | CPU_FTR_L3CR |
> - CPU_FTR_HPTE_TABLE | CPU_FTR_SPEC7450 |
> - CPU_FTR_NAP_DISABLE_L2_PR | CPU_FTR_NEED_COHERENT,
> - .cpu_user_features = COMMON_PPC |
> PPC_FEATURE_ALTIVEC_COMP,
> + .cpu_features = CPU_FTR_7450_23,
> + .cpu_user_features = COMMON_PPC |
> PPC_FEATURE_HAS_ALTIVEC_COMP,
> .icache_bsize = 32,
> .dcache_bsize = 32,
> .num_pmcs = 6,
> @@ -438,12 +329,8 @@ struct cpu_spec cpu_specs[] = {
> .pvr_mask = 0xffffff00,
> .pvr_value = 0x80010100,
> .cpu_name = "7455",
> - .cpu_features = CPU_FTR_COMMON |
> - CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_USE_TB |
> - CPU_FTR_L2CR | CPU_FTR_ALTIVEC_COMP | CPU_FTR_L3CR |
> - CPU_FTR_HPTE_TABLE | CPU_FTR_SPEC7450 |
> - CPU_FTR_HAS_HIGH_BATS | CPU_FTR_NEED_COHERENT,
> - .cpu_user_features = COMMON_PPC |
> PPC_FEATURE_ALTIVEC_COMP,
> + .cpu_features = CPU_FTR_7455_1,
> + .cpu_user_features = COMMON_PPC |
> PPC_FEATURE_HAS_ALTIVEC_COMP,
> .icache_bsize = 32,
> .dcache_bsize = 32,
> .num_pmcs = 6,
> @@ -453,14 +340,8 @@ struct cpu_spec cpu_specs[] = {
> .pvr_mask = 0xffffffff,
> .pvr_value = 0x80010200,
> .cpu_name = "7455",
> - .cpu_features = CPU_FTR_COMMON |
> - CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_USE_TB |
> - CPU_FTR_MAYBE_CAN_NAP | CPU_FTR_L2CR |
> - CPU_FTR_ALTIVEC_COMP | CPU_FTR_L3CR |
> - CPU_FTR_HPTE_TABLE | CPU_FTR_SPEC7450 |
> - CPU_FTR_NAP_DISABLE_L2_PR | CPU_FTR_L3_DISABLE_NAP |
> - CPU_FTR_NEED_COHERENT | CPU_FTR_HAS_HIGH_BATS,
> - .cpu_user_features = COMMON_PPC |
> PPC_FEATURE_ALTIVEC_COMP,
> + .cpu_features = CPU_FTR_7455_20,
> + .cpu_user_features = COMMON_PPC |
> PPC_FEATURE_HAS_ALTIVEC_COMP,
> .icache_bsize = 32,
> .dcache_bsize = 32,
> .num_pmcs = 6,
> @@ -470,14 +351,8 @@ struct cpu_spec cpu_specs[] = {
> .pvr_mask = 0xffff0000,
> .pvr_value = 0x80010000,
> .cpu_name = "7455",
> - .cpu_features = CPU_FTR_COMMON |
> - CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_USE_TB |
> - CPU_FTR_MAYBE_CAN_NAP | CPU_FTR_L2CR |
> - CPU_FTR_ALTIVEC_COMP | CPU_FTR_L3CR |
> - CPU_FTR_HPTE_TABLE | CPU_FTR_SPEC7450 |
> - CPU_FTR_NAP_DISABLE_L2_PR | CPU_FTR_HAS_HIGH_BATS |
> - CPU_FTR_NEED_COHERENT,
> - .cpu_user_features = COMMON_PPC |
> PPC_FEATURE_ALTIVEC_COMP,
> + .cpu_features = CPU_FTR_7455,
> + .cpu_user_features = COMMON_PPC |
> PPC_FEATURE_HAS_ALTIVEC_COMP,
> .icache_bsize = 32,
> .dcache_bsize = 32,
> .num_pmcs = 6,
> @@ -487,14 +362,8 @@ struct cpu_spec cpu_specs[] = {
> .pvr_mask = 0xffffffff,
> .pvr_value = 0x80020100,
> .cpu_name = "7447/7457",
> - .cpu_features = CPU_FTR_COMMON |
> - CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_USE_TB |
> - CPU_FTR_MAYBE_CAN_NAP | CPU_FTR_L2CR |
> - CPU_FTR_ALTIVEC_COMP | CPU_FTR_L3CR |
> - CPU_FTR_HPTE_TABLE | CPU_FTR_SPEC7450 |
> - CPU_FTR_NAP_DISABLE_L2_PR | CPU_FTR_HAS_HIGH_BATS |
> - CPU_FTR_NEED_COHERENT | CPU_FTR_NO_BTIC,
> - .cpu_user_features = COMMON_PPC |
> PPC_FEATURE_ALTIVEC_COMP,
> + .cpu_features = CPU_FTR_7447_10,
> + .cpu_user_features = COMMON_PPC |
> PPC_FEATURE_HAS_ALTIVEC_COMP,
> .icache_bsize = 32,
> .dcache_bsize = 32,
> .num_pmcs = 6,
> @@ -504,14 +373,8 @@ struct cpu_spec cpu_specs[] = {
> .pvr_mask = 0xffffffff,
> .pvr_value = 0x80020101,
> .cpu_name = "7447/7457",
> - .cpu_features = CPU_FTR_COMMON |
> - CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_USE_TB |
> - CPU_FTR_MAYBE_CAN_NAP | CPU_FTR_L2CR |
> - CPU_FTR_ALTIVEC_COMP | CPU_FTR_L3CR |
> - CPU_FTR_HPTE_TABLE | CPU_FTR_SPEC7450 |
> - CPU_FTR_NAP_DISABLE_L2_PR | CPU_FTR_HAS_HIGH_BATS |
> - CPU_FTR_NEED_COHERENT | CPU_FTR_NO_BTIC,
> - .cpu_user_features = COMMON_PPC |
> PPC_FEATURE_ALTIVEC_COMP,
> + .cpu_features = CPU_FTR_7447_10,
> + .cpu_user_features = COMMON_PPC |
> PPC_FEATURE_HAS_ALTIVEC_COMP,
> .icache_bsize = 32,
> .dcache_bsize = 32,
> .num_pmcs = 6,
> @@ -521,14 +384,8 @@ struct cpu_spec cpu_specs[] = {
> .pvr_mask = 0xffff0000,
> .pvr_value = 0x80020000,
> .cpu_name = "7447/7457",
> - .cpu_features = CPU_FTR_COMMON |
> - CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_USE_TB |
> - CPU_FTR_MAYBE_CAN_NAP | CPU_FTR_L2CR |
> - CPU_FTR_ALTIVEC_COMP | CPU_FTR_L3CR |
> - CPU_FTR_HPTE_TABLE | CPU_FTR_SPEC7450 |
> - CPU_FTR_NAP_DISABLE_L2_PR | CPU_FTR_HAS_HIGH_BATS |
> - CPU_FTR_NEED_COHERENT,
> - .cpu_user_features = COMMON_PPC |
> PPC_FEATURE_ALTIVEC_COMP,
> + .cpu_features = CPU_FTR_7447,
> + .cpu_user_features = COMMON_PPC |
> PPC_FEATURE_HAS_ALTIVEC_COMP,
> .icache_bsize = 32,
> .dcache_bsize = 32,
> .num_pmcs = 6,
> @@ -538,13 +395,8 @@ struct cpu_spec cpu_specs[] = {
> .pvr_mask = 0xffff0000,
> .pvr_value = 0x80030000,
> .cpu_name = "7447A",
> - .cpu_features = CPU_FTR_COMMON |
> - CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_USE_TB |
> - CPU_FTR_MAYBE_CAN_NAP | CPU_FTR_L2CR |
> - CPU_FTR_ALTIVEC_COMP | CPU_FTR_HPTE_TABLE |
> - CPU_FTR_SPEC7450 | CPU_FTR_NAP_DISABLE_L2_PR |
> - CPU_FTR_HAS_HIGH_BATS | CPU_FTR_NEED_COHERENT,
> - .cpu_user_features = COMMON_PPC |
> PPC_FEATURE_ALTIVEC_COMP,
> + .cpu_features = CPU_FTR_7447A,
> + .cpu_user_features = COMMON_PPC |
> PPC_FEATURE_HAS_ALTIVEC_COMP,
> .icache_bsize = 32,
> .dcache_bsize = 32,
> .num_pmcs = 6,
> @@ -554,13 +406,8 @@ struct cpu_spec cpu_specs[] = {
> .pvr_mask = 0xffff0000,
> .pvr_value = 0x80040000,
> .cpu_name = "7448",
> - .cpu_features = CPU_FTR_COMMON |
> - CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_USE_TB |
> - CPU_FTR_MAYBE_CAN_NAP | CPU_FTR_L2CR |
> - CPU_FTR_ALTIVEC_COMP | CPU_FTR_HPTE_TABLE |
> - CPU_FTR_SPEC7450 | CPU_FTR_NAP_DISABLE_L2_PR |
> - CPU_FTR_HAS_HIGH_BATS | CPU_FTR_NEED_COHERENT,
> - .cpu_user_features = COMMON_PPC |
> PPC_FEATURE_ALTIVEC_COMP,
> + .cpu_features = CPU_FTR_7447A,
> + .cpu_user_features = COMMON_PPC |
> PPC_FEATURE_HAS_ALTIVEC_COMP,
> .icache_bsize = 32,
> .dcache_bsize = 32,
> .num_pmcs = 6,
> @@ -570,9 +417,7 @@ struct cpu_spec cpu_specs[] = {
> .pvr_mask = 0x7fff0000,
> .pvr_value = 0x00810000,
> .cpu_name = "82xx",
> - .cpu_features = CPU_FTR_COMMON |
> - CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_MAYBE_CAN_DOZE |
> - CPU_FTR_USE_TB,
> + .cpu_features = CPU_FTR_82XX,
> .cpu_user_features = COMMON_PPC,
> .icache_bsize = 32,
> .dcache_bsize = 32,
> @@ -582,9 +427,7 @@ struct cpu_spec cpu_specs[] = {
> .pvr_mask = 0x7fff0000,
> .pvr_value = 0x00820000,
> .cpu_name = "G2_LE",
> - .cpu_features = CPU_FTR_SPLIT_ID_CACHE |
> - CPU_FTR_MAYBE_CAN_DOZE | CPU_FTR_USE_TB |
> - CPU_FTR_MAYBE_CAN_NAP | CPU_FTR_HAS_HIGH_BATS,
> + .cpu_features = CPU_FTR_G2_LE,
> .cpu_user_features = COMMON_PPC,
> .icache_bsize = 32,
> .dcache_bsize = 32,
> @@ -594,9 +437,7 @@ struct cpu_spec cpu_specs[] = {
> .pvr_mask = 0x7fff0000,
> .pvr_value = 0x00830000,
> .cpu_name = "e300",
> - .cpu_features = CPU_FTR_SPLIT_ID_CACHE |
> - CPU_FTR_MAYBE_CAN_DOZE | CPU_FTR_USE_TB |
> - CPU_FTR_MAYBE_CAN_NAP | CPU_FTR_HAS_HIGH_BATS,
> + .cpu_features = CPU_FTR_E300,
> .cpu_user_features = COMMON_PPC,
> .icache_bsize = 32,
> .dcache_bsize = 32,
> @@ -606,9 +447,7 @@ struct cpu_spec cpu_specs[] = {
> .pvr_mask = 0x00000000,
> .pvr_value = 0x00000000,
> .cpu_name = "(generic PPC)",
> - .cpu_features = CPU_FTR_COMMON |
> - CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_USE_TB |
> - CPU_FTR_HPTE_TABLE,
> + .cpu_features = CPU_FTR_CLASSIC32,
> .cpu_user_features = COMMON_PPC,
> .icache_bsize = 32,
> .dcache_bsize = 32,
> @@ -620,9 +459,7 @@ struct cpu_spec cpu_specs[] = {
> .pvr_mask = 0xffff0000,
> .pvr_value = 0x00400000,
> .cpu_name = "Power3 (630)",
> - .cpu_features = CPU_FTR_COMMON |
> - CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_USE_TB |
> - CPU_FTR_HPTE_TABLE,
> + .cpu_features = CPU_FTR_POWER3_32,
> .cpu_user_features = COMMON_PPC | PPC_FEATURE_64,
> .icache_bsize = 128,
> .dcache_bsize = 128,
> @@ -633,9 +470,7 @@ struct cpu_spec cpu_specs[] = {
> .pvr_mask = 0xffff0000,
> .pvr_value = 0x00410000,
> .cpu_name = "Power3 (630+)",
> - .cpu_features = CPU_FTR_COMMON |
> - CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_USE_TB |
> - CPU_FTR_HPTE_TABLE,
> + .cpu_features = CPU_FTR_POWER3_32,
> .cpu_user_features = COMMON_PPC | PPC_FEATURE_64,
> .icache_bsize = 128,
> .dcache_bsize = 128,
> @@ -646,9 +481,7 @@ struct cpu_spec cpu_specs[] = {
> .pvr_mask = 0xffff0000,
> .pvr_value = 0x00360000,
> .cpu_name = "I-star",
> - .cpu_features = CPU_FTR_COMMON |
> - CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_USE_TB |
> - CPU_FTR_HPTE_TABLE,
> + .cpu_features = CPU_FTR_POWER3_32,
> .cpu_user_features = COMMON_PPC | PPC_FEATURE_64,
> .icache_bsize = 128,
> .dcache_bsize = 128,
> @@ -659,55 +492,19 @@ struct cpu_spec cpu_specs[] = {
> .pvr_mask = 0xffff0000,
> .pvr_value = 0x00370000,
> .cpu_name = "S-star",
> - .cpu_features = CPU_FTR_COMMON |
> - CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_USE_TB |
> - CPU_FTR_HPTE_TABLE,
> + .cpu_features = CPU_FTR_POWER3_32,
> .cpu_user_features = COMMON_PPC | PPC_FEATURE_64,
> .icache_bsize = 128,
> .dcache_bsize = 128,
> .num_pmcs = 8,
> .cpu_setup = __setup_cpu_power3
> },
> -#endif /* CONFIG_PPC64BRIDGE */
> -#ifdef CONFIG_POWER4
> - { /* Power4 */
> - .pvr_mask = 0xffff0000,
> - .pvr_value = 0x00350000,
> - .cpu_name = "Power4",
> - .cpu_features = CPU_FTR_COMMON |
> - CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_USE_TB |
> - CPU_FTR_HPTE_TABLE,
> - .cpu_user_features = COMMON_PPC | PPC_FEATURE_64,
> - .icache_bsize = 128,
> - .dcache_bsize = 128,
> - .num_pmcs = 8,
> - .cpu_setup = __setup_cpu_power4
> - },
> - { /* PPC970 */
> - .pvr_mask = 0xffff0000,
> - .pvr_value = 0x00390000,
> - .cpu_name = "PPC970",
> - .cpu_features = CPU_FTR_COMMON |
> - CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_USE_TB |
> - CPU_FTR_HPTE_TABLE |
> - CPU_FTR_ALTIVEC_COMP | CPU_FTR_MAYBE_CAN_NAP,
> - .cpu_user_features = COMMON_PPC | PPC_FEATURE_64 |
> - PPC_FEATURE_ALTIVEC_COMP,
> - .icache_bsize = 128,
> - .dcache_bsize = 128,
> - .num_pmcs = 8,
> - .cpu_setup = __setup_cpu_ppc970
> - },
> { /* PPC970FX */
> .pvr_mask = 0xffff0000,
> .pvr_value = 0x003c0000,
> .cpu_name = "PPC970FX",
> - .cpu_features = CPU_FTR_COMMON |
> - CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_USE_TB |
> - CPU_FTR_HPTE_TABLE |
> - CPU_FTR_ALTIVEC_COMP | CPU_FTR_MAYBE_CAN_NAP,
> - .cpu_user_features = COMMON_PPC | PPC_FEATURE_64 |
> - PPC_FEATURE_ALTIVEC_COMP,
> + .cpu_features = CPU_FTR_970_32,
> + .cpu_user_features = COMMON_PPC | PPC_FEATURE_64 |
> PPC_FEATURE_HAS_ALTIVEC_COMP,
> .icache_bsize = 128,
> .dcache_bsize = 128,
> .num_pmcs = 8,
> @@ -721,8 +518,7 @@ struct cpu_spec cpu_specs[] = {
> .cpu_name = "8xx",
> /* CPU_FTR_MAYBE_CAN_DOZE is possible,
> * if the 8xx code is there.... */
> - .cpu_features = CPU_FTR_SPLIT_ID_CACHE |
> - CPU_FTR_USE_TB,
> + .cpu_features = CPU_FTR_8XX,
> .cpu_user_features = PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU,
> .icache_bsize = 16,
> .dcache_bsize = 16,
> @@ -733,8 +529,7 @@ struct cpu_spec cpu_specs[] = {
> .pvr_mask = 0xffffff00,
> .pvr_value = 0x00200200,
> .cpu_name = "403GC",
> - .cpu_features = CPU_FTR_SPLIT_ID_CACHE |
> - CPU_FTR_USE_TB,
> + .cpu_features = CPU_FTR_40X,
> .cpu_user_features = PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU,
> .icache_bsize = 16,
> .dcache_bsize = 16,
> @@ -743,8 +538,7 @@ struct cpu_spec cpu_specs[] = {
> .pvr_mask = 0xffffff00,
> .pvr_value = 0x00201400,
> .cpu_name = "403GCX",
> - .cpu_features = CPU_FTR_SPLIT_ID_CACHE |
> - CPU_FTR_USE_TB,
> + .cpu_features = CPU_FTR_40X,
> .cpu_user_features = PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU,
> .icache_bsize = 16,
> .dcache_bsize = 16,
> @@ -753,8 +547,7 @@ struct cpu_spec cpu_specs[] = {
> .pvr_mask = 0xffff0000,
> .pvr_value = 0x00200000,
> .cpu_name = "403G ??",
> - .cpu_features = CPU_FTR_SPLIT_ID_CACHE |
> - CPU_FTR_USE_TB,
> + .cpu_features = CPU_FTR_40X,
> .cpu_user_features = PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU,
> .icache_bsize = 16,
> .dcache_bsize = 16,
> @@ -763,8 +556,7 @@ struct cpu_spec cpu_specs[] = {
> .pvr_mask = 0xffff0000,
> .pvr_value = 0x40110000,
> .cpu_name = "405GP",
> - .cpu_features = CPU_FTR_SPLIT_ID_CACHE |
> - CPU_FTR_USE_TB,
> + .cpu_features = CPU_FTR_40X,
> .cpu_user_features = PPC_FEATURE_32 |
> PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
> .icache_bsize = 32,
> @@ -774,8 +566,7 @@ struct cpu_spec cpu_specs[] = {
> .pvr_mask = 0xffff0000,
> .pvr_value = 0x40130000,
> .cpu_name = "STB03xxx",
> - .cpu_features = CPU_FTR_SPLIT_ID_CACHE |
> - CPU_FTR_USE_TB,
> + .cpu_features = CPU_FTR_40X,
> .cpu_user_features = PPC_FEATURE_32 |
> PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
> .icache_bsize = 32,
> @@ -785,8 +576,7 @@ struct cpu_spec cpu_specs[] = {
> .pvr_mask = 0xffff0000,
> .pvr_value = 0x41810000,
> .cpu_name = "STB04xxx",
> - .cpu_features = CPU_FTR_SPLIT_ID_CACHE |
> - CPU_FTR_USE_TB,
> + .cpu_features = CPU_FTR_40X,
> .cpu_user_features = PPC_FEATURE_32 |
> PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
> .icache_bsize = 32,
> @@ -796,8 +586,7 @@ struct cpu_spec cpu_specs[] = {
> .pvr_mask = 0xffff0000,
> .pvr_value = 0x41610000,
> .cpu_name = "NP405L",
> - .cpu_features = CPU_FTR_SPLIT_ID_CACHE |
> - CPU_FTR_USE_TB,
> + .cpu_features = CPU_FTR_40X,
> .cpu_user_features = PPC_FEATURE_32 |
> PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
> .icache_bsize = 32,
> @@ -807,8 +596,7 @@ struct cpu_spec cpu_specs[] = {
> .pvr_mask = 0xffff0000,
> .pvr_value = 0x40B10000,
> .cpu_name = "NP4GS3",
> - .cpu_features = CPU_FTR_SPLIT_ID_CACHE |
> - CPU_FTR_USE_TB,
> + .cpu_features = CPU_FTR_40X,
> .cpu_user_features = PPC_FEATURE_32 |
> PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
> .icache_bsize = 32,
> @@ -818,8 +606,7 @@ struct cpu_spec cpu_specs[] = {
> .pvr_mask = 0xffff0000,
> .pvr_value = 0x41410000,
> .cpu_name = "NP405H",
> - .cpu_features = CPU_FTR_SPLIT_ID_CACHE |
> - CPU_FTR_USE_TB,
> + .cpu_features = CPU_FTR_40X,
> .cpu_user_features = PPC_FEATURE_32 |
> PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
> .icache_bsize = 32,
> @@ -829,8 +616,7 @@ struct cpu_spec cpu_specs[] = {
> .pvr_mask = 0xffff0000,
> .pvr_value = 0x50910000,
> .cpu_name = "405GPr",
> - .cpu_features = CPU_FTR_SPLIT_ID_CACHE |
> - CPU_FTR_USE_TB,
> + .cpu_features = CPU_FTR_40X,
> .cpu_user_features = PPC_FEATURE_32 |
> PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
> .icache_bsize = 32,
> @@ -840,8 +626,7 @@ struct cpu_spec cpu_specs[] = {
> .pvr_mask = 0xffff0000,
> .pvr_value = 0x51510000,
> .cpu_name = "STBx25xx",
> - .cpu_features = CPU_FTR_SPLIT_ID_CACHE |
> - CPU_FTR_USE_TB,
> + .cpu_features = CPU_FTR_40X,
> .cpu_user_features = PPC_FEATURE_32 |
> PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
> .icache_bsize = 32,
> @@ -851,8 +636,7 @@ struct cpu_spec cpu_specs[] = {
> .pvr_mask = 0xffff0000,
> .pvr_value = 0x41F10000,
> .cpu_name = "405LP",
> - .cpu_features = CPU_FTR_SPLIT_ID_CACHE |
> - CPU_FTR_USE_TB,
> + .cpu_features = CPU_FTR_40X,
> .cpu_user_features = PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU,
> .icache_bsize = 32,
> .dcache_bsize = 32,
> @@ -861,8 +645,7 @@ struct cpu_spec cpu_specs[] = {
> .pvr_mask = 0xffff0000,
> .pvr_value = 0x20010000,
> .cpu_name = "Virtex-II Pro",
> - .cpu_features = CPU_FTR_SPLIT_ID_CACHE |
> - CPU_FTR_USE_TB,
> + .cpu_features = CPU_FTR_40X,
> .cpu_user_features = PPC_FEATURE_32 |
> PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
> .icache_bsize = 32,
> @@ -872,8 +655,7 @@ struct cpu_spec cpu_specs[] = {
> .pvr_mask = 0xffff0000,
> .pvr_value = 0x51210000,
> .cpu_name = "405EP",
> - .cpu_features = CPU_FTR_SPLIT_ID_CACHE |
> - CPU_FTR_USE_TB,
> + .cpu_features = CPU_FTR_40X,
> .cpu_user_features = PPC_FEATURE_32 |
> PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
> .icache_bsize = 32,
> @@ -886,8 +668,7 @@ struct cpu_spec cpu_specs[] = {
> .pvr_mask = 0xf0000fff,
> .pvr_value = 0x40000850,
> .cpu_name = "440EP Rev. A",
> - .cpu_features = CPU_FTR_SPLIT_ID_CACHE |
> - CPU_FTR_USE_TB,
> + .cpu_features = CPU_FTR_44X,
> .cpu_user_features = COMMON_PPC, /* 440EP has an FPU */
> .icache_bsize = 32,
> .dcache_bsize = 32,
> @@ -896,8 +677,7 @@ struct cpu_spec cpu_specs[] = {
> .pvr_mask = 0xf0000fff,
> .pvr_value = 0x400008d3,
> .cpu_name = "440EP Rev. B",
> - .cpu_features = CPU_FTR_SPLIT_ID_CACHE |
> - CPU_FTR_USE_TB,
> + .cpu_features = CPU_FTR_44X,
> .cpu_user_features = COMMON_PPC, /* 440EP has an FPU */
> .icache_bsize = 32,
> .dcache_bsize = 32,
> @@ -906,8 +686,7 @@ struct cpu_spec cpu_specs[] = {
> .pvr_mask = 0xf0000fff,
> .pvr_value = 0x40000440,
> .cpu_name = "440GP Rev. B",
> - .cpu_features = CPU_FTR_SPLIT_ID_CACHE |
> - CPU_FTR_USE_TB,
> + .cpu_features = CPU_FTR_44X,
> .cpu_user_features = PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU,
> .icache_bsize = 32,
> .dcache_bsize = 32,
> @@ -916,8 +695,7 @@ struct cpu_spec cpu_specs[] = {
> .pvr_mask = 0xf0000fff,
> .pvr_value = 0x40000481,
> .cpu_name = "440GP Rev. C",
> - .cpu_features = CPU_FTR_SPLIT_ID_CACHE |
> - CPU_FTR_USE_TB,
> + .cpu_features = CPU_FTR_44X,
> .cpu_user_features = PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU,
> .icache_bsize = 32,
> .dcache_bsize = 32,
> @@ -926,8 +704,7 @@ struct cpu_spec cpu_specs[] = {
> .pvr_mask = 0xf0000fff,
> .pvr_value = 0x50000850,
> .cpu_name = "440GX Rev. A",
> - .cpu_features = CPU_FTR_SPLIT_ID_CACHE |
> - CPU_FTR_USE_TB,
> + .cpu_features = CPU_FTR_44X,
> .cpu_user_features = PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU,
> .icache_bsize = 32,
> .dcache_bsize = 32,
> @@ -936,8 +713,7 @@ struct cpu_spec cpu_specs[] = {
> .pvr_mask = 0xf0000fff,
> .pvr_value = 0x50000851,
> .cpu_name = "440GX Rev. B",
> - .cpu_features = CPU_FTR_SPLIT_ID_CACHE |
> - CPU_FTR_USE_TB,
> + .cpu_features = CPU_FTR_44X,
> .cpu_user_features = PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU,
> .icache_bsize = 32,
> .dcache_bsize = 32,
> @@ -946,8 +722,7 @@ struct cpu_spec cpu_specs[] = {
> .pvr_mask = 0xf0000fff,
> .pvr_value = 0x50000892,
> .cpu_name = "440GX Rev. C",
> - .cpu_features = CPU_FTR_SPLIT_ID_CACHE |
> - CPU_FTR_USE_TB,
> + .cpu_features = CPU_FTR_44X,
> .cpu_user_features = PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU,
> .icache_bsize = 32,
> .dcache_bsize = 32,
> @@ -956,8 +731,7 @@ struct cpu_spec cpu_specs[] = {
> .pvr_mask = 0xf0000fff,
> .pvr_value = 0x50000894,
> .cpu_name = "440GX Rev. F",
> - .cpu_features = CPU_FTR_SPLIT_ID_CACHE |
> - CPU_FTR_USE_TB,
> + .cpu_features = CPU_FTR_44X,
> .cpu_user_features = PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU,
> .icache_bsize = 32,
> .dcache_bsize = 32,
> @@ -966,8 +740,7 @@ struct cpu_spec cpu_specs[] = {
> .pvr_mask = 0xff000fff,
> .pvr_value = 0x53000891,
> .cpu_name = "440SP Rev. A",
> - .cpu_features = CPU_FTR_SPLIT_ID_CACHE |
> - CPU_FTR_USE_TB,
> + .cpu_features = CPU_FTR_44X,
> .cpu_user_features = PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU,
> .icache_bsize = 32,
> .dcache_bsize = 32,
> @@ -979,7 +752,7 @@ struct cpu_spec cpu_specs[] = {
> .pvr_value = 0x81000000,
> .cpu_name = "e200z5",
> /* xxx - galak: add CPU_FTR_MAYBE_CAN_DOZE */
> - .cpu_features = CPU_FTR_USE_TB,
> + .cpu_features = CPU_FTR_E200,
> .cpu_user_features = PPC_FEATURE_32 |
> PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_EFP_SINGLE |
> PPC_FEATURE_UNIFIED_CACHE,
> @@ -990,7 +763,7 @@ struct cpu_spec cpu_specs[] = {
> .pvr_value = 0x81100000,
> .cpu_name = "e200z6",
> /* xxx - galak: add CPU_FTR_MAYBE_CAN_DOZE */
> - .cpu_features = CPU_FTR_USE_TB,
> + .cpu_features = CPU_FTR_E200,
> .cpu_user_features = PPC_FEATURE_32 |
> PPC_FEATURE_HAS_MMU | PPC_FEATURE_SPE_COMP |
> PPC_FEATURE_HAS_EFP_SINGLE |
> @@ -1002,8 +775,7 @@ struct cpu_spec cpu_specs[] = {
> .pvr_value = 0x80200000,
> .cpu_name = "e500",
> /* xxx - galak: add CPU_FTR_MAYBE_CAN_DOZE */
> - .cpu_features = CPU_FTR_SPLIT_ID_CACHE |
> - CPU_FTR_USE_TB,
> + .cpu_features = CPU_FTR_E500,
> .cpu_user_features = PPC_FEATURE_32 |
> PPC_FEATURE_HAS_MMU | PPC_FEATURE_SPE_COMP |
> PPC_FEATURE_HAS_EFP_SINGLE,
> @@ -1016,8 +788,7 @@ struct cpu_spec cpu_specs[] = {
> .pvr_value = 0x80210000,
> .cpu_name = "e500v2",
> /* xxx - galak: add CPU_FTR_MAYBE_CAN_DOZE */
> - .cpu_features = CPU_FTR_SPLIT_ID_CACHE |
> - CPU_FTR_USE_TB | CPU_FTR_BIG_PHYS,
> + .cpu_features = CPU_FTR_E500_2,
> .cpu_user_features = PPC_FEATURE_32 |
> PPC_FEATURE_HAS_MMU | PPC_FEATURE_SPE_COMP |
> PPC_FEATURE_HAS_EFP_SINGLE | PPC_FEATURE_HAS_EFP_DOUBLE,
> @@ -1031,7 +802,7 @@ struct cpu_spec cpu_specs[] = {
> .pvr_mask = 0x00000000,
> .pvr_value = 0x00000000,
> .cpu_name = "(generic PPC)",
> - .cpu_features = CPU_FTR_COMMON,
> + .cpu_features = CPU_FTR_GENERIC_32,
> .cpu_user_features = PPC_FEATURE_32,
> .icache_bsize = 32,
> .dcache_bsize = 32,
> Index: clean-cg/include/asm-powerpc/cputable.h
> ===================================================================
> --- /dev/null
> +++ clean-cg/include/asm-powerpc/cputable.h
> @@ -0,0 +1,475 @@
> +#ifndef __ASM_POWERPC_CPUTABLE_H
> +#define __ASM_POWERPC_CPUTABLE_H
> +
> +#ifdef __KERNEL__
> +#include <linux/config.h>
> +#include <asm/ppc_asm.h> /* for ASM_CONST */
> +
> +#define PPC_FEATURE_32 0x80000000
> +#define PPC_FEATURE_64 0x40000000
> +#define PPC_FEATURE_601_INSTR 0x20000000
> +#define PPC_FEATURE_HAS_ALTIVEC 0x10000000
> +#define PPC_FEATURE_HAS_FPU 0x08000000
> +#define PPC_FEATURE_HAS_MMU 0x04000000
> +#define PPC_FEATURE_HAS_4xxMAC 0x02000000
> +#define PPC_FEATURE_UNIFIED_CACHE 0x01000000
> +#define PPC_FEATURE_HAS_SPE 0x00800000
> +#define PPC_FEATURE_HAS_EFP_SINGLE 0x00400000
> +#define PPC_FEATURE_HAS_EFP_DOUBLE 0x00200000
> +
> +#ifndef __ASSEMBLY__
> +
> +/* This structure can grow, it's real size is used by head.S code
> + * via the mkdefs mechanism.
> + */
> +struct cpu_spec;
> +struct op_ppc64_model;
> +
> +#ifndef __powerpc64__
> +typedef void (*cpu_setup_t)(unsigned long offset, int cpu_nr,
> struct cpu_spec* spec);
> +#else /* __powerpc64__ */
> +typedef void (*cpu_setup_t)(unsigned long offset, struct
> cpu_spec* spec);
> +#endif /* __powerpc64__ */
> +
> +struct cpu_spec {
> + /* CPU is matched via (PVR & pvr_mask) == pvr_value */
> + unsigned int pvr_mask;
> + unsigned int pvr_value;
> +
> + char *cpu_name;
> + unsigned long cpu_features; /* Kernel features */
> + unsigned int cpu_user_features; /* Userland features */
> +
> + /* cache line sizes */
> + unsigned int icache_bsize;
> + unsigned int dcache_bsize;
> +
> + /* number of performance monitor counters */
> + unsigned int num_pmcs;
> +
> + /* this is called to initialize various CPU bits like L1 cache,
> + * BHT, SPD, etc... from head.S before branching to
> identify_machine
> + */
> + cpu_setup_t cpu_setup;
> +#ifdef __powerpc64__
> +
> + /* Used by oprofile userspace to select the right counters */
> + char *oprofile_cpu_type;
> +
> + /* Processor specific oprofile operations */
> + struct op_ppc64_model *oprofile_model;
> +#endif /* __powerpc64__ */
> +};
> +
> +extern struct cpu_spec cpu_specs[];
> +
> +#ifndef __powerpc64__
> +extern struct cpu_spec *cur_cpu_spec[];
> +#else /* __powerpc64__ */
> +extern struct cpu_spec *cur_cpu_spec;
> +#endif /* __powerpc64__ */
> +
> +#endif /* __ASSEMBLY__ */
> +
> +/* CPU kernel features */
> +
> +/* Retain the 32b definitions all use bottom half of word */
> +#define CPU_FTR_SPLIT_ID_CACHE ASM_CONST(0x0000000000000001)
> +#define CPU_FTR_L2CR ASM_CONST(0x0000000000000002)
> +#define CPU_FTR_SPEC7450 ASM_CONST(0x0000000000000004)
> +#define CPU_FTR_ALTIVEC ASM_CONST(0x0000000000000008)
> +#define CPU_FTR_TAU ASM_CONST(0x0000000000000010)
> +#define CPU_FTR_CAN_DOZE ASM_CONST(0x0000000000000020)
> +#define CPU_FTR_USE_TB ASM_CONST(0x0000000000000040)
> +#define CPU_FTR_604_PERF_MON ASM_CONST(0x0000000000000080)
> +#define CPU_FTR_601 ASM_CONST(0x0000000000000100)
> +#define CPU_FTR_HPTE_TABLE ASM_CONST(0x0000000000000200)
> +#define CPU_FTR_CAN_NAP ASM_CONST(0x0000000000000400)
> +#define CPU_FTR_L3CR ASM_CONST(0x0000000000000800)
> +#define CPU_FTR_L3_DISABLE_NAP ASM_CONST(0x0000000000001000)
> +#define CPU_FTR_NAP_DISABLE_L2_PR ASM_CONST(0x0000000000002000)
> +#define CPU_FTR_DUAL_PLL_750FX ASM_CONST(0x0000000000004000)
> +#define CPU_FTR_NO_DPM ASM_CONST(0x0000000000008000)
> +#define CPU_FTR_HAS_HIGH_BATS ASM_CONST(0x0000000000010000)
> +#define CPU_FTR_NEED_COHERENT ASM_CONST(0x0000000000020000)
> +#define CPU_FTR_NO_BTIC ASM_CONST(0x0000000000040000)
> +#define CPU_FTR_BIG_PHYS ASM_CONST(0x0000000000080000)
> +
> +#ifdef __powerpc64__
> +/* Add the 64b processor unique features in the top half of the
> word */
> +#define CPU_FTR_SLB ASM_CONST(0x0000000100000000)
> +#define CPU_FTR_16M_PAGE ASM_CONST(0x0000000200000000)
> +#define CPU_FTR_TLBIEL ASM_CONST(0x0000000400000000)
> +#define CPU_FTR_NOEXECUTE ASM_CONST(0x0000000800000000)
> +#define CPU_FTR_NODSISRALIGN ASM_CONST(0x0000001000000000)
> +#define CPU_FTR_IABR ASM_CONST(0x0000002000000000)
> +#define CPU_FTR_MMCRA ASM_CONST(0x0000004000000000)
> +/* unused ASM_CONST(0x0000008000000000) */
> +#define CPU_FTR_SMT ASM_CONST(0x0000010000000000)
> +#define CPU_FTR_COHERENT_ICACHE ASM_CONST(0x0000020000000000)
> +#define CPU_FTR_LOCKLESS_TLBIE ASM_CONST(0x0000040000000000)
> +#define CPU_FTR_MMCRA_SIHV ASM_CONST(0x0000080000000000)
> +#define CPU_FTR_CTRL ASM_CONST(0x0000100000000000)
> +#endif
> +
> +#ifndef __ASSEMBLY__
> +
> +#define COMMON_USER_PPC64 (PPC_FEATURE_32 | PPC_FEATURE_64 | \
> + PPC_FEATURE_HAS_FPU | PPC_FEATURE_HAS_MMU)
> +
> +#define CPU_FTR_PPCAS_ARCH_V2_BASE (CPU_FTR_SLB | \
> + CPU_FTR_TLBIEL | CPU_FTR_NOEXECUTE | \
> + CPU_FTR_NODSISRALIGN | CPU_FTR_CTRL)
> +
> +/* iSeries doesn't support large pages */
> +#ifdef CONFIG_PPC_ISERIES
> +#define CPU_FTR_PPCAS_ARCH_V2 (CPU_FTR_PPCAS_ARCH_V2_BASE)
> +#else
> +#define CPU_FTR_PPCAS_ARCH_V2 (CPU_FTR_PPCAS_ARCH_V2_BASE |
> CPU_FTR_16M_PAGE)
> +#endif /* CONFIG_PPC_ISERIES */
> +
> +/* We only set the altivec features if the kernel was compiled
> with altivec
> + * support
> + */
> +#ifdef CONFIG_ALTIVEC
> +#define CPU_FTR_ALTIVEC_COMP CPU_FTR_ALTIVEC
> +#define PPC_FEATURE_HAS_ALTIVEC_COMP PPC_FEATURE_HAS_ALTIVEC
> +#else
> +#define CPU_FTR_ALTIVEC_COMP 0
> +#define PPC_FEATURE_HAS_ALTIVEC_COMP 0
> +#endif
> +
> +/* We need to mark all pages as being coherent if we're SMP or we
> + * have a 74[45]x and an MPC107 host bridge.
> + */
> +#if defined(CONFIG_SMP) || defined(CONFIG_MPC10X_BRIDGE)
> +#define CPU_FTR_COMMON CPU_FTR_NEED_COHERENT
> +#else
> +#define CPU_FTR_COMMON 0
> +#endif
> +
> +/* The powersave features NAP & DOZE seems to confuse BDI when
> + debugging. So if a BDI is used, disable theses
> + */
> +#ifndef CONFIG_BDI_SWITCH
> +#define CPU_FTR_MAYBE_CAN_DOZE CPU_FTR_CAN_DOZE
> +#define CPU_FTR_MAYBE_CAN_NAP CPU_FTR_CAN_NAP
> +#else
> +#define CPU_FTR_MAYBE_CAN_DOZE 0
> +#define CPU_FTR_MAYBE_CAN_NAP 0
> +#endif
> +
> +#define CLASSIC_PPC (!defined(CONFIG_8xx) && !defined(CONFIG_4xx)
> && \
> + !defined(CONFIG_POWER3) && !defined(CONFIG_POWER4) && \
> + !defined(CONFIG_BOOKE))
> +
> +enum {
> + CPU_FTR_PPC601 = CPU_FTR_COMMON | CPU_FTR_601 |
> CPU_FTR_HPTE_TABLE,
> + CPU_FTR_603 = CPU_FTR_COMMON | CPU_FTR_SPLIT_ID_CACHE |
> + CPU_FTR_MAYBE_CAN_DOZE | CPU_FTR_USE_TB |
> + CPU_FTR_MAYBE_CAN_NAP,
> + CPU_FTR_604 = CPU_FTR_COMMON | CPU_FTR_SPLIT_ID_CACHE |
> + CPU_FTR_USE_TB | CPU_FTR_604_PERF_MON | CPU_FTR_HPTE_TABLE,
> + CPU_FTR_740_NOTAU = CPU_FTR_COMMON | CPU_FTR_SPLIT_ID_CACHE |
> + CPU_FTR_MAYBE_CAN_DOZE | CPU_FTR_USE_TB | CPU_FTR_L2CR |
> + CPU_FTR_HPTE_TABLE | CPU_FTR_MAYBE_CAN_NAP,
> + CPU_FTR_740 = CPU_FTR_COMMON | CPU_FTR_SPLIT_ID_CACHE |
> + CPU_FTR_MAYBE_CAN_DOZE | CPU_FTR_USE_TB | CPU_FTR_L2CR |
> + CPU_FTR_TAU | CPU_FTR_HPTE_TABLE | CPU_FTR_MAYBE_CAN_NAP,
> + CPU_FTR_750 = CPU_FTR_COMMON | CPU_FTR_SPLIT_ID_CACHE |
> + CPU_FTR_MAYBE_CAN_DOZE | CPU_FTR_USE_TB | CPU_FTR_L2CR |
> + CPU_FTR_TAU | CPU_FTR_HPTE_TABLE | CPU_FTR_MAYBE_CAN_NAP,
> + CPU_FTR_750FX1 = CPU_FTR_COMMON | CPU_FTR_SPLIT_ID_CACHE |
> + CPU_FTR_MAYBE_CAN_DOZE | CPU_FTR_USE_TB | CPU_FTR_L2CR |
> + CPU_FTR_TAU | CPU_FTR_HPTE_TABLE | CPU_FTR_MAYBE_CAN_NAP |
> + CPU_FTR_DUAL_PLL_750FX | CPU_FTR_NO_DPM,
> + CPU_FTR_750FX2 = CPU_FTR_COMMON | CPU_FTR_SPLIT_ID_CACHE |
> + CPU_FTR_MAYBE_CAN_DOZE | CPU_FTR_USE_TB | CPU_FTR_L2CR |
> + CPU_FTR_TAU | CPU_FTR_HPTE_TABLE | CPU_FTR_MAYBE_CAN_NAP |
> + CPU_FTR_NO_DPM,
> + CPU_FTR_750FX = CPU_FTR_COMMON | CPU_FTR_SPLIT_ID_CACHE |
> + CPU_FTR_MAYBE_CAN_DOZE | CPU_FTR_USE_TB | CPU_FTR_L2CR |
> + CPU_FTR_TAU | CPU_FTR_HPTE_TABLE | CPU_FTR_MAYBE_CAN_NAP |
> + CPU_FTR_DUAL_PLL_750FX | CPU_FTR_HAS_HIGH_BATS,
> + CPU_FTR_750GX = CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_MAYBE_CAN_DOZE |
> + CPU_FTR_USE_TB | CPU_FTR_L2CR | CPU_FTR_TAU |
> + CPU_FTR_HPTE_TABLE | CPU_FTR_MAYBE_CAN_NAP |
> + CPU_FTR_DUAL_PLL_750FX | CPU_FTR_HAS_HIGH_BATS,
> + CPU_FTR_7400_NOTAU = CPU_FTR_COMMON | CPU_FTR_SPLIT_ID_CACHE |
> + CPU_FTR_MAYBE_CAN_DOZE | CPU_FTR_USE_TB | CPU_FTR_L2CR |
> + CPU_FTR_ALTIVEC_COMP | CPU_FTR_HPTE_TABLE |
> + CPU_FTR_MAYBE_CAN_NAP,
> + CPU_FTR_7400 = CPU_FTR_COMMON | CPU_FTR_SPLIT_ID_CACHE |
> + CPU_FTR_MAYBE_CAN_DOZE | CPU_FTR_USE_TB | CPU_FTR_L2CR |
> + CPU_FTR_TAU | CPU_FTR_ALTIVEC_COMP | CPU_FTR_HPTE_TABLE |
> + CPU_FTR_MAYBE_CAN_NAP,
> + CPU_FTR_7450_20 = CPU_FTR_COMMON | CPU_FTR_SPLIT_ID_CACHE |
> + CPU_FTR_USE_TB | CPU_FTR_L2CR | CPU_FTR_ALTIVEC_COMP |
> + CPU_FTR_L3CR | CPU_FTR_HPTE_TABLE | CPU_FTR_SPEC7450 |
> + CPU_FTR_NEED_COHERENT,
> + CPU_FTR_7450_21 = CPU_FTR_COMMON | CPU_FTR_SPLIT_ID_CACHE |
> + CPU_FTR_USE_TB |
> + CPU_FTR_MAYBE_CAN_NAP | CPU_FTR_L2CR | CPU_FTR_ALTIVEC_COMP |
> + CPU_FTR_L3CR | CPU_FTR_HPTE_TABLE | CPU_FTR_SPEC7450 |
> + CPU_FTR_NAP_DISABLE_L2_PR | CPU_FTR_L3_DISABLE_NAP |
> + CPU_FTR_NEED_COHERENT,
> + CPU_FTR_7450_23 = CPU_FTR_COMMON | CPU_FTR_SPLIT_ID_CACHE |
> + CPU_FTR_USE_TB |
> + CPU_FTR_MAYBE_CAN_NAP | CPU_FTR_L2CR | CPU_FTR_ALTIVEC_COMP |
> + CPU_FTR_L3CR | CPU_FTR_HPTE_TABLE | CPU_FTR_SPEC7450 |
> + CPU_FTR_NAP_DISABLE_L2_PR | CPU_FTR_NEED_COHERENT,
> + CPU_FTR_7455_1 = CPU_FTR_COMMON | CPU_FTR_SPLIT_ID_CACHE |
> + CPU_FTR_USE_TB |
> + CPU_FTR_L2CR | CPU_FTR_ALTIVEC_COMP | CPU_FTR_L3CR |
> + CPU_FTR_HPTE_TABLE | CPU_FTR_SPEC7450 |
> CPU_FTR_HAS_HIGH_BATS |
> + CPU_FTR_NEED_COHERENT,
> + CPU_FTR_7455_20 = CPU_FTR_COMMON | CPU_FTR_SPLIT_ID_CACHE |
> + CPU_FTR_USE_TB |
> + CPU_FTR_MAYBE_CAN_NAP | CPU_FTR_L2CR | CPU_FTR_ALTIVEC_COMP |
> + CPU_FTR_L3CR | CPU_FTR_HPTE_TABLE | CPU_FTR_SPEC7450 |
> + CPU_FTR_NAP_DISABLE_L2_PR | CPU_FTR_L3_DISABLE_NAP |
> + CPU_FTR_NEED_COHERENT | CPU_FTR_HAS_HIGH_BATS,
> + CPU_FTR_7455 = CPU_FTR_COMMON | CPU_FTR_SPLIT_ID_CACHE |
> + CPU_FTR_USE_TB |
> + CPU_FTR_MAYBE_CAN_NAP | CPU_FTR_L2CR | CPU_FTR_ALTIVEC_COMP |
> + CPU_FTR_L3CR | CPU_FTR_HPTE_TABLE | CPU_FTR_SPEC7450 |
> + CPU_FTR_NAP_DISABLE_L2_PR | CPU_FTR_HAS_HIGH_BATS |
> + CPU_FTR_NEED_COHERENT,
> + CPU_FTR_7447_10 = CPU_FTR_COMMON | CPU_FTR_SPLIT_ID_CACHE |
> + CPU_FTR_USE_TB |
> + CPU_FTR_MAYBE_CAN_NAP | CPU_FTR_L2CR | CPU_FTR_ALTIVEC_COMP |
> + CPU_FTR_L3CR | CPU_FTR_HPTE_TABLE | CPU_FTR_SPEC7450 |
> + CPU_FTR_NAP_DISABLE_L2_PR | CPU_FTR_HAS_HIGH_BATS |
> + CPU_FTR_NEED_COHERENT | CPU_FTR_NO_BTIC,
> + CPU_FTR_7447 = CPU_FTR_COMMON | CPU_FTR_SPLIT_ID_CACHE |
> + CPU_FTR_USE_TB |
> + CPU_FTR_MAYBE_CAN_NAP | CPU_FTR_L2CR | CPU_FTR_ALTIVEC_COMP |
> + CPU_FTR_L3CR | CPU_FTR_HPTE_TABLE | CPU_FTR_SPEC7450 |
> + CPU_FTR_NAP_DISABLE_L2_PR | CPU_FTR_HAS_HIGH_BATS |
> + CPU_FTR_NEED_COHERENT,
> + CPU_FTR_7447A = CPU_FTR_COMMON | CPU_FTR_SPLIT_ID_CACHE |
> + CPU_FTR_USE_TB |
> + CPU_FTR_MAYBE_CAN_NAP | CPU_FTR_L2CR | CPU_FTR_ALTIVEC_COMP |
> + CPU_FTR_HPTE_TABLE | CPU_FTR_SPEC7450 |
> + CPU_FTR_NAP_DISABLE_L2_PR | CPU_FTR_HAS_HIGH_BATS |
> + CPU_FTR_NEED_COHERENT,
> + CPU_FTR_82XX = CPU_FTR_COMMON | CPU_FTR_SPLIT_ID_CACHE |
> + CPU_FTR_MAYBE_CAN_DOZE | CPU_FTR_USE_TB,
> + CPU_FTR_G2_LE = CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_MAYBE_CAN_DOZE |
> + CPU_FTR_USE_TB | CPU_FTR_MAYBE_CAN_NAP |
> CPU_FTR_HAS_HIGH_BATS,
> + CPU_FTR_E300 = CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_MAYBE_CAN_DOZE |
> + CPU_FTR_USE_TB | CPU_FTR_MAYBE_CAN_NAP |
> CPU_FTR_HAS_HIGH_BATS,
> + CPU_FTR_CLASSIC32 = CPU_FTR_COMMON | CPU_FTR_SPLIT_ID_CACHE |
> + CPU_FTR_USE_TB | CPU_FTR_HPTE_TABLE,
> + CPU_FTR_POWER3_32 = CPU_FTR_COMMON | CPU_FTR_SPLIT_ID_CACHE |
> + CPU_FTR_USE_TB | CPU_FTR_HPTE_TABLE,
> + CPU_FTR_POWER4_32 = CPU_FTR_COMMON | CPU_FTR_SPLIT_ID_CACHE |
> + CPU_FTR_USE_TB | CPU_FTR_HPTE_TABLE,
> + CPU_FTR_970_32 = CPU_FTR_COMMON | CPU_FTR_SPLIT_ID_CACHE |
> + CPU_FTR_USE_TB | CPU_FTR_HPTE_TABLE | CPU_FTR_ALTIVEC_COMP |
> + CPU_FTR_MAYBE_CAN_NAP,
> + CPU_FTR_8XX = CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_USE_TB,
> + CPU_FTR_40X = CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_USE_TB,
> + CPU_FTR_44X = CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_USE_TB,
> + CPU_FTR_E200 = CPU_FTR_USE_TB,
> + CPU_FTR_E500 = CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_USE_TB,
> + CPU_FTR_E500_2 = CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_USE_TB |
> + CPU_FTR_BIG_PHYS,
> + CPU_FTR_GENERIC_32 = CPU_FTR_COMMON,
> +#ifdef __powerpc64__
> + CPU_FTR_POWER3 = CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_USE_TB |
> + CPU_FTR_HPTE_TABLE | CPU_FTR_IABR,
> + CPU_FTR_RS64 = CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_USE_TB |
> + CPU_FTR_HPTE_TABLE | CPU_FTR_IABR |
> + CPU_FTR_MMCRA | CPU_FTR_CTRL,
> + CPU_FTR_POWER4 = CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_USE_TB |
> + CPU_FTR_HPTE_TABLE | CPU_FTR_PPCAS_ARCH_V2 | CPU_FTR_MMCRA,
> + CPU_FTR_PPC970 = CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_USE_TB |
> + CPU_FTR_HPTE_TABLE | CPU_FTR_PPCAS_ARCH_V2 |
> + CPU_FTR_ALTIVEC_COMP | CPU_FTR_CAN_NAP | CPU_FTR_MMCRA,
> + CPU_FTR_POWER5 = CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_USE_TB |
> + CPU_FTR_HPTE_TABLE | CPU_FTR_PPCAS_ARCH_V2 |
> + CPU_FTR_MMCRA | CPU_FTR_SMT |
> + CPU_FTR_COHERENT_ICACHE | CPU_FTR_LOCKLESS_TLBIE |
> + CPU_FTR_MMCRA_SIHV,
> + CPU_FTR_CELL = CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_USE_TB |
> + CPU_FTR_HPTE_TABLE | CPU_FTR_PPCAS_ARCH_V2 |
> + CPU_FTR_ALTIVEC_COMP | CPU_FTR_MMCRA | CPU_FTR_SMT,
> + CPU_FTR_COMPATIBLE = CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_USE_TB |
> + CPU_FTR_HPTE_TABLE | CPU_FTR_PPCAS_ARCH_V2,
> +#endif
> + CPU_FTR_POSSIBLE =
> +#if CLASSIC_PPC
> + CPU_FTR_601 | CPU_FTR_603 | CPU_FTR_604 | CPU_FTR_740_NOTAU |
> + CPU_FTR_740 | CPU_FTR_750 | CPU_FTR_750FX1 |
> + CPU_FTR_750FX2 | CPU_FTR_750FX | CPU_FTR_750GX |
> + CPU_FTR_7400_NOTAU | CPU_FTR_7400 | CPU_FTR_7450_20 |
> + CPU_FTR_7450_21 | CPU_FTR_7450_23 | CPU_FTR_7455_1 |
> + CPU_FTR_7455_20 | CPU_FTR_7455 | CPU_FTR_7447_10 |
> + CPU_FTR_7447 | CPU_FTR_7447A | CPU_FTR_82XX |
> + CPU_FTR_G2_LE | CPU_FTR_E300 | CPU_FTR_CLASSIC32 |
> +#else
> + CPU_FTR_GENERIC_32 |
> +#endif
> +#ifdef CONFIG_PPC64BRIDGE
> + CPU_FTR_POWER3_32 |
> +#endif
> +#ifdef CONFIG_POWER4
> + CPU_FTR_POWER4_32 | CPU_FTR_970_32 |
> +#endif
> +#ifdef CONFIG_8xx
> + CPU_FTR_8XX |
> +#endif
> +#ifdef CONFIG_40x
> + CPU_FTR_40X |
> +#endif
> +#ifdef CONFIG_44x
> + CPU_FTR_44X |
> +#endif
> +#ifdef CONFIG_FSL_BOOKE
> + CPU_FTR_E200 | CPU_FTR_E500 | CPU_FTR_E500_2 |
> +#endif
> +#ifdef CONFIG_CPU_POWER3
> + CPU_FTR_POWER3 |
> +#endif
> +#ifdef CONFIG_CPU_RS64
> + CPU_FTR_RS64 |
> +#endif
> +#ifdef CONFIG_CPU_POWER4
> + CPU_FTR_POWER4 |
> +#endif
> +#ifdef CONFIG_CPU_PPC970
> + CPU_FTR_PPC970 |
> +#endif
> +#ifdef CONFIG_CPU_POWER5
> + CPU_FTR_POWER5 |
> +#endif
> +#ifdef CONFIG_CPU_CELL
> + CPU_FTR_CELL |
> +#endif
> + 0,
> + CPU_FTR_ALWAYS =
> +#if CLASSIC_PPC
> + CPU_FTR_601 & CPU_FTR_603 & CPU_FTR_604 & CPU_FTR_740_NOTAU &
> + CPU_FTR_740 & CPU_FTR_750 & CPU_FTR_750FX1 &
> + CPU_FTR_750FX2 & CPU_FTR_750FX & CPU_FTR_750GX &
> + CPU_FTR_7400_NOTAU & CPU_FTR_7400 & CPU_FTR_7450_20 &
> + CPU_FTR_7450_21 & CPU_FTR_7450_23 & CPU_FTR_7455_1 &
> + CPU_FTR_7455_20 & CPU_FTR_7455 & CPU_FTR_7447_10 &
> + CPU_FTR_7447 & CPU_FTR_7447A & CPU_FTR_82XX &
> + CPU_FTR_G2_LE & CPU_FTR_E300 & CPU_FTR_CLASSIC32 &
> +#else
> + CPU_FTR_GENERIC_32 &
> +#endif
> +#ifdef CONFIG_PPC64BRIDGE
> + CPU_FTR_POWER3_32 &
> +#endif
> +#ifdef CONFIG_POWER4
> + CPU_FTR_POWER4_32 & CPU_FTR_970_32 &
> +#endif
> +#ifdef CONFIG_8xx
> + CPU_FTR_8XX &
> +#endif
> +#ifdef CONFIG_40x
> + CPU_FTR_40X &
> +#endif
> +#ifdef CONFIG_44x
> + CPU_FTR_44X &
> +#endif
> +#ifdef CONFIG_FSL_BOOKE
> + CPU_FTR_E200 & CPU_FTR_E500 & CPU_FTR_E500_2 &
> +#endif
> +#ifdef CONFIG_CPU_POWER3
> + CPU_FTR_POWER3 &
> +#endif
> +#ifdef CONFIG_CPU_RS64
> + CPU_FTR_RS64 &
> +#endif
> +#ifdef CONFIG_CPU_POWER4
> + CPU_FTR_POWER4 &
> +#endif
> +#ifdef CONFIG_CPU_PPC970
> + CPU_FTR_PPC970 &
> +#endif
> +#ifdef CONFIG_CPU_POWER5
> + CPU_FTR_POWER5 &
> +#endif
> +#ifdef CONFIG_CPU_CELL
> + CPU_FTR_CELL &
> +#endif
> + CPU_FTR_POSSIBLE,
> +};
> +
> +static inline int cpu_has_feature(unsigned long feature)
> +{
> + return (CPU_FTR_ALWAYS & feature) ||
> + (CPU_FTR_POSSIBLE
> +#ifndef __powerpc64__
> + & cur_cpu_spec[0]->cpu_features
> +#else
> + & cur_cpu_spec->cpu_features
> +#endif
> + & feature);
> +}
> +
> +#endif /* __ASSEMBLY */
> +
> +#ifdef __ASSEMBLY__
> +
> +#define BEGIN_FTR_SECTION 98:
> +
> +#ifndef __powerpc64__
> +#define END_FTR_SECTION(msk, val) \
> +99: \
> + .section __ftr_fixup,"a"; \
> + .align 2; \
> + .long msk; \
> + .long val; \
> + .long 98b; \
> + .long 99b; \
> + .previous
> +#else /* __powerpc64__ */
> +#define END_FTR_SECTION(msk, val) \
> +99: \
> + .section __ftr_fixup,"a"; \
> + .align 3; \
> + .llong msk; \
> + .llong val; \
> + .llong 98b; \
> + .llong 99b; \
> + .previous
> +#endif /* __powerpc64__ */
> +
> +#else
> +
> +#define BEGIN_FTR_SECTION "98:\n"
> +
> +#ifndef __powerpc64__
> +#define END_FTR_SECTION(msk, val) \
> +"99:\n" \
> +" .section __ftr_fixup,\"a\";\n" \
> +" .align 2;\n" \
> +" .long "#msk";\n" \
> +" .long "#val";\n" \
> +" .long 98b;\n" \
> +" .long 99b;\n" \
> +" .previous\n"
> +#else /* __powerpc64__ */
> +#define END_FTR_SECTION(msk, val) \
> +"99:\n" \
> +" .section __ftr_fixup,\"a\";\n" \
> +" .align 3;\n" \
> +" .llong "#msk";\n" \
> +" .llong "#val";\n" \
> +" .llong 98b;\n" \
> +" .llong 99b;\n" \
> +" .previous\n"
> +#endif /* __powerpc64__ */
> +
> +#endif /* __ASSEMBLY__ */
> +
> +#define END_FTR_SECTION_IFSET(msk) END_FTR_SECTION((msk), (msk))
> +#define END_FTR_SECTION_IFCLR(msk) END_FTR_SECTION((msk), 0)
> +
> +#endif /* __KERNEL__ */
> +#endif /* __ASM_POWERPC_CPUTABLE_H */
> Index: clean-cg/include/asm-ppc/cputable.h
> ===================================================================
> --- clean-cg.orig/include/asm-ppc/cputable.h
> +++ /dev/null
> @@ -1,128 +0,0 @@
> -/*
> - * include/asm-ppc/cputable.h
> - *
> - * Copyright (C) 2001 Ben. Herrenschmidt (benh@kernel.crashing.org)
> - *
> - * 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.
> - */
> -
> -#ifndef __ASM_PPC_CPUTABLE_H
> -#define __ASM_PPC_CPUTABLE_H
> -
> -/* Exposed to userland CPU features */
> -#define PPC_FEATURE_32 0x80000000
> -#define PPC_FEATURE_64 0x40000000
> -#define PPC_FEATURE_601_INSTR 0x20000000
> -#define PPC_FEATURE_HAS_ALTIVEC 0x10000000
> -#define PPC_FEATURE_HAS_FPU 0x08000000
> -#define PPC_FEATURE_HAS_MMU 0x04000000
> -#define PPC_FEATURE_HAS_4xxMAC 0x02000000
> -#define PPC_FEATURE_UNIFIED_CACHE 0x01000000
> -#define PPC_FEATURE_HAS_SPE 0x00800000
> -#define PPC_FEATURE_HAS_EFP_SINGLE 0x00400000
> -#define PPC_FEATURE_HAS_EFP_DOUBLE 0x00200000
> -
> -#ifdef __KERNEL__
> -
> -#ifndef __ASSEMBLY__
> -
> -/* This structure can grow, it's real size is used by head.S code
> - * via the mkdefs mecanism.
> - */
> -struct cpu_spec;
> -
> -typedef void (*cpu_setup_t)(unsigned long offset, int cpu_nr,
> struct cpu_spec* spec);
> -
> -struct cpu_spec {
> - /* CPU is matched via (PVR & pvr_mask) == pvr_value */
> - unsigned int pvr_mask;
> - unsigned int pvr_value;
> -
> - char *cpu_name;
> - unsigned int cpu_features; /* Kernel features */
> - unsigned int cpu_user_features; /* Userland features */
> -
> - /* cache line sizes */
> - unsigned int icache_bsize;
> - unsigned int dcache_bsize;
> -
> - /* number of performance monitor counters */
> - unsigned int num_pmcs;
> -
> - /* this is called to initialize various CPU bits like L1 cache,
> - * BHT, SPD, etc... from head.S before branching to
> identify_machine
> - */
> - cpu_setup_t cpu_setup;
> -};
> -
> -extern struct cpu_spec cpu_specs[];
> -extern struct cpu_spec *cur_cpu_spec[];
> -
> -static inline unsigned int cpu_has_feature(unsigned int feature)
> -{
> - return cur_cpu_spec[0]->cpu_features & feature;
> -}
> -
> -#endif /* __ASSEMBLY__ */
> -
> -/* CPU kernel features */
> -#define CPU_FTR_SPLIT_ID_CACHE 0x00000001
> -#define CPU_FTR_L2CR 0x00000002
> -#define CPU_FTR_SPEC7450 0x00000004
> -#define CPU_FTR_ALTIVEC 0x00000008
> -#define CPU_FTR_TAU 0x00000010
> -#define CPU_FTR_CAN_DOZE 0x00000020
> -#define CPU_FTR_USE_TB 0x00000040
> -#define CPU_FTR_604_PERF_MON 0x00000080
> -#define CPU_FTR_601 0x00000100
> -#define CPU_FTR_HPTE_TABLE 0x00000200
> -#define CPU_FTR_CAN_NAP 0x00000400
> -#define CPU_FTR_L3CR 0x00000800
> -#define CPU_FTR_L3_DISABLE_NAP 0x00001000
> -#define CPU_FTR_NAP_DISABLE_L2_PR 0x00002000
> -#define CPU_FTR_DUAL_PLL_750FX 0x00004000
> -#define CPU_FTR_NO_DPM 0x00008000
> -#define CPU_FTR_HAS_HIGH_BATS 0x00010000
> -#define CPU_FTR_NEED_COHERENT 0x00020000
> -#define CPU_FTR_NO_BTIC 0x00040000
> -#define CPU_FTR_BIG_PHYS 0x00080000
> -
> -#ifdef __ASSEMBLY__
> -
> -#define BEGIN_FTR_SECTION 98:
> -
> -#define END_FTR_SECTION(msk, val) \
> -99: \
> - .section __ftr_fixup,"a"; \
> - .align 2; \
> - .long msk; \
> - .long val; \
> - .long 98b; \
> - .long 99b; \
> - .previous
> -
> -#else
> -
> -#define BEGIN_FTR_SECTION "98:\n"
> -#define END_FTR_SECTION(msk, val) \
> -"99:\n" \
> -" .section __ftr_fixup,\"a\";\n" \
> -" .align 2;\n" \
> -" .long "#msk";\n" \
> -" .long "#val";\n" \
> -" .long 98b;\n" \
> -" .long 99b;\n" \
> -" .previous\n"
> -
> -
> -#endif /* __ASSEMBLY__ */
> -
> -#define END_FTR_SECTION_IFSET(msk) END_FTR_SECTION((msk), (msk))
> -#define END_FTR_SECTION_IFCLR(msk) END_FTR_SECTION((msk), 0)
> -
> -#endif /* __ASM_PPC_CPUTABLE_H */
> -#endif /* __KERNEL__ */
> -
>
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox