diff options
author | David S. Miller <davem@sunset.davemloft.net> | 2007-10-14 00:42:46 -0400 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2007-10-14 00:53:15 -0400 |
commit | eb2d8d60327bec172ec80efbda94d0c492088204 (patch) | |
tree | 5c01deb8c251f8aa64cc3db2b95fd26f8ac285a6 /arch/sparc64/kernel/sun4v_ivec.S | |
parent | a650d3839e7a68321e5b76264398a63019b0928b (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.S | 16 |
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 |