summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libcpu/powerpc/shared/include/cpuIdent.c
diff options
context:
space:
mode:
Diffstat (limited to 'c/src/lib/libcpu/powerpc/shared/include/cpuIdent.c')
-rwxr-xr-xc/src/lib/libcpu/powerpc/shared/include/cpuIdent.c243
1 files changed, 0 insertions, 243 deletions
diff --git a/c/src/lib/libcpu/powerpc/shared/include/cpuIdent.c b/c/src/lib/libcpu/powerpc/shared/include/cpuIdent.c
deleted file mode 100755
index ad3fec2293..0000000000
--- a/c/src/lib/libcpu/powerpc/shared/include/cpuIdent.c
+++ /dev/null
@@ -1,243 +0,0 @@
-/*
- * cpuIdent.c -- Cpu identification code
- *
- * Copyright (C) 1999 Eric Valette. valette@crf.canon.fr
- *
- * Added MPC8260 Andy Dachs <a.dachs@sstl.co.uk>
- * Surrey Satellite Technology Limited
- *
- * The license and distribution terms for this file may be
- * found in the file LICENSE in this distribution or at
- * http://www.rtems.org/license/LICENSE.
- *
- */
-
-#include <libcpu/cpuIdent.h>
-#include <libcpu/spr.h>
-#include <rtems/bspIo.h>
-
-/*
- * Generate inline code to read Processor Version Register
- */
-SPR_RO(PPC_PVR)
-
-ppc_cpu_id_t current_ppc_cpu = PPC_UNKNOWN;
-ppc_cpu_revision_t current_ppc_revision = 0xff;
-ppc_feature_t current_ppc_features;
-
-const char *get_ppc_cpu_type_name(ppc_cpu_id_t cpu)
-{
- switch (cpu) {
- case PPC_405: return "PPC405";
- case PPC_405GP: return "PPC405GP";
- case PPC_405EX: return "PPC405EX";
- case PPC_440: return "PPC440";
- case PPC_601: return "MPC601";
- case PPC_5XX: return "MPC5XX";
- case PPC_603: return "MPC603";
- case PPC_603ev: return "MPC603ev";
- case PPC_604: return "MPC604";
- case PPC_750: return "MPC750";
- case PPC_750_IBM: return "IBM PPC750";
- case PPC_7400: return "MPC7400";
- case PPC_7455: return "MPC7455";
- case PPC_7457: return "MPC7457";
- case PPC_603le: return "MPC603le";
- case PPC_604e: return "MPC604e";
- case PPC_604r: return "MPC604r";
- case PPC_620: return "MPC620";
- case PPC_860: return "MPC860";
- case PPC_8260: return "MPC8260";
- case PPC_8245: return "MPC8245";
- case PPC_8540: return "MPC8540";
- case PPC_PSIM: return "PSIM";
- case PPC_e200z0: return "e200z0";
- case PPC_e200z1: return "e200z1";
- case PPC_e200z4: return "e200z4";
- case PPC_e200z6: return "e200z6";
- case PPC_e200z7: return "e200z7";
- case PPC_e500v2: return "e500v2";
- case PPC_e6500: return "e6500";
- default:
- printk("Unknown CPU value of 0x%x. Please add it to "
- "<libcpu/powerpc/shared/include/cpuIdent.c>\n", cpu );
- }
- return "UNKNOWN";
-}
-
-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 standard version
- */
- const uint32_t ppc_cpu_id_version_nibble[] = {
- PPC_e200z0,
- PPC_e200z1,
- PPC_e200z4,
- PPC_e200z6,
- PPC_e200z7
- };
-
- unsigned int pvr;
- int i;
-
- if ( PPC_UNKNOWN != current_ppc_cpu )
- return current_ppc_cpu;
-
- pvr = (_read_PPC_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;
-
- switch (pvr) {
- case PPC_405:
- case PPC_405GP:
- case PPC_405EX:
- case PPC_440:
- case PPC_601:
- case PPC_5XX:
- case PPC_603:
- case PPC_603ev:
- case PPC_603le:
- case PPC_604:
- case PPC_604r:
- case PPC_750:
- case PPC_750_IBM:
- case PPC_7400:
- case PPC_7455:
- case PPC_7457:
- case PPC_604e:
- case PPC_620:
- case PPC_860:
- case PPC_8260:
- case PPC_8245:
- case PPC_PSIM:
- case PPC_8540:
- case PPC_e200z0:
- case PPC_e200z1:
- case PPC_e200z4:
- case PPC_e200z6:
- case PPC_e200z7:
- case PPC_e300c1:
- case PPC_e300c2:
- case PPC_e300c3:
- case PPC_e500v2:
- case PPC_e6500:
- break;
- default:
- printk("Unknown PVR value of 0x%x. Please add it to "
- "<libcpu/powerpc/shared/include/cpuIdent.c>\n", pvr );
- return PPC_UNKNOWN;
- }
-
- /* determine features */
-
- /* FIXME: This is incomplete; I couldn't go through all the
- * manuals (yet).
- */
- switch ( current_ppc_cpu ) {
- case PPC_7455:
- case PPC_7457:
- current_ppc_features.has_8_bats = 1;
- case PPC_7400:
- /* NOTE: PSIM PVR doesn't tell us anything (its
- * contents are not set based on what model
- * the user chooses but has to be programmed via
- * the device file with the special value 0xfffe
- * telling us that we have a 'psim cpu').
- *
- * I'm not sure pagetables work if the user chooses
- * e.g., the 603 model...
- */
- case PPC_PSIM:
- current_ppc_features.has_altivec = 1;
- case PPC_604:
- case PPC_604e:
- case PPC_604r:
- case PPC_750:
- case PPC_750_IBM:
- current_ppc_features.has_hw_ptbl_lkup = 1;
- case PPC_8260:
- case PPC_8245:
- case PPC_601:
- case PPC_603:
- case PPC_603e:
- case PPC_603ev:
- case PPC_603le:
- current_ppc_features.is_60x = 1;
- default:
- break;
- }
-
- switch ( current_ppc_cpu ) {
- case PPC_e6500:
- current_ppc_features.has_altivec = 1;
- break;
- default:
- break;
- }
-
- switch ( current_ppc_cpu ) {
- case PPC_405:
- case PPC_405GP:
- case PPC_405EX:
- current_ppc_features.is_bookE = PPC_BOOKE_405;
- break;
- case PPC_440:
- current_ppc_features.is_bookE = PPC_BOOKE_STD;
- break;
- case PPC_8540:
- case PPC_e200z0:
- case PPC_e200z1:
- case PPC_e200z4:
- case PPC_e200z6:
- case PPC_e200z7:
- case PPC_e500v2:
- case PPC_e6500:
- current_ppc_features.is_bookE = PPC_BOOKE_E500;
- break;
- default:
- break;
- }
-
- switch ( current_ppc_cpu ) {
- case PPC_860:
- current_ppc_features.has_16byte_clne = 1;
- default:
- break;
- }
-
- switch ( current_ppc_cpu ) {
- case PPC_603e:
- case PPC_603ev:
- case PPC_603le:
- case PPC_e300c1:
- case PPC_e300c2:
- case PPC_e300c3:
- case PPC_8240:
- current_ppc_features.has_shadowed_gprs = 1;
- default:
- break;
- }
-
- return current_ppc_cpu;
-}
-
-ppc_cpu_revision_t get_ppc_cpu_revision(void)
-{
- ppc_cpu_revision_t rev = (ppc_cpu_revision_t) (_read_PPC_PVR() & 0xffff);
- current_ppc_revision = rev;
- return rev;
-}