diff options
Diffstat (limited to 'include/asm-alpha')
-rw-r--r-- | include/asm-alpha/core_t2.h | 26 |
1 files changed, 16 insertions, 10 deletions
diff --git a/include/asm-alpha/core_t2.h b/include/asm-alpha/core_t2.h index 457c34b6eb09..90e6b5d6c214 100644 --- a/include/asm-alpha/core_t2.h +++ b/include/asm-alpha/core_t2.h | |||
@@ -437,9 +437,15 @@ static inline void t2_outl(u32 b, unsigned long addr) | |||
437 | 437 | ||
438 | static DEFINE_SPINLOCK(t2_hae_lock); | 438 | static DEFINE_SPINLOCK(t2_hae_lock); |
439 | 439 | ||
440 | /* | ||
441 | * NOTE: take T2_DENSE_MEM off in each readX/writeX routine, since | ||
442 | * they may be called directly, rather than through the | ||
443 | * ioreadNN/iowriteNN routines. | ||
444 | */ | ||
445 | |||
440 | __EXTERN_INLINE u8 t2_readb(const volatile void __iomem *xaddr) | 446 | __EXTERN_INLINE u8 t2_readb(const volatile void __iomem *xaddr) |
441 | { | 447 | { |
442 | unsigned long addr = (unsigned long) xaddr; | 448 | unsigned long addr = (unsigned long) xaddr - T2_DENSE_MEM; |
443 | unsigned long result, msb; | 449 | unsigned long result, msb; |
444 | unsigned long flags; | 450 | unsigned long flags; |
445 | spin_lock_irqsave(&t2_hae_lock, flags); | 451 | spin_lock_irqsave(&t2_hae_lock, flags); |
@@ -453,7 +459,7 @@ __EXTERN_INLINE u8 t2_readb(const volatile void __iomem *xaddr) | |||
453 | 459 | ||
454 | __EXTERN_INLINE u16 t2_readw(const volatile void __iomem *xaddr) | 460 | __EXTERN_INLINE u16 t2_readw(const volatile void __iomem *xaddr) |
455 | { | 461 | { |
456 | unsigned long addr = (unsigned long) xaddr; | 462 | unsigned long addr = (unsigned long) xaddr - T2_DENSE_MEM; |
457 | unsigned long result, msb; | 463 | unsigned long result, msb; |
458 | unsigned long flags; | 464 | unsigned long flags; |
459 | spin_lock_irqsave(&t2_hae_lock, flags); | 465 | spin_lock_irqsave(&t2_hae_lock, flags); |
@@ -471,7 +477,7 @@ __EXTERN_INLINE u16 t2_readw(const volatile void __iomem *xaddr) | |||
471 | */ | 477 | */ |
472 | __EXTERN_INLINE u32 t2_readl(const volatile void __iomem *xaddr) | 478 | __EXTERN_INLINE u32 t2_readl(const volatile void __iomem *xaddr) |
473 | { | 479 | { |
474 | unsigned long addr = (unsigned long) xaddr; | 480 | unsigned long addr = (unsigned long) xaddr - T2_DENSE_MEM; |
475 | unsigned long result, msb; | 481 | unsigned long result, msb; |
476 | unsigned long flags; | 482 | unsigned long flags; |
477 | spin_lock_irqsave(&t2_hae_lock, flags); | 483 | spin_lock_irqsave(&t2_hae_lock, flags); |
@@ -485,7 +491,7 @@ __EXTERN_INLINE u32 t2_readl(const volatile void __iomem *xaddr) | |||
485 | 491 | ||
486 | __EXTERN_INLINE u64 t2_readq(const volatile void __iomem *xaddr) | 492 | __EXTERN_INLINE u64 t2_readq(const volatile void __iomem *xaddr) |
487 | { | 493 | { |
488 | unsigned long addr = (unsigned long) xaddr; | 494 | unsigned long addr = (unsigned long) xaddr - T2_DENSE_MEM; |
489 | unsigned long r0, r1, work, msb; | 495 | unsigned long r0, r1, work, msb; |
490 | unsigned long flags; | 496 | unsigned long flags; |
491 | spin_lock_irqsave(&t2_hae_lock, flags); | 497 | spin_lock_irqsave(&t2_hae_lock, flags); |
@@ -501,7 +507,7 @@ __EXTERN_INLINE u64 t2_readq(const volatile void __iomem *xaddr) | |||
501 | 507 | ||
502 | __EXTERN_INLINE void t2_writeb(u8 b, volatile void __iomem *xaddr) | 508 | __EXTERN_INLINE void t2_writeb(u8 b, volatile void __iomem *xaddr) |
503 | { | 509 | { |
504 | unsigned long addr = (unsigned long) xaddr; | 510 | unsigned long addr = (unsigned long) xaddr - T2_DENSE_MEM; |
505 | unsigned long msb, w; | 511 | unsigned long msb, w; |
506 | unsigned long flags; | 512 | unsigned long flags; |
507 | spin_lock_irqsave(&t2_hae_lock, flags); | 513 | spin_lock_irqsave(&t2_hae_lock, flags); |
@@ -515,7 +521,7 @@ __EXTERN_INLINE void t2_writeb(u8 b, volatile void __iomem *xaddr) | |||
515 | 521 | ||
516 | __EXTERN_INLINE void t2_writew(u16 b, volatile void __iomem *xaddr) | 522 | __EXTERN_INLINE void t2_writew(u16 b, volatile void __iomem *xaddr) |
517 | { | 523 | { |
518 | unsigned long addr = (unsigned long) xaddr; | 524 | unsigned long addr = (unsigned long) xaddr - T2_DENSE_MEM; |
519 | unsigned long msb, w; | 525 | unsigned long msb, w; |
520 | unsigned long flags; | 526 | unsigned long flags; |
521 | spin_lock_irqsave(&t2_hae_lock, flags); | 527 | spin_lock_irqsave(&t2_hae_lock, flags); |
@@ -533,7 +539,7 @@ __EXTERN_INLINE void t2_writew(u16 b, volatile void __iomem *xaddr) | |||
533 | */ | 539 | */ |
534 | __EXTERN_INLINE void t2_writel(u32 b, volatile void __iomem *xaddr) | 540 | __EXTERN_INLINE void t2_writel(u32 b, volatile void __iomem *xaddr) |
535 | { | 541 | { |
536 | unsigned long addr = (unsigned long) xaddr; | 542 | unsigned long addr = (unsigned long) xaddr - T2_DENSE_MEM; |
537 | unsigned long msb; | 543 | unsigned long msb; |
538 | unsigned long flags; | 544 | unsigned long flags; |
539 | spin_lock_irqsave(&t2_hae_lock, flags); | 545 | spin_lock_irqsave(&t2_hae_lock, flags); |
@@ -546,7 +552,7 @@ __EXTERN_INLINE void t2_writel(u32 b, volatile void __iomem *xaddr) | |||
546 | 552 | ||
547 | __EXTERN_INLINE void t2_writeq(u64 b, volatile void __iomem *xaddr) | 553 | __EXTERN_INLINE void t2_writeq(u64 b, volatile void __iomem *xaddr) |
548 | { | 554 | { |
549 | unsigned long addr = (unsigned long) xaddr; | 555 | unsigned long addr = (unsigned long) xaddr - T2_DENSE_MEM; |
550 | unsigned long msb, work; | 556 | unsigned long msb, work; |
551 | unsigned long flags; | 557 | unsigned long flags; |
552 | spin_lock_irqsave(&t2_hae_lock, flags); | 558 | spin_lock_irqsave(&t2_hae_lock, flags); |
@@ -587,14 +593,14 @@ __EXTERN_INLINE int t2_is_mmio(const volatile void __iomem *addr) | |||
587 | __EXTERN_INLINE unsigned int t2_ioread##NS(void __iomem *xaddr) \ | 593 | __EXTERN_INLINE unsigned int t2_ioread##NS(void __iomem *xaddr) \ |
588 | { \ | 594 | { \ |
589 | if (t2_is_mmio(xaddr)) \ | 595 | if (t2_is_mmio(xaddr)) \ |
590 | return t2_read##OS(xaddr - T2_DENSE_MEM); \ | 596 | return t2_read##OS(xaddr); \ |
591 | else \ | 597 | else \ |
592 | return t2_in##OS((unsigned long)xaddr - T2_IO); \ | 598 | return t2_in##OS((unsigned long)xaddr - T2_IO); \ |
593 | } \ | 599 | } \ |
594 | __EXTERN_INLINE void t2_iowrite##NS(u##NS b, void __iomem *xaddr) \ | 600 | __EXTERN_INLINE void t2_iowrite##NS(u##NS b, void __iomem *xaddr) \ |
595 | { \ | 601 | { \ |
596 | if (t2_is_mmio(xaddr)) \ | 602 | if (t2_is_mmio(xaddr)) \ |
597 | t2_write##OS(b, xaddr - T2_DENSE_MEM); \ | 603 | t2_write##OS(b, xaddr); \ |
598 | else \ | 604 | else \ |
599 | t2_out##OS(b, (unsigned long)xaddr - T2_IO); \ | 605 | t2_out##OS(b, (unsigned long)xaddr - T2_IO); \ |
600 | } | 606 | } |