forked from Imagelibrary/rtems
skip version nibble when detecting e200 processor version
This commit is contained in:
@@ -75,12 +75,35 @@ char *get_ppc_cpu_type_name(ppc_cpu_id_t cpu)
|
|||||||
|
|
||||||
ppc_cpu_id_t get_ppc_cpu_type(void)
|
ppc_cpu_id_t get_ppc_cpu_type(void)
|
||||||
{
|
{
|
||||||
|
/*
|
||||||
|
* cpu types listed here have the lowermost nibble as a version identifier
|
||||||
|
* we will tweak them to the starndard version
|
||||||
|
*/
|
||||||
|
const uint32_t ppc_cpu_id_version_nibble[] = {
|
||||||
|
PPC_e200z6,
|
||||||
|
PPC_e200z0,
|
||||||
|
PPC_e200z1};
|
||||||
|
|
||||||
unsigned int pvr;
|
unsigned int pvr;
|
||||||
|
int i;
|
||||||
|
|
||||||
if ( PPC_UNKNOWN != current_ppc_cpu )
|
if ( PPC_UNKNOWN != current_ppc_cpu )
|
||||||
return current_ppc_cpu;
|
return current_ppc_cpu;
|
||||||
|
|
||||||
pvr = (_read_PVR() >> 16);
|
pvr = (_read_PVR() >> 16);
|
||||||
|
/*
|
||||||
|
* apply tweaks to ignore version
|
||||||
|
*/
|
||||||
|
for (i = 0;
|
||||||
|
i < (sizeof(ppc_cpu_id_version_nibble)
|
||||||
|
/sizeof(ppc_cpu_id_version_nibble[0]));
|
||||||
|
i++) {
|
||||||
|
if ((pvr & 0xfff0) == (ppc_cpu_id_version_nibble[i] & 0xfff0)) {
|
||||||
|
pvr = ppc_cpu_id_version_nibble[i];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
current_ppc_cpu = (ppc_cpu_id_t) pvr;
|
current_ppc_cpu = (ppc_cpu_id_t) pvr;
|
||||||
|
|
||||||
switch (pvr) {
|
switch (pvr) {
|
||||||
|
|||||||
@@ -57,7 +57,8 @@ typedef enum
|
|||||||
PPC_e300c3 = 0x8085, /* e300c3 core */
|
PPC_e300c3 = 0x8085, /* e300c3 core */
|
||||||
PPC_e200z0 = 0x8171,
|
PPC_e200z0 = 0x8171,
|
||||||
PPC_e200z1 = 0x8144,
|
PPC_e200z1 = 0x8144,
|
||||||
PPC_e200z6 = 0x8115,
|
PPC_e200z6 = 0x8112,
|
||||||
|
PPC_e200z6v5= 0x8115,
|
||||||
PPC_PSIM = 0xfffe, /* GDB PowerPC simulator -- fake version */
|
PPC_PSIM = 0xfffe, /* GDB PowerPC simulator -- fake version */
|
||||||
PPC_UNKNOWN = 0xffff
|
PPC_UNKNOWN = 0xffff
|
||||||
} ppc_cpu_id_t;
|
} ppc_cpu_id_t;
|
||||||
|
|||||||
Reference in New Issue
Block a user