Changeset a35b458 in mainline for kernel/arch/amd64/src/interrupt.c
- Timestamp:
- 2018-03-02T20:10:49Z (7 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- f1380b7
- Parents:
- 3061bc1
- git-author:
- Jiří Zárevúcky <zarevucky.jiri@…> (2018-02-28 17:38:31)
- git-committer:
- Jiří Zárevúcky <zarevucky.jiri@…> (2018-03-02 20:10:49)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/amd64/src/interrupt.c
r3061bc1 ra35b458 70 70 "rfl=%0#18" PRIx64 "\terr=%0#18" PRIx64 "\n", 71 71 istate->cs, istate->rip, istate->rflags, istate->error_word); 72 72 73 73 if (istate_from_uspace(istate)) 74 74 log_printf("ss =%0#18" PRIx64 "\n", istate->ss); 75 75 76 76 log_printf("rax=%0#18" PRIx64 "\trbx=%0#18" PRIx64 "\t" 77 77 "rcx=%0#18" PRIx64 "\trdx=%0#18" PRIx64 "\n", 78 78 istate->rax, istate->rbx, istate->rcx, istate->rdx); 79 79 80 80 log_printf("rsi=%0#18" PRIx64 "\trdi=%0#18" PRIx64 "\t" 81 81 "rbp=%0#18" PRIx64 "\trsp=%0#18" PRIx64 "\n", … … 83 83 istate_from_uspace(istate) ? istate->rsp : 84 84 (uintptr_t) &istate->rsp); 85 85 86 86 log_printf("r8 =%0#18" PRIx64 "\tr9 =%0#18" PRIx64 "\t" 87 87 "r10=%0#18" PRIx64 "\tr11=%0#18" PRIx64 "\n", 88 88 istate->r8, istate->r9, istate->r10, istate->r11); 89 89 90 90 log_printf("r12=%0#18" PRIx64 "\tr13=%0#18" PRIx64 "\t" 91 91 "r14=%0#18" PRIx64 "\tr15=%0#18" PRIx64 "\n", … … 123 123 size_t ver = TASK->arch.iomapver; 124 124 irq_spinlock_unlock(&TASK->lock, false); 125 125 126 126 if (CPU->arch.iomapver_copy != ver) { 127 127 /* … … 176 176 { 177 177 assert(n >= IVT_IRQBASE); 178 178 179 179 unsigned int inum = n - IVT_IRQBASE; 180 180 bool ack = false; 181 181 assert(inum < IRQ_COUNT); 182 182 assert((inum != IRQ_PIC_SPUR) && (inum != IRQ_PIC1)); 183 183 184 184 irq_t *irq = irq_dispatch_and_lock(inum); 185 185 if (irq) { … … 187 187 * The IRQ handler was found. 188 188 */ 189 189 190 190 if (irq->preack) { 191 191 /* Send EOI before processing the interrupt */ … … 204 204 #endif 205 205 } 206 206 207 207 if (!ack) 208 208 trap_virtual_eoi(); … … 212 212 { 213 213 unsigned int i; 214 214 215 215 for (i = 0; i < IVT_ITEMS; i++) 216 216 exc_register(i, "null", false, (iroutine_t) null_interrupt); 217 217 218 218 for (i = 0; i < IRQ_COUNT; i++) { 219 219 if ((i != IRQ_PIC_SPUR) && (i != IRQ_PIC1)) … … 221 221 (iroutine_t) irq_interrupt); 222 222 } 223 223 224 224 exc_register(VECTOR_DE, "de_fault", true, (iroutine_t) de_fault); 225 225 exc_register(VECTOR_NM, "nm_fault", true, (iroutine_t) nm_fault); 226 226 exc_register(VECTOR_SS, "ss_fault", true, (iroutine_t) ss_fault); 227 227 exc_register(VECTOR_GP, "gp_fault", true, (iroutine_t) gp_fault); 228 228 229 229 #ifdef CONFIG_SMP 230 230 exc_register(VECTOR_TLB_SHOOTDOWN_IPI, "tlb_shootdown", true,
Note:
See TracChangeset
for help on using the changeset viewer.