diff options
author | Thomas Gleixner <tglx@linutronix.de> | 2009-12-08 10:16:41 -0500 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2009-12-14 17:55:32 -0500 |
commit | 5f6384c5fb6bfc9aac506e058974d3ba293951b3 (patch) | |
tree | 516b305d715f0c827c3764b9a4e8fc15145a8d25 /arch/alpha | |
parent | c2f21ce2e31286a0a32f8da0a7856e9ca1122ef3 (diff) |
alpha: Fix fallout from locking changes
spin_* functions are mostly static inline now. That causes the alpha
compile to fail:
CC arch/alpha/kernel/sys_sable.o
cc1: warnings being treated as errors
In file included from arch/alpha/kernel/sys_sable.c:25:
arch/alpha/include/asm/core_t2.h: In function 't2_readb':
arch/alpha/include/asm/core_t2.h:451: error: 'spinlock_check' is static but \
used in inline function 't2_readb' which is not static
arch/alpha/include/asm/core_t2.h:456: error: 'spin_unlock_irqrestore' is \
static but used in inline function 't2_readb' which is not static
That's caused by the "extern inline" magic which is used for the
subarch specific read/write[bwl] functions. I tried to distangle the
uncountable macro onion layers, but failed miserably.
Last resort solution: switch the t2_hae_lock to raw_spinlock_t so the
lock functions are pure macros and function calls again.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Acked-by: Peter Zijlstra <peterz@infradead.org>
Acked-by: Ingo Molnar <mingo@elte.hu>
Cc: Richard Henderson <rth@twiddle.net>
Cc: linux-alpha@vger.kernel.org
Diffstat (limited to 'arch/alpha')
-rw-r--r-- | arch/alpha/include/asm/core_t2.h | 34 | ||||
-rw-r--r-- | arch/alpha/kernel/core_t2.c | 2 |
2 files changed, 18 insertions, 18 deletions
diff --git a/arch/alpha/include/asm/core_t2.h b/arch/alpha/include/asm/core_t2.h index 46bfff58f670..471c07292e0b 100644 --- a/arch/alpha/include/asm/core_t2.h +++ b/arch/alpha/include/asm/core_t2.h | |||
@@ -435,7 +435,7 @@ extern inline void t2_outl(u32 b, unsigned long addr) | |||
435 | set_hae(msb); \ | 435 | set_hae(msb); \ |
436 | } | 436 | } |
437 | 437 | ||
438 | extern spinlock_t t2_hae_lock; | 438 | extern raw_spinlock_t t2_hae_lock; |
439 | 439 | ||
440 | /* | 440 | /* |
441 | * NOTE: take T2_DENSE_MEM off in each readX/writeX routine, since | 441 | * NOTE: take T2_DENSE_MEM off in each readX/writeX routine, since |
@@ -448,12 +448,12 @@ __EXTERN_INLINE u8 t2_readb(const volatile void __iomem *xaddr) | |||
448 | unsigned long addr = (unsigned long) xaddr - T2_DENSE_MEM; | 448 | unsigned long addr = (unsigned long) xaddr - T2_DENSE_MEM; |
449 | unsigned long result, msb; | 449 | unsigned long result, msb; |
450 | unsigned long flags; | 450 | unsigned long flags; |
451 | spin_lock_irqsave(&t2_hae_lock, flags); | 451 | raw_spin_lock_irqsave(&t2_hae_lock, flags); |
452 | 452 | ||
453 | t2_set_hae; | 453 | t2_set_hae; |
454 | 454 | ||
455 | result = *(vip) ((addr << 5) + T2_SPARSE_MEM + 0x00); | 455 | result = *(vip) ((addr << 5) + T2_SPARSE_MEM + 0x00); |
456 | spin_unlock_irqrestore(&t2_hae_lock, flags); | 456 | raw_spin_unlock_irqrestore(&t2_hae_lock, flags); |
457 | return __kernel_extbl(result, addr & 3); | 457 | return __kernel_extbl(result, addr & 3); |
458 | } | 458 | } |
459 | 459 | ||
@@ -462,12 +462,12 @@ __EXTERN_INLINE u16 t2_readw(const volatile void __iomem *xaddr) | |||
462 | unsigned long addr = (unsigned long) xaddr - T2_DENSE_MEM; | 462 | unsigned long addr = (unsigned long) xaddr - T2_DENSE_MEM; |
463 | unsigned long result, msb; | 463 | unsigned long result, msb; |
464 | unsigned long flags; | 464 | unsigned long flags; |
465 | spin_lock_irqsave(&t2_hae_lock, flags); | 465 | raw_spin_lock_irqsave(&t2_hae_lock, flags); |
466 | 466 | ||
467 | t2_set_hae; | 467 | t2_set_hae; |
468 | 468 | ||
469 | result = *(vuip) ((addr << 5) + T2_SPARSE_MEM + 0x08); | 469 | result = *(vuip) ((addr << 5) + T2_SPARSE_MEM + 0x08); |
470 | spin_unlock_irqrestore(&t2_hae_lock, flags); | 470 | raw_spin_unlock_irqrestore(&t2_hae_lock, flags); |
471 | return __kernel_extwl(result, addr & 3); | 471 | return __kernel_extwl(result, addr & 3); |
472 | } | 472 | } |
473 | 473 | ||
@@ -480,12 +480,12 @@ __EXTERN_INLINE u32 t2_readl(const volatile void __iomem *xaddr) | |||
480 | unsigned long addr = (unsigned long) xaddr - T2_DENSE_MEM; | 480 | unsigned long addr = (unsigned long) xaddr - T2_DENSE_MEM; |
481 | unsigned long result, msb; | 481 | unsigned long result, msb; |
482 | unsigned long flags; | 482 | unsigned long flags; |
483 | spin_lock_irqsave(&t2_hae_lock, flags); | 483 | raw_spin_lock_irqsave(&t2_hae_lock, flags); |
484 | 484 | ||
485 | t2_set_hae; | 485 | t2_set_hae; |
486 | 486 | ||
487 | result = *(vuip) ((addr << 5) + T2_SPARSE_MEM + 0x18); | 487 | result = *(vuip) ((addr << 5) + T2_SPARSE_MEM + 0x18); |
488 | spin_unlock_irqrestore(&t2_hae_lock, flags); | 488 | raw_spin_unlock_irqrestore(&t2_hae_lock, flags); |
489 | return result & 0xffffffffUL; | 489 | return result & 0xffffffffUL; |
490 | } | 490 | } |
491 | 491 | ||
@@ -494,14 +494,14 @@ __EXTERN_INLINE u64 t2_readq(const volatile void __iomem *xaddr) | |||
494 | unsigned long addr = (unsigned long) xaddr - T2_DENSE_MEM; | 494 | unsigned long addr = (unsigned long) xaddr - T2_DENSE_MEM; |
495 | unsigned long r0, r1, work, msb; | 495 | unsigned long r0, r1, work, msb; |
496 | unsigned long flags; | 496 | unsigned long flags; |
497 | spin_lock_irqsave(&t2_hae_lock, flags); | 497 | raw_spin_lock_irqsave(&t2_hae_lock, flags); |
498 | 498 | ||
499 | t2_set_hae; | 499 | t2_set_hae; |
500 | 500 | ||
501 | work = (addr << 5) + T2_SPARSE_MEM + 0x18; | 501 | work = (addr << 5) + T2_SPARSE_MEM + 0x18; |
502 | r0 = *(vuip)(work); | 502 | r0 = *(vuip)(work); |
503 | r1 = *(vuip)(work + (4 << 5)); | 503 | r1 = *(vuip)(work + (4 << 5)); |
504 | spin_unlock_irqrestore(&t2_hae_lock, flags); | 504 | raw_spin_unlock_irqrestore(&t2_hae_lock, flags); |
505 | return r1 << 32 | r0; | 505 | return r1 << 32 | r0; |
506 | } | 506 | } |
507 | 507 | ||
@@ -510,13 +510,13 @@ __EXTERN_INLINE void t2_writeb(u8 b, volatile void __iomem *xaddr) | |||
510 | unsigned long addr = (unsigned long) xaddr - T2_DENSE_MEM; | 510 | unsigned long addr = (unsigned long) xaddr - T2_DENSE_MEM; |
511 | unsigned long msb, w; | 511 | unsigned long msb, w; |
512 | unsigned long flags; | 512 | unsigned long flags; |
513 | spin_lock_irqsave(&t2_hae_lock, flags); | 513 | raw_spin_lock_irqsave(&t2_hae_lock, flags); |
514 | 514 | ||
515 | t2_set_hae; | 515 | t2_set_hae; |
516 | 516 | ||
517 | w = __kernel_insbl(b, addr & 3); | 517 | w = __kernel_insbl(b, addr & 3); |
518 | *(vuip) ((addr << 5) + T2_SPARSE_MEM + 0x00) = w; | 518 | *(vuip) ((addr << 5) + T2_SPARSE_MEM + 0x00) = w; |
519 | spin_unlock_irqrestore(&t2_hae_lock, flags); | 519 | raw_spin_unlock_irqrestore(&t2_hae_lock, flags); |
520 | } | 520 | } |
521 | 521 | ||
522 | __EXTERN_INLINE void t2_writew(u16 b, volatile void __iomem *xaddr) | 522 | __EXTERN_INLINE void t2_writew(u16 b, volatile void __iomem *xaddr) |
@@ -524,13 +524,13 @@ __EXTERN_INLINE void t2_writew(u16 b, volatile void __iomem *xaddr) | |||
524 | unsigned long addr = (unsigned long) xaddr - T2_DENSE_MEM; | 524 | unsigned long addr = (unsigned long) xaddr - T2_DENSE_MEM; |
525 | unsigned long msb, w; | 525 | unsigned long msb, w; |
526 | unsigned long flags; | 526 | unsigned long flags; |
527 | spin_lock_irqsave(&t2_hae_lock, flags); | 527 | raw_spin_lock_irqsave(&t2_hae_lock, flags); |
528 | 528 | ||
529 | t2_set_hae; | 529 | t2_set_hae; |
530 | 530 | ||
531 | w = __kernel_inswl(b, addr & 3); | 531 | w = __kernel_inswl(b, addr & 3); |
532 | *(vuip) ((addr << 5) + T2_SPARSE_MEM + 0x08) = w; | 532 | *(vuip) ((addr << 5) + T2_SPARSE_MEM + 0x08) = w; |
533 | spin_unlock_irqrestore(&t2_hae_lock, flags); | 533 | raw_spin_unlock_irqrestore(&t2_hae_lock, flags); |
534 | } | 534 | } |
535 | 535 | ||
536 | /* | 536 | /* |
@@ -542,12 +542,12 @@ __EXTERN_INLINE void t2_writel(u32 b, volatile void __iomem *xaddr) | |||
542 | unsigned long addr = (unsigned long) xaddr - T2_DENSE_MEM; | 542 | unsigned long addr = (unsigned long) xaddr - T2_DENSE_MEM; |
543 | unsigned long msb; | 543 | unsigned long msb; |
544 | unsigned long flags; | 544 | unsigned long flags; |
545 | spin_lock_irqsave(&t2_hae_lock, flags); | 545 | raw_spin_lock_irqsave(&t2_hae_lock, flags); |
546 | 546 | ||
547 | t2_set_hae; | 547 | t2_set_hae; |
548 | 548 | ||
549 | *(vuip) ((addr << 5) + T2_SPARSE_MEM + 0x18) = b; | 549 | *(vuip) ((addr << 5) + T2_SPARSE_MEM + 0x18) = b; |
550 | spin_unlock_irqrestore(&t2_hae_lock, flags); | 550 | raw_spin_unlock_irqrestore(&t2_hae_lock, flags); |
551 | } | 551 | } |
552 | 552 | ||
553 | __EXTERN_INLINE void t2_writeq(u64 b, volatile void __iomem *xaddr) | 553 | __EXTERN_INLINE void t2_writeq(u64 b, volatile void __iomem *xaddr) |
@@ -555,14 +555,14 @@ __EXTERN_INLINE void t2_writeq(u64 b, volatile void __iomem *xaddr) | |||
555 | unsigned long addr = (unsigned long) xaddr - T2_DENSE_MEM; | 555 | unsigned long addr = (unsigned long) xaddr - T2_DENSE_MEM; |
556 | unsigned long msb, work; | 556 | unsigned long msb, work; |
557 | unsigned long flags; | 557 | unsigned long flags; |
558 | spin_lock_irqsave(&t2_hae_lock, flags); | 558 | raw_spin_lock_irqsave(&t2_hae_lock, flags); |
559 | 559 | ||
560 | t2_set_hae; | 560 | t2_set_hae; |
561 | 561 | ||
562 | work = (addr << 5) + T2_SPARSE_MEM + 0x18; | 562 | work = (addr << 5) + T2_SPARSE_MEM + 0x18; |
563 | *(vuip)work = b; | 563 | *(vuip)work = b; |
564 | *(vuip)(work + (4 << 5)) = b >> 32; | 564 | *(vuip)(work + (4 << 5)) = b >> 32; |
565 | spin_unlock_irqrestore(&t2_hae_lock, flags); | 565 | raw_spin_unlock_irqrestore(&t2_hae_lock, flags); |
566 | } | 566 | } |
567 | 567 | ||
568 | __EXTERN_INLINE void __iomem *t2_ioportmap(unsigned long addr) | 568 | __EXTERN_INLINE void __iomem *t2_ioportmap(unsigned long addr) |
diff --git a/arch/alpha/kernel/core_t2.c b/arch/alpha/kernel/core_t2.c index d9980d47ab81..e6d90568b65d 100644 --- a/arch/alpha/kernel/core_t2.c +++ b/arch/alpha/kernel/core_t2.c | |||
@@ -74,7 +74,7 @@ | |||
74 | # define DBG(args) | 74 | # define DBG(args) |
75 | #endif | 75 | #endif |
76 | 76 | ||
77 | DEFINE_SPINLOCK(t2_hae_lock); | 77 | DEFINE_RAW_SPINLOCK(t2_hae_lock); |
78 | 78 | ||
79 | static volatile unsigned int t2_mcheck_any_expected; | 79 | static volatile unsigned int t2_mcheck_any_expected; |
80 | static volatile unsigned int t2_mcheck_last_taken; | 80 | static volatile unsigned int t2_mcheck_last_taken; |