Changeset 0172eba in mainline
- Timestamp:
- 2005-11-11T12:40:45Z (19 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 73a4bab
- Parents:
- 59e07c91
- Location:
- arch/ia64
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
arch/ia64/include/cpu.h
r59e07c91 r0172eba 30 30 #define __ia64_CPU_H__ 31 31 32 #include <arch/types.h> 32 33 #include <typedefs.h> 34 #include <arch/register.h> 35 36 #define FAMILY_ITANIUM 0x7 37 #define FAMILY_ITANIUM2 0x1f 33 38 34 39 struct cpu_arch { 40 __u64 cpuid0; 41 __u64 cpuid1; 42 cpuid3_t cpuid3; 35 43 }; 44 45 /** Read CPUID register. 46 * 47 * @param n CPUID register number. 48 * 49 * @return Value of CPUID[n] register. 50 */ 51 static inline __u64 cpuid_read(int n) 52 { 53 __u64 v; 36 54 55 __asm__ volatile ("mov %0 = cpuid[%1]\n" : "=r" (v) : "r" (n)); 56 57 return v; 58 } 59 37 60 #endif -
arch/ia64/include/register.h
r59e07c91 r0172eba 179 179 typedef union cr_isr cr_isr_t; 180 180 181 /** CPUID Register 3 */ 182 union cpuid3 { 183 struct { 184 __u8 number; 185 __u8 revision; 186 __u8 model; 187 __u8 family; 188 __u8 archrev; 189 } __attribute__ ((packed)); 190 __u64 value; 191 }; 192 193 typedef union cpuid3 cpuid3_t; 194 181 195 #endif /* !__ASM__ */ 182 196 -
arch/ia64/src/cpu/cpu.c
r59e07c91 r0172eba 28 28 29 29 #include <cpu.h> 30 #include <arch.h> 31 #include <arch/register.h> 32 #include <print.h> 30 33 31 34 void cpu_arch_init(void) … … 33 36 } 34 37 38 void cpu_identify(void) 39 { 40 CPU->arch.cpuid0 = cpuid_read(0); 41 CPU->arch.cpuid1 = cpuid_read(1); 42 CPU->arch.cpuid3.value = cpuid_read(3); 43 } 35 44 45 void cpu_print_report(cpu_t *m) 46 { 47 char *family_str; 48 char vendor[2*sizeof(__u64)+1]; 49 50 *((__u64 *) &vendor[0*sizeof(__u64)]) = CPU->arch.cpuid0; 51 *((__u64 *) &vendor[1*sizeof(__u64)]) = CPU->arch.cpuid1; 52 vendor[sizeof(vendor)-1] = '\0'; 53 54 switch(m->arch.cpuid3.family) { 55 case FAMILY_ITANIUM: 56 family_str = "Itanium"; 57 break; 58 case FAMILY_ITANIUM2: 59 family_str = "Itanium 2"; 60 break; 61 default: 62 family_str = "Unknown"; 63 break; 64 } 65 66 printf("cpu%d: %s (%s), archrev=%d, model=%d, revision=%d\n", CPU->id, family_str, vendor, CPU->arch.cpuid3.archrev, CPU->arch.cpuid3.model, CPU->arch.cpuid3.revision); 67 } -
arch/ia64/src/dummy.s
r59e07c91 r0172eba 34 34 .global before_thread_runs_arch 35 35 .global arch_late_init 36 .global cpu_identify37 .global cpu_print_report38 36 .global cpu_sleep 39 37 .global dummy … … 47 45 asm_delay_loop: 48 46 arch_late_init: 49 cpu_identify:50 cpu_print_report:51 47 cpu_sleep: 52 48 fpu_init:
Note:
See TracChangeset
for help on using the changeset viewer.