cputable.h
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:3k
源码类别:

Linux/Unix编程

开发平台:

Unix_Linux

  1. /*
  2.  * BK Id: %F% %I% %G% %U% %#%
  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. typedef void (*cpu_setup_t)(unsigned long offset, int cpu_nr, struct cpu_spec* spec);
  32. struct cpu_spec {
  33. /* CPU is matched via (PVR & pvr_mask) == pvr_value */
  34. unsigned int pvr_mask;
  35. unsigned int pvr_value;
  36. char *cpu_name;
  37. unsigned int cpu_features; /* Kernel features */
  38. unsigned int cpu_user_features; /* Userland features */
  39. /* cache line sizes */
  40. unsigned int icache_bsize;
  41. unsigned int dcache_bsize;
  42. /* this is called to initialize various CPU bits like L1 cache,
  43.  * BHT, SPD, etc... from head.S before branching to identify_machine
  44.  */
  45. cpu_setup_t cpu_setup;
  46. };
  47. extern struct cpu_spec cpu_specs[];
  48. extern struct cpu_spec *cur_cpu_spec[];
  49. #endif /* __ASSEMBLY__ */
  50. /* CPU kernel features */
  51. #define CPU_FTR_SPLIT_ID_CACHE 0x00000001
  52. #define CPU_FTR_L2CR 0x00000002
  53. #define CPU_FTR_SPEC7450 0x00000004
  54. #define CPU_FTR_ALTIVEC 0x00000008
  55. #define CPU_FTR_TAU 0x00000010
  56. #define CPU_FTR_CAN_DOZE 0x00000020
  57. #define CPU_FTR_USE_TB 0x00000040
  58. #define CPU_FTR_604_PERF_MON 0x00000080
  59. #define CPU_FTR_601 0x00000100
  60. #define CPU_FTR_HPTE_TABLE 0x00000200
  61. #define CPU_FTR_CAN_NAP 0x00000400
  62. #define CPU_FTR_L3CR 0x00000800
  63. #define CPU_FTR_L3_DISABLE_NAP 0x00001000
  64. #define CPU_FTR_NAP_DISABLE_L2_PR 0x00002000
  65. #define CPU_FTR_DUAL_PLL_750FX 0x00004000
  66. #ifdef __ASSEMBLY__
  67. #define BEGIN_FTR_SECTION 98:
  68. #define END_FTR_SECTION(msk, val)
  69. 99:
  70. .section __ftr_fixup,"a";
  71. .align 2;
  72. .long msk;
  73. .long val;
  74. .long 98b;
  75. .long 99b;
  76. .previous
  77. #define END_FTR_SECTION_IFSET(msk) END_FTR_SECTION((msk), (msk))
  78. #define END_FTR_SECTION_IFCLR(msk) END_FTR_SECTION((msk), 0)
  79. #endif /* __ASSEMBLY__ */
  80. #endif /* __ASM_PPC_CPUTABLE_H */
  81. #endif /* __KERNEL__ */