[abd9401] | 1 | /* |
---|
| 2 | * cpuIdent.c -- Cpu identification code |
---|
| 3 | * |
---|
| 4 | * Copyright (C) 1999 Eric Valette. valette@crf.canon.fr |
---|
| 5 | * |
---|
[48694da] | 6 | * Added MPC8260 Andy Dachs <a.dachs@sstl.co.uk> |
---|
| 7 | * Surrey Satellite Technology Limited |
---|
| 8 | * |
---|
[abd9401] | 9 | * The license and distribution terms for this file may be |
---|
| 10 | * found in found in the file LICENSE in this distribution or at |
---|
[21e1c44] | 11 | * http://www.rtems.com/license/LICENSE. |
---|
[abd9401] | 12 | * |
---|
| 13 | * $Id$ |
---|
| 14 | * |
---|
| 15 | */ |
---|
| 16 | |
---|
[f054b51] | 17 | #include <libcpu/cpuIdent.h> |
---|
[abd9401] | 18 | #include <libcpu/spr.h> |
---|
[5c76213] | 19 | #include <rtems/bspIo.h> |
---|
[abd9401] | 20 | |
---|
| 21 | /* |
---|
| 22 | * Generate inline code to read Processor Version Register |
---|
| 23 | */ |
---|
| 24 | SPR_RO(PVR) |
---|
| 25 | |
---|
| 26 | ppc_cpu_id_t current_ppc_cpu = PPC_UNKNOWN; |
---|
| 27 | ppc_cpu_revision_t current_ppc_revision = 0xff; |
---|
| 28 | |
---|
[0d776cd2] | 29 | char *get_ppc_cpu_type_name(ppc_cpu_id_t cpu) |
---|
| 30 | { |
---|
| 31 | switch (cpu) { |
---|
| 32 | case PPC_601: return "MPC601"; |
---|
[9c4a30e2] | 33 | case PPC_5XX: return "MPC5XX"; |
---|
[0d776cd2] | 34 | case PPC_603: return "MPC603"; |
---|
| 35 | case PPC_603ev: return "MPC603ev"; |
---|
| 36 | case PPC_604: return "MPC604"; |
---|
| 37 | case PPC_750: return "MPC750"; |
---|
| 38 | case PPC_7400: return "MPC7400"; |
---|
[408bb71] | 39 | case PPC_7455: return "MPC7455"; |
---|
| 40 | case PPC_7457: return "MPC7457"; |
---|
[56c4cae] | 41 | case PPC_603le: return "MPC603le"; |
---|
[0d776cd2] | 42 | case PPC_604e: return "MPC604e"; |
---|
[d49389a] | 43 | case PPC_604r: return "MPC604r"; |
---|
[0d776cd2] | 44 | case PPC_620: return "MPC620"; |
---|
| 45 | case PPC_860: return "MPC860"; |
---|
| 46 | case PPC_8260: return "MPC8260"; |
---|
[408bb71] | 47 | case PPC_8245: return "MPC8245"; |
---|
[0d776cd2] | 48 | default: |
---|
[a84392d] | 49 | printk("Unknown CPU value of 0x%x. Please add it to " |
---|
| 50 | "<libcpu/powerpc/shared/include/cpuIdent.c>\n", cpu ); |
---|
[0d776cd2] | 51 | } |
---|
| 52 | return "UNKNOWN"; |
---|
| 53 | } |
---|
| 54 | |
---|
[abd9401] | 55 | ppc_cpu_id_t get_ppc_cpu_type() |
---|
| 56 | { |
---|
[eaedd00] | 57 | unsigned int pvr = (_read_PVR() >> 16); |
---|
[abd9401] | 58 | current_ppc_cpu = (ppc_cpu_id_t) pvr; |
---|
| 59 | switch (pvr) { |
---|
[eaedd00] | 60 | case PPC_601: |
---|
[9c4a30e2] | 61 | case PPC_5XX: |
---|
[eaedd00] | 62 | case PPC_603: |
---|
| 63 | case PPC_603ev: |
---|
[56c4cae] | 64 | case PPC_603le: |
---|
[acddd7d2] | 65 | case PPC_604: |
---|
[8ca2e5b] | 66 | case PPC_604r: |
---|
[eaedd00] | 67 | case PPC_750: |
---|
[0d776cd2] | 68 | case PPC_7400: |
---|
[56c4cae] | 69 | case PPC_7455: |
---|
[408bb71] | 70 | case PPC_7457: |
---|
[eaedd00] | 71 | case PPC_604e: |
---|
| 72 | case PPC_620: |
---|
| 73 | case PPC_860: |
---|
[48694da] | 74 | case PPC_8260: |
---|
[a84392d] | 75 | case PPC_8245: |
---|
[eaedd00] | 76 | return current_ppc_cpu; |
---|
| 77 | default: |
---|
[a84392d] | 78 | printk("Unknown PVR value of 0x%x. Please add it to " |
---|
| 79 | "<libcpu/powerpc/shared/include/cpuIdent.c>\n", pvr ); |
---|
[abd9401] | 80 | return PPC_UNKNOWN; |
---|
| 81 | } |
---|
| 82 | } |
---|
[0d776cd2] | 83 | |
---|
[abd9401] | 84 | ppc_cpu_revision_t get_ppc_cpu_revision() |
---|
| 85 | { |
---|
| 86 | ppc_cpu_revision_t rev = (ppc_cpu_revision_t) (_read_PVR() & 0xffff); |
---|
| 87 | current_ppc_revision = rev; |
---|
| 88 | return rev; |
---|
| 89 | } |
---|