aboutsummaryrefslogtreecommitdiffstats
path: root/arch/sparc64/kernel/sun4v_ivec.S
diff options
context:
space:
mode:
authorDavid S. Miller <davem@sunset.davemloft.net>2007-10-14 00:42:46 -0400
committerDavid S. Miller <davem@sunset.davemloft.net>2007-10-14 00:53:15 -0400
commiteb2d8d60327bec172ec80efbda94d0c492088204 (patch)
tree5c01deb8c251f8aa64cc3db2b95fd26f8ac285a6 /arch/sparc64/kernel/sun4v_ivec.S
parenta650d3839e7a68321e5b76264398a63019b0928b (diff)
[SPARC64]: Access ivector_table[] using physical addresses.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'arch/sparc64/kernel/sun4v_ivec.S')
-rw-r--r--arch/sparc64/kernel/sun4v_ivec.S16
1 files changed, 7 insertions, 9 deletions
diff --git a/arch/sparc64/kernel/sun4v_ivec.S b/arch/sparc64/kernel/sun4v_ivec.S
index e3e9d4c1574b..16d306445912 100644
--- a/arch/sparc64/kernel/sun4v_ivec.S
+++ b/arch/sparc64/kernel/sun4v_ivec.S
@@ -96,19 +96,17 @@ sun4v_dev_mondo:
96 stxa %g2, [%g4] ASI_QUEUE 96 stxa %g2, [%g4] ASI_QUEUE
97 membar #Sync 97 membar #Sync
98 98
99 /* Get &__irq_work[smp_processor_id()] into %g1. */ 99 TRAP_LOAD_IRQ_WORK_PA(%g1, %g4)
100 TRAP_LOAD_IRQ_WORK(%g1, %g4)
101 100
102 /* Get &ivector_table[IVEC] into %g4. */ 101 /* Get __pa(&ivector_table[IVEC]) into %g4. */
103 sethi %hi(ivector_table), %g4 102 sethi %hi(ivector_table_pa), %g4
103 ldx [%g4 + %lo(ivector_table_pa)], %g4
104 sllx %g3, 4, %g3 104 sllx %g3, 4, %g3
105 or %g4, %lo(ivector_table), %g4
106 add %g4, %g3, %g4 105 add %g4, %g3, %g4
107 106
108 /* Insert ivector_table[] entry into __irq_work[] queue. */ 107 ldx [%g1], %g2
109 ldx [%g1], %g2 /* g2 = irq_work(cpu) */ 108 stxa %g2, [%g4] ASI_PHYS_USE_EC
110 stx %g2, [%g4 + 0x00] /* bucket->irq_chain = g2 */ 109 stx %g4, [%g1]
111 stx %g4, [%g1] /* irq_work(cpu) = bucket */
112 110
113 /* Signal the interrupt by setting (1 << pil) in %softint. */ 111 /* Signal the interrupt by setting (1 << pil) in %softint. */
114 wr %g0, 1 << PIL_DEVICE_IRQ, %set_softint 112 wr %g0, 1 << PIL_DEVICE_IRQ, %set_softint