Rev 3022 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 3022 | Rev 4055 | ||
---|---|---|---|
Line 36... | Line 36... | ||
36 | #define KERN_ia64_CPU_H_ |
36 | #define KERN_ia64_CPU_H_ |
37 | 37 | ||
38 | #include <arch/types.h> |
38 | #include <arch/types.h> |
39 | #include <arch/register.h> |
39 | #include <arch/register.h> |
40 | #include <arch/asm.h> |
40 | #include <arch/asm.h> |
- | 41 | #include <arch/bootinfo.h> |
|
41 | 42 | ||
42 | #define FAMILY_ITANIUM 0x7 |
43 | #define FAMILY_ITANIUM 0x7 |
43 | #define FAMILY_ITANIUM2 0x1f |
44 | #define FAMILY_ITANIUM2 0x1f |
44 | 45 | ||
45 | typedef struct { |
46 | typedef struct { |
Line 61... | Line 62... | ||
61 | asm volatile ("mov %0 = cpuid[%1]\n" : "=r" (v) : "r" (n)); |
62 | asm volatile ("mov %0 = cpuid[%1]\n" : "=r" (v) : "r" (n)); |
62 | 63 | ||
63 | return v; |
64 | return v; |
64 | } |
65 | } |
65 | 66 | ||
- | 67 | ||
- | 68 | #define CR64_ID_SHIFT 24 |
|
- | 69 | #define CR64_ID_MASK 0xff000000 |
|
- | 70 | #define CR64_EID_SHIFT 16 |
|
- | 71 | #define CR64_EID_MASK 0xff0000 |
|
- | 72 | ||
- | 73 | static inline int ia64_get_cpu_id(void) |
|
- | 74 | { |
|
- | 75 | uint64_t cr64=cr64_read(); |
|
- | 76 | return ((CR64_ID_MASK)&cr64)>>CR64_ID_SHIFT; |
|
- | 77 | } |
|
- | 78 | ||
- | 79 | static inline int ia64_get_cpu_eid(void) |
|
- | 80 | { |
|
- | 81 | uint64_t cr64=cr64_read(); |
|
- | 82 | return ((CR64_EID_MASK)&cr64)>>CR64_EID_SHIFT; |
|
- | 83 | } |
|
- | 84 | ||
- | 85 | ||
- | 86 | static inline void ipi_send_ipi(int id, int eid, int intno) |
|
- | 87 | { |
|
- | 88 | (bootinfo->sapic)[2 * (id * 256 + eid)] = intno; |
|
- | 89 | srlz_d(); |
|
- | 90 | ||
- | 91 | } |
|
- | 92 | ||
66 | #endif |
93 | #endif |
67 | 94 | ||
68 | /** @} |
95 | /** @} |
69 | */ |
96 | */ |