Merge tag 'm68k-for-v4.18-tag1' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k
Pull m68k updates from Geert Uytterhoeven: - a few time-related fixes: - off-by-one calendar month on some classes of machines - Y2038 preparation - build fix for ndelay() being called with a 64-bit type - revive 64-bit get_user(), which is used by some Android code - defconfig updates - fix for a long-standing fatal bug in iounmap() on '020/030, which was actually fixed in 2.4.23, but never in 2.5.x and later - default DMA mask to avoid warning splats - minor fixes and cleanups * tag 'm68k-for-v4.18-tag1' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k: m68k: Set default dma mask for platform devices m68k/mm: Adjust VM area to be unmapped by gap size for __iounmap() m68k/defconfig: Update defconfigs for v4.17-rc3 m68k/uaccess: Revive 64-bit get_user() m68k: Implement ndelay() as an inline function to force type checking/casting zorro: Add a blank line after declarations m68k: Use read_persistent_clock64() consistently m68k: Fix off-by-one calendar month m68k: Fix style, spelling, and grammar in siginfo_build_tests() m68k/mac: Fix SWIM memory resource end address
This commit is contained in:
@@ -49,8 +49,6 @@ extern void __bad_udelay(void);
|
||||
* The simpler m68k and ColdFire processors do not have a 32*32->64
|
||||
* multiply instruction. So we need to handle them a little differently.
|
||||
* We use a bit of shifting and a single 32*32->32 multiply to get close.
|
||||
* This is a macro so that the const version can factor out the first
|
||||
* multiply and shift.
|
||||
*/
|
||||
#define HZSCALE (268435456 / (1000000 / HZ))
|
||||
|
||||
@@ -115,6 +113,13 @@ static inline void __udelay(unsigned long usecs)
|
||||
*/
|
||||
#define HZSCALE (268435456 / (1000000 / HZ))
|
||||
|
||||
#define ndelay(n) __delay(DIV_ROUND_UP((n) * ((((HZSCALE) >> 11) * (loops_per_jiffy >> 11)) >> 6), 1000))
|
||||
static inline void ndelay(unsigned long nsec)
|
||||
{
|
||||
__delay(DIV_ROUND_UP(nsec *
|
||||
((((HZSCALE) >> 11) *
|
||||
(loops_per_jiffy >> 11)) >> 6),
|
||||
1000));
|
||||
}
|
||||
#define ndelay(n) ndelay(n)
|
||||
|
||||
#endif /* defined(_M68K_DELAY_H) */
|
||||
|
@@ -141,10 +141,12 @@ asm volatile ("\n" \
|
||||
case 4: \
|
||||
__get_user_asm(__gu_err, x, ptr, u32, l, r, -EFAULT); \
|
||||
break; \
|
||||
/* case 8: disabled because gcc-4.1 has a broken typeof \
|
||||
{ \
|
||||
const void *__gu_ptr = (ptr); \
|
||||
u64 __gu_val; \
|
||||
case 8: { \
|
||||
const void *__gu_ptr = (ptr); \
|
||||
union { \
|
||||
u64 l; \
|
||||
__typeof__(*(ptr)) t; \
|
||||
} __gu_val; \
|
||||
asm volatile ("\n" \
|
||||
"1: "MOVES".l (%2)+,%1\n" \
|
||||
"2: "MOVES".l (%2),%R1\n" \
|
||||
@@ -162,13 +164,13 @@ asm volatile ("\n" \
|
||||
" .long 1b,10b\n" \
|
||||
" .long 2b,10b\n" \
|
||||
" .previous" \
|
||||
: "+d" (__gu_err), "=&r" (__gu_val), \
|
||||
: "+d" (__gu_err), "=&r" (__gu_val.l), \
|
||||
"+a" (__gu_ptr) \
|
||||
: "i" (-EFAULT) \
|
||||
: "memory"); \
|
||||
(x) = (__force typeof(*(ptr)))__gu_val; \
|
||||
(x) = __gu_val.t; \
|
||||
break; \
|
||||
} */ \
|
||||
} \
|
||||
default: \
|
||||
__gu_err = __get_user_bad(); \
|
||||
break; \
|
||||
|
Reference in New Issue
Block a user