Lines Matching refs:sa

72 	struct sapic *sa;
76 sa = ia64_sapics[i];
77 if (irq >= sa->sa_base && irq <= sa->sa_limit)
78 return sa;
85 sapic_read(struct sapic *sa, int which)
87 vaddr_t reg = sa->sa_registers;
95 sapic_write(struct sapic *sa, int which, uint32_t value)
97 vaddr_t reg = sa->sa_registers;
106 sapic_read_rte(struct sapic *sa, int which, struct sapic_rte *rte)
110 p[0] = sapic_read(sa, SAPIC_RTE_BASE + 2 * which);
111 p[1] = sapic_read(sa, SAPIC_RTE_BASE + 2 * which + 1);
115 sapic_write_rte(struct sapic *sa, int which, struct sapic_rte *rte)
119 sapic_write(sa, SAPIC_RTE_BASE + 2 * which, p[0]);
120 sapic_write(sa, SAPIC_RTE_BASE + 2 * which + 1, p[1]);
127 struct sapic *sa;
129 sa = sapic_lookup(irq);
130 if (sa == NULL)
133 mutex_enter(&sa->sa_mtx);
134 sapic_read_rte(sa, irq - sa->sa_base, &rte);
137 sapic_write_rte(sa, irq - sa->sa_base, &rte);
138 mutex_exit(&sa->sa_mtx);
146 struct sapic *sa;
149 sa = malloc(sizeof(struct sapic), M_SAPIC, M_ZERO | M_NOWAIT);
150 if (sa == NULL)
153 sa->sa_id = id;
154 sa->sa_base = base;
155 sa->sa_registers = IA64_PHYS_TO_RR6(address);
157 mutex_init(&sa->sa_mtx, MUTEX_SPIN, IPL_HIGH);
159 sa->sa_limit = base + ((sapic_read(sa, SAPIC_VERSION) >> 16) & 0xff);
161 ia64_sapics[ia64_sapic_count++] = sa;
170 for (i = base; i <= sa->sa_limit; i++) {
175 sapic_write_rte(sa, i - base, &rte);
178 return sa;
182 sapic_enable(struct sapic *sa, u_int irq, u_int vector)
187 mutex_enter(&sa->sa_mtx);
188 sapic_read_rte(sa, irq - sa->sa_base, &rte);
194 sapic_write_rte(sa, irq - sa->sa_base, &rte);
195 mutex_exit(&sa->sa_mtx);
200 sapic_eoi(struct sapic *sa, u_int vector)
202 vaddr_t reg = sa->sa_registers;
210 sapic_mask(struct sapic *sa, u_int irq)
214 mutex_enter(&sa->sa_mtx);
215 sapic_read_rte(sa, irq - sa->sa_base, &rte);
217 sapic_write_rte(sa, irq - sa->sa_base, &rte);
218 mutex_exit(&sa->sa_mtx);
223 sapic_unmask(struct sapic *sa, u_int irq)
227 mutex_enter(&sa->sa_mtx);
228 sapic_read_rte(sa, irq - sa->sa_base, &rte);
230 sapic_write_rte(sa, irq - sa->sa_base, &rte);
231 mutex_exit(&sa->sa_mtx);
240 sapic_print(struct sapic *sa, u_int irq)
244 db_printf("sapic=%u, irq=%u: ", sa->sa_id, irq);
245 sapic_read_rte(sa, irq - sa->sa_base, &rte);