cputable.h
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:2k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

  1. /*
  2.  * BK Id: SCCS/s.cputable.h 1.3 08/19/01 22:31:46 paulus
  3.  */
  4. /*
  5.  *  include/asm-ppc/cputable.h
  6.  *
  7.  *  Copyright (C) 2001 Ben. Herrenschmidt (benh@kernel.crashing.org)
  8.  *
  9.  *  This program is free software; you can redistribute it and/or
  10.  *  modify it under the terms of the GNU General Public License
  11.  *  as published by the Free Software Foundation; either version
  12.  *  2 of the License, or (at your option) any later version.
  13.  */
  14. #ifndef __ASM_PPC_CPUTABLE_H
  15. #define __ASM_PPC_CPUTABLE_H
  16. /* Exposed to userland CPU features */
  17. #define PPC_FEATURE_32 0x80000000
  18. #define PPC_FEATURE_64 0x40000000
  19. #define PPC_FEATURE_601_INSTR 0x20000000
  20. #define PPC_FEATURE_HAS_ALTIVEC 0x10000000
  21. #define PPC_FEATURE_HAS_FPU 0x08000000
  22. #define PPC_FEATURE_HAS_MMU 0x04000000
  23. #define PPC_FEATURE_HAS_4xxMAC 0x02000000
  24. #define PPC_FEATURE_UNIFIED_CACHE 0x01000000
  25. #ifdef __KERNEL__
  26. #ifndef __ASSEMBLY__
  27. /* This structure can grow, it's real size is used by head.S code
  28.  * via the mkdefs mecanism.
  29.  */
  30. struct cpu_spec {
  31. /* CPU is matched via (PVR & pvr_mask) == pvr_value */
  32. unsigned int pvr_mask;
  33. unsigned int pvr_value;
  34. char *cpu_name;
  35. unsigned int cpu_features; /* Kernel features */
  36. unsigned int cpu_user_features; /* Userland features */
  37. /* cache line sizes */
  38. unsigned int icache_bsize;
  39. unsigned int dcache_bsize;
  40. /* this is called to initialize various CPU bits like L1 cache,
  41.  * BHT, SPD, etc... from head.S before branching to identify_machine
  42.  */
  43. void (*cpu_setup)(int cpu_nr);
  44. };
  45. extern struct cpu_spec cpu_specs[];
  46. extern struct cpu_spec *cur_cpu_spec[];
  47. #endif /* __ASSEMBLY__ */
  48. /* CPU kernel features */
  49. #define CPU_FTR_SPLIT_ID_CACHE 0x00000001
  50. #define CPU_FTR_L2CR 0x00000002
  51. #define CPU_FTR_SPEC7450 0x00000004
  52. #define CPU_FTR_ALTIVEC 0x00000008
  53. #define CPU_FTR_TAU 0x00000010
  54. #define CPU_FTR_CAN_DOZE 0x00000020
  55. #define CPU_FTR_USE_TB 0x00000040
  56. #define CPU_FTR_604_PERF_MON 0x00000080
  57. #define CPU_FTR_601 0x00000100
  58. #define CPU_FTR_HPTE_TABLE 0x00000200
  59. #ifdef __ASSEMBLY__
  60. #define BEGIN_FTR_SECTION 98:
  61. #define END_FTR_SECTION(msk, val)
  62. 99:
  63. .section __ftr_fixup,"a";
  64. .align 2;
  65. .long msk;
  66. .long val;
  67. .long 98b;
  68. .long 99b;
  69. .previous
  70. #define END_FTR_SECTION_IFSET(msk) END_FTR_SECTION((msk), (msk))
  71. #define END_FTR_SECTION_IFCLR(msk) END_FTR_SECTION((msk), 0)
  72. #endif /* __ASSEMBLY__ */
  73. #endif /* __ASM_PPC_CPUTABLE_H */
  74. #endif /* __KERNEL__ */