diff options
| author | Ingo Molnar <mingo@kernel.org> | 2013-12-17 09:27:08 -0500 |
|---|---|---|
| committer | Ingo Molnar <mingo@kernel.org> | 2013-12-17 09:27:08 -0500 |
| commit | bb799d3b980eb803ca2da4a4eefbd9308f8d988a (patch) | |
| tree | 69fbe0cd6d47b23a50f5e1d87bf7489532fae149 /arch/alpha/include | |
| parent | 919fc6e34831d1c2b58bfb5ae261dc3facc9b269 (diff) | |
| parent | 319e2e3f63c348a9b66db4667efa73178e18b17d (diff) | |
Merge tag 'v3.13-rc4' into core/locking
Merge Linux 3.13-rc4, to refresh this rather old tree with the latest fixes.
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'arch/alpha/include')
| -rw-r--r-- | arch/alpha/include/asm/machvec.h | 22 | ||||
| -rw-r--r-- | arch/alpha/include/asm/pal.h | 71 | ||||
| -rw-r--r-- | arch/alpha/include/asm/rtc.h | 11 | ||||
| -rw-r--r-- | arch/alpha/include/asm/string.h | 24 | ||||
| -rw-r--r-- | arch/alpha/include/uapi/asm/pal.h | 1 |
5 files changed, 103 insertions, 26 deletions
diff --git a/arch/alpha/include/asm/machvec.h b/arch/alpha/include/asm/machvec.h index 72dbf2359270..75cb3641ed2f 100644 --- a/arch/alpha/include/asm/machvec.h +++ b/arch/alpha/include/asm/machvec.h | |||
| @@ -33,6 +33,7 @@ struct alpha_machine_vector | |||
| 33 | 33 | ||
| 34 | int nr_irqs; | 34 | int nr_irqs; |
| 35 | int rtc_port; | 35 | int rtc_port; |
| 36 | int rtc_boot_cpu_only; | ||
| 36 | unsigned int max_asn; | 37 | unsigned int max_asn; |
| 37 | unsigned long max_isa_dma_address; | 38 | unsigned long max_isa_dma_address; |
| 38 | unsigned long irq_probe_mask; | 39 | unsigned long irq_probe_mask; |
| @@ -95,9 +96,6 @@ struct alpha_machine_vector | |||
| 95 | 96 | ||
| 96 | struct _alpha_agp_info *(*agp_info)(void); | 97 | struct _alpha_agp_info *(*agp_info)(void); |
| 97 | 98 | ||
| 98 | unsigned int (*rtc_get_time)(struct rtc_time *); | ||
| 99 | int (*rtc_set_time)(struct rtc_time *); | ||
| 100 | |||
| 101 | const char *vector_name; | 99 | const char *vector_name; |
| 102 | 100 | ||
| 103 | /* NUMA information */ | 101 | /* NUMA information */ |
| @@ -126,13 +124,19 @@ extern struct alpha_machine_vector alpha_mv; | |||
| 126 | 124 | ||
| 127 | #ifdef CONFIG_ALPHA_GENERIC | 125 | #ifdef CONFIG_ALPHA_GENERIC |
| 128 | extern int alpha_using_srm; | 126 | extern int alpha_using_srm; |
| 127 | extern int alpha_using_qemu; | ||
| 129 | #else | 128 | #else |
| 130 | #ifdef CONFIG_ALPHA_SRM | 129 | # ifdef CONFIG_ALPHA_SRM |
| 131 | #define alpha_using_srm 1 | 130 | # define alpha_using_srm 1 |
| 132 | #else | 131 | # else |
| 133 | #define alpha_using_srm 0 | 132 | # define alpha_using_srm 0 |
| 134 | #endif | 133 | # endif |
| 134 | # ifdef CONFIG_ALPHA_QEMU | ||
| 135 | # define alpha_using_qemu 1 | ||
| 136 | # else | ||
| 137 | # define alpha_using_qemu 0 | ||
| 138 | # endif | ||
| 135 | #endif /* GENERIC */ | 139 | #endif /* GENERIC */ |
| 136 | 140 | ||
| 137 | #endif | 141 | #endif /* __KERNEL__ */ |
| 138 | #endif /* __ALPHA_MACHVEC_H */ | 142 | #endif /* __ALPHA_MACHVEC_H */ |
diff --git a/arch/alpha/include/asm/pal.h b/arch/alpha/include/asm/pal.h index 6fcd2b5b08f0..5422a47646fc 100644 --- a/arch/alpha/include/asm/pal.h +++ b/arch/alpha/include/asm/pal.h | |||
| @@ -89,6 +89,7 @@ __CALL_PAL_W1(wrmces, unsigned long); | |||
| 89 | __CALL_PAL_RW2(wrperfmon, unsigned long, unsigned long, unsigned long); | 89 | __CALL_PAL_RW2(wrperfmon, unsigned long, unsigned long, unsigned long); |
| 90 | __CALL_PAL_W1(wrusp, unsigned long); | 90 | __CALL_PAL_W1(wrusp, unsigned long); |
| 91 | __CALL_PAL_W1(wrvptptr, unsigned long); | 91 | __CALL_PAL_W1(wrvptptr, unsigned long); |
| 92 | __CALL_PAL_RW1(wtint, unsigned long, unsigned long); | ||
| 92 | 93 | ||
| 93 | /* | 94 | /* |
| 94 | * TB routines.. | 95 | * TB routines.. |
| @@ -111,5 +112,75 @@ __CALL_PAL_W1(wrvptptr, unsigned long); | |||
| 111 | #define tbiap() __tbi(-1, /* no second argument */) | 112 | #define tbiap() __tbi(-1, /* no second argument */) |
| 112 | #define tbia() __tbi(-2, /* no second argument */) | 113 | #define tbia() __tbi(-2, /* no second argument */) |
| 113 | 114 | ||
| 115 | /* | ||
| 116 | * QEMU Cserv routines.. | ||
| 117 | */ | ||
| 118 | |||
| 119 | static inline unsigned long | ||
| 120 | qemu_get_walltime(void) | ||
| 121 | { | ||
| 122 | register unsigned long v0 __asm__("$0"); | ||
| 123 | register unsigned long a0 __asm__("$16") = 3; | ||
| 124 | |||
| 125 | asm("call_pal %2 # cserve get_time" | ||
| 126 | : "=r"(v0), "+r"(a0) | ||
| 127 | : "i"(PAL_cserve) | ||
| 128 | : "$17", "$18", "$19", "$20", "$21"); | ||
| 129 | |||
| 130 | return v0; | ||
| 131 | } | ||
| 132 | |||
| 133 | static inline unsigned long | ||
| 134 | qemu_get_alarm(void) | ||
| 135 | { | ||
| 136 | register unsigned long v0 __asm__("$0"); | ||
| 137 | register unsigned long a0 __asm__("$16") = 4; | ||
| 138 | |||
| 139 | asm("call_pal %2 # cserve get_alarm" | ||
| 140 | : "=r"(v0), "+r"(a0) | ||
| 141 | : "i"(PAL_cserve) | ||
| 142 | : "$17", "$18", "$19", "$20", "$21"); | ||
| 143 | |||
| 144 | return v0; | ||
| 145 | } | ||
| 146 | |||
| 147 | static inline void | ||
| 148 | qemu_set_alarm_rel(unsigned long expire) | ||
| 149 | { | ||
| 150 | register unsigned long a0 __asm__("$16") = 5; | ||
| 151 | register unsigned long a1 __asm__("$17") = expire; | ||
| 152 | |||
| 153 | asm volatile("call_pal %2 # cserve set_alarm_rel" | ||
| 154 | : "+r"(a0), "+r"(a1) | ||
| 155 | : "i"(PAL_cserve) | ||
| 156 | : "$0", "$18", "$19", "$20", "$21"); | ||
| 157 | } | ||
| 158 | |||
| 159 | static inline void | ||
| 160 | qemu_set_alarm_abs(unsigned long expire) | ||
| 161 | { | ||
| 162 | register unsigned long a0 __asm__("$16") = 6; | ||
| 163 | register unsigned long a1 __asm__("$17") = expire; | ||
| 164 | |||
| 165 | asm volatile("call_pal %2 # cserve set_alarm_abs" | ||
| 166 | : "+r"(a0), "+r"(a1) | ||
| 167 | : "i"(PAL_cserve) | ||
| 168 | : "$0", "$18", "$19", "$20", "$21"); | ||
| 169 | } | ||
| 170 | |||
| 171 | static inline unsigned long | ||
| 172 | qemu_get_vmtime(void) | ||
| 173 | { | ||
| 174 | register unsigned long v0 __asm__("$0"); | ||
| 175 | register unsigned long a0 __asm__("$16") = 7; | ||
| 176 | |||
| 177 | asm("call_pal %2 # cserve get_time" | ||
| 178 | : "=r"(v0), "+r"(a0) | ||
| 179 | : "i"(PAL_cserve) | ||
| 180 | : "$17", "$18", "$19", "$20", "$21"); | ||
| 181 | |||
| 182 | return v0; | ||
| 183 | } | ||
| 184 | |||
| 114 | #endif /* !__ASSEMBLY__ */ | 185 | #endif /* !__ASSEMBLY__ */ |
| 115 | #endif /* __ALPHA_PAL_H */ | 186 | #endif /* __ALPHA_PAL_H */ |
diff --git a/arch/alpha/include/asm/rtc.h b/arch/alpha/include/asm/rtc.h index d70408d36677..f71c3b0ed360 100644 --- a/arch/alpha/include/asm/rtc.h +++ b/arch/alpha/include/asm/rtc.h | |||
| @@ -1,12 +1 @@ | |||
| 1 | #ifndef _ALPHA_RTC_H | ||
| 2 | #define _ALPHA_RTC_H | ||
| 3 | |||
| 4 | #if defined(CONFIG_ALPHA_MARVEL) && defined(CONFIG_SMP) \ | ||
| 5 | || defined(CONFIG_ALPHA_GENERIC) | ||
| 6 | # define get_rtc_time alpha_mv.rtc_get_time | ||
| 7 | # define set_rtc_time alpha_mv.rtc_set_time | ||
| 8 | #endif | ||
| 9 | |||
| 10 | #include <asm-generic/rtc.h> | #include <asm-generic/rtc.h> | |
| 11 | |||
| 12 | #endif | ||
diff --git a/arch/alpha/include/asm/string.h b/arch/alpha/include/asm/string.h index b02b8a282940..c2911f591704 100644 --- a/arch/alpha/include/asm/string.h +++ b/arch/alpha/include/asm/string.h | |||
| @@ -22,15 +22,27 @@ extern void * __memcpy(void *, const void *, size_t); | |||
| 22 | 22 | ||
| 23 | #define __HAVE_ARCH_MEMSET | 23 | #define __HAVE_ARCH_MEMSET |
| 24 | extern void * __constant_c_memset(void *, unsigned long, size_t); | 24 | extern void * __constant_c_memset(void *, unsigned long, size_t); |
| 25 | extern void * ___memset(void *, int, size_t); | ||
| 25 | extern void * __memset(void *, int, size_t); | 26 | extern void * __memset(void *, int, size_t); |
| 26 | extern void * memset(void *, int, size_t); | 27 | extern void * memset(void *, int, size_t); |
| 27 | 28 | ||
| 28 | #define memset(s, c, n) \ | 29 | /* For gcc 3.x, we cannot have the inline function named "memset" because |
| 29 | (__builtin_constant_p(c) \ | 30 | the __builtin_memset will attempt to resolve to the inline as well, |
| 30 | ? (__builtin_constant_p(n) && (c) == 0 \ | 31 | leading to a "sorry" about unimplemented recursive inlining. */ |
| 31 | ? __builtin_memset((s),0,(n)) \ | 32 | extern inline void *__memset(void *s, int c, size_t n) |
| 32 | : __constant_c_memset((s),0x0101010101010101UL*(unsigned char)(c),(n))) \ | 33 | { |
| 33 | : __memset((s),(c),(n))) | 34 | if (__builtin_constant_p(c)) { |
| 35 | if (__builtin_constant_p(n)) { | ||
| 36 | return __builtin_memset(s, c, n); | ||
| 37 | } else { | ||
| 38 | unsigned long c8 = (c & 0xff) * 0x0101010101010101UL; | ||
| 39 | return __constant_c_memset(s, c8, n); | ||
| 40 | } | ||
| 41 | } | ||
| 42 | return ___memset(s, c, n); | ||
| 43 | } | ||
| 44 | |||
| 45 | #define memset __memset | ||
| 34 | 46 | ||
| 35 | #define __HAVE_ARCH_STRCPY | 47 | #define __HAVE_ARCH_STRCPY |
| 36 | extern char * strcpy(char *,const char *); | 48 | extern char * strcpy(char *,const char *); |
diff --git a/arch/alpha/include/uapi/asm/pal.h b/arch/alpha/include/uapi/asm/pal.h index 3c0ce08e5f59..dfc8140b9088 100644 --- a/arch/alpha/include/uapi/asm/pal.h +++ b/arch/alpha/include/uapi/asm/pal.h | |||
| @@ -46,6 +46,7 @@ | |||
| 46 | #define PAL_rdusp 58 | 46 | #define PAL_rdusp 58 |
| 47 | #define PAL_whami 60 | 47 | #define PAL_whami 60 |
| 48 | #define PAL_retsys 61 | 48 | #define PAL_retsys 61 |
| 49 | #define PAL_wtint 62 | ||
| 49 | #define PAL_rti 63 | 50 | #define PAL_rti 63 |
| 50 | 51 | ||
| 51 | 52 | ||
