Subject: Re: CPU IDs
To: Ben Harris <bjh21@netbsd.org>
From: Richard Earnshaw <rearnsha@arm.com>
List: port-arm32
Date: 01/05/2001 18:42:57
Here's some that are in the ARM ARM that I have
ARM600 0x41560600
ARM610 0x41560610
ARM620 0x41560620
And
ARM810 0x41018100
Neither the 7500 nor the 7500FE data sheets seem to document the CPU id --
Odd.
Guessing from the information below, I would suspect the ARM700 has the
code 0x41007000.
The format of the ID register is quite complex, but it can be decoded with
care. Here's what the ARM ARM says (I've tried to summarise a bit, since
it is quite long)
There are 3 distinct ways in which the number may be formed (to determine
the format look at bits[15:12]
- if they are 0x0, the processor is pre ARM7
- if they are 0x7, the processor is in the ARM7 family
- otherwise, a more recent processor
Post ARM7 processors
[3:0] Implementation defined revision number
[15:4] Implementation defined representation of primary part number for
processor (top four bits must *not* be 0x0 or 0x7)
[19:16] Architecture code. Following values are currently defined, all
others reserved.
0x1 ARMv4
0x2 ARMv4T
0x3 ARMv5
0x4 ARMv5T
[23:20] Implemenation defined variant number. Usually used to distinguish
two variants of the same basic Core, eg cache size.
[31:24] Implementor code, all unused values reserved to ARM.
0x41 = A (ARM Ltd)
0x44 = D (Digital Equipment Corp)
0x69 = i (Intel Corp)
ARM7 Family procs
Bits [15:12] = 0x7
[3:0] Implementation defined revision number
[15:4] Implementation defined representation of primary part number for
processor (Top four bits = 0x7)
[22:16] Variant
[23] Type of arm7
0 => Architecture 3
1 => Architecture 4T
[31:24] Implementor code as above
Pre-ARM7
Bits [15:12] = 0x0
[3:0] Revision code
[31:4] Processor ID (See top)
> I'm trying to assemble a unified <arm/armreg.h> out of <arm32/cpu.h>,
> <arm26/armreg.h> and all the ARM data sheets I can lay my hands on. In an
> attempt at documenting the chaos of historical CPU IDs, I'd like to record
> the actual 32-bit CPU ID for each processor (ignoring the bottom four
> bits). To this end, could anyone provide me with the full CPU ID for any
> of the following?:
>
> ARM700
> ARM810
> ARM7500
> ARM7500FE
>
> FWIW, here's the list I've got so far:
>
> #define CPU_ID_ARM3 0x41560300
> #define CPU_ID_ARM610 0x41560610
> #define CPU_ID_ARM710 0x41007100
> #define CPU_ID_ARM7100 0x41047100
> #define CPU_ID_ARM710T 0x41807100
> #define CPU_ID_ARM720T 0x41807200
> #define CPU_ID_ARM740T8K 0x41807400 /* XXX no MMU, 8KB cache */
> #define CPU_ID_ARM740T4K 0x41817400 /* XXX no MMU, 4KB cache */
> #define CPU_ID_ARM920T 0x41129200
> #define CPU_ID_ARM922T 0x41029220
> #define CPU_ID_ARM940T 0x41029400 /* XXX no MMU */
> #define CPU_ID_ARM946ES 0x41049460 /* XXX no MMU */
> #define CPU_ID_ARM966ES 0x41049660 /* XXX no MMU */
> #define CPU_ID_ARM966ESR1 0x41059660 /* XXX no MMU */
> #define CPU_ID_SA110 0x4401a100
> #define CPU_ID_SA1100 0x4401a110
> #define CPU_ID_SA1110 0x6901b110
> #define CPU_ID_80200 0x69052000
>
> Obviously, CPU IDs for other ARMs would be nice too. I'm trying to get a
> fairly complete list, even if NetBSD stands no chance of running on some
> of them.
>
> --
> Ben Harris <bjh21@netbsd.org>
> Portmaster, NetBSD/arm26 <URL:http://www.netbsd.org/Ports/arm26/>
>