Changeset 9928240 in mainline
- Timestamp:
- 2014-10-12T11:18:49Z (10 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 416ef49
- Parents:
- 0b49d4e
- Location:
- kernel/arch/ia64
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/ia64/include/arch/interrupt.h
r0b49d4e r9928240 36 36 #define KERN_ia64_INTERRUPT_H_ 37 37 38 #ifndef __ASM__ 38 39 #include <typedefs.h> 39 40 #include <arch/istate.h> 41 #endif 42 43 #define EXC_ALT_ITLB_FAULT 0xc 44 #define EXC_ALT_DTLB_FAULT 0x10 45 #define EXC_NESTED_TLB_FAULT 0x14 46 #define EXC_DATA_D_BIT_FAULT 0x20 47 #define EXC_INST_A_BIT_FAULT 0x24 48 #define EXC_DATA_A_BIT_FAULT 0x28 49 #define EXC_BREAK_INSTRUCTION 0x2c 50 #define EXC_EXT_INTERRUPT 0x30 51 #define EXC_PAGE_NOT_PRESENT 0x50 52 #define EXC_DATA_AR_FAULT 0x53 53 #define EXC_GENERAL_EXCEPTION 0x54 54 #define EXC_DISABLED_FP_REG 0x55 55 #define EXC_SPECULATION 0x57 40 56 41 57 /** ia64 has 256 INRs. */ 42 58 #define INR_COUNT 256 43 59 44 /* 45 * We need to keep this just to compile. 46 * We might eventually move interrupt/ stuff 47 * to genarch. 48 */ 49 #define IVT_ITEMS 0 60 #define IVT_ITEMS 128 50 61 #define IVT_FIRST 0 51 62 … … 72 83 #define EOI 0 /**< The actual value doesn't matter. */ 73 84 85 #ifndef __ASM__ 74 86 extern void *ivt; 75 87 76 extern void general_exception(uint64_t, istate_t *); 77 extern int break_instruction(uint64_t, istate_t *); 78 extern void universal_handler(uint64_t, istate_t *); 79 extern void nop_handler(uint64_t, istate_t *); 80 extern void external_interrupt(uint64_t, istate_t *); 81 extern void disabled_fp_register(uint64_t, istate_t *); 88 extern void general_exception(unsigned int, istate_t *); 89 extern sysarg_t break_instruction(unsigned int, istate_t *); 90 extern void universal_handler(unsigned int, istate_t *); 91 extern void external_interrupt(unsigned int, istate_t *); 92 extern void disabled_fp_register(unsigned int, istate_t *); 82 93 83 94 extern void trap_virtual_enable_irqs(uint16_t); 95 96 void exception_init(void); 97 #endif 84 98 85 99 #endif -
kernel/arch/ia64/include/arch/mm/tlb.h
r0b49d4e r9928240 86 86 extern void itc_pte_copy(pte_t *t); 87 87 88 extern void alternate_instruction_tlb_fault(u int64_t vector, istate_t *istate);89 extern void alternate_data_tlb_fault(u int64_t vector, istate_t *istate);90 extern void data_nested_tlb_fault(u int64_t vector, istate_t *istate);91 extern void data_dirty_bit_fault(u int64_t vector, istate_t *istate);92 extern void instruction_access_bit_fault(u int64_t vector, istate_t *istate);93 extern void data_access_bit_fault(u int64_t vector, istate_t *istate);94 extern void data_access_rights_fault(u int64_t vector, istate_t *istate);95 extern void page_not_present(u int64_t vector, istate_t *istate);88 extern void alternate_instruction_tlb_fault(unsigned int, istate_t *); 89 extern void alternate_data_tlb_fault(unsigned int, istate_t *); 90 extern void data_nested_tlb_fault(unsigned int, istate_t *); 91 extern void data_dirty_bit_fault(unsigned int, istate_t *); 92 extern void instruction_access_bit_fault(unsigned int, istate_t *); 93 extern void data_access_bit_fault(unsigned int, istate_t *); 94 extern void data_access_rights_fault(unsigned int, istate_t *); 95 extern void page_not_present(unsigned int, istate_t *); 96 96 97 97 #endif -
kernel/arch/ia64/src/ia64.c
r0b49d4e r9928240 37 37 #include <errno.h> 38 38 #include <interrupt.h> 39 #include <arch/interrupt.h> 39 40 #include <macros.h> 40 41 #include <str.h> … … 85 86 void arch_pre_mm_init(void) 86 87 { 88 if (config.cpu_active == 1) 89 exception_init(); 87 90 } 88 91 -
kernel/arch/ia64/src/interrupt.c
r0b49d4e r9928240 54 54 #include <synch/spinlock.h> 55 55 #include <mm/tlb.h> 56 #include <arch/mm/tlb.h> 56 57 #include <symtab.h> 57 58 #include <putchar.h> … … 59 60 #define VECTORS_64_BUNDLE 20 60 61 #define VECTORS_16_BUNDLE 48 61 #define VECTORS_16_BUNDLE_START 0x5000 62 63 #define VECTOR_MAX 0x7f00 64 65 #define BUNDLE_SIZE 16 62 #define VECTORS_16_BUNDLE_START 0x50 63 64 #define VECTOR_MAX 0x7f 66 65 67 66 static const char *vector_names_64_bundle[VECTORS_64_BUNDLE] = { … … 122 121 }; 123 122 124 static const char *vector_to_string(uint16_t vector) 125 { 126 ASSERT(vector <= VECTOR_MAX); 127 128 if (vector >= VECTORS_16_BUNDLE_START) 129 return vector_names_16_bundle[(vector - 130 VECTORS_16_BUNDLE_START) / (16 * BUNDLE_SIZE)]; 123 static const char *vector_to_string(unsigned int n) 124 { 125 ASSERT(n <= VECTOR_MAX); 126 127 if (n >= VECTORS_16_BUNDLE_START) 128 return vector_names_16_bundle[n - VECTORS_16_BUNDLE_START]; 131 129 else 132 return vector_names_64_bundle[ vector / (64 * BUNDLE_SIZE)];130 return vector_names_64_bundle[n / 4]; 133 131 } 134 132 … … 153 151 } 154 152 155 void general_exception(u int64_t vector, istate_t *istate)153 void general_exception(unsigned int n, istate_t *istate) 156 154 { 157 155 const char *desc; … … 182 180 183 181 fault_if_from_uspace(istate, "General Exception (%s).", desc); 184 panic_badtrap(istate, vector, "General Exception (%s).", desc);185 } 186 187 void disabled_fp_register(u int64_t vector, istate_t *istate)182 panic_badtrap(istate, n, "General Exception (%s).", desc); 183 } 184 185 void disabled_fp_register(unsigned int n, istate_t *istate) 188 186 { 189 187 #ifdef CONFIG_FPU_LAZY … … 191 189 #else 192 190 fault_if_from_uspace(istate, "Interruption: %#hx (%s).", 193 (uint16_t) vector, vector_to_string(vector));191 (uint16_t) n, vector_to_string(n)); 194 192 panic_badtrap(istate, vector, "Interruption: %#hx (%s).", 195 (uint16_t) vector, vector_to_string(vector));193 (uint16_t) n, vector_to_string(n)); 196 194 #endif 197 195 } 198 196 199 void nop_handler(uint64_t vector, istate_t *istate)200 {201 }202 203 197 /** Handle syscall. */ 204 int break_instruction(uint64_t vector, istate_t *istate)198 sysarg_t break_instruction(unsigned int n, istate_t *istate) 205 199 { 206 200 /* … … 218 212 } 219 213 220 void universal_handler(u int64_t vector, istate_t *istate)214 void universal_handler(unsigned int n, istate_t *istate) 221 215 { 222 216 fault_if_from_uspace(istate, "Interruption: %#hx (%s).", 223 (uint16_t) vector, vector_to_string(vector));224 panic_badtrap(istate, vector, "Interruption: %#hx (%s).",225 (uint16_t) vector, vector_to_string(vector));217 n, vector_to_string(n)); 218 panic_badtrap(istate, n, "Interruption: %#hx (%s).", 219 n, vector_to_string(n)); 226 220 } 227 221 … … 229 223 { 230 224 asm volatile ( 231 "mov cr.eoi =r0;;"225 "mov cr.eoi = r0 ;;" 232 226 ); 233 227 } 234 228 235 void external_interrupt(u int64_t vector, istate_t *istate)229 void external_interrupt(unsigned int n, istate_t *istate) 236 230 { 237 231 cr_ivr_t ivr; … … 298 292 } 299 293 294 void exception_init(void) 295 { 296 unsigned int i; 297 298 for (i = 0; i < IVT_ITEMS; i++) 299 exc_register(i, "universal_handler", false, universal_handler); 300 301 exc_register(EXC_ALT_ITLB_FAULT, 302 vector_to_string(EXC_ALT_ITLB_FAULT), true, 303 alternate_instruction_tlb_fault); 304 exc_register(EXC_ALT_DTLB_FAULT, 305 vector_to_string(EXC_ALT_DTLB_FAULT), true, 306 alternate_data_tlb_fault); 307 exc_register(EXC_NESTED_TLB_FAULT, 308 vector_to_string(EXC_NESTED_TLB_FAULT), false, 309 data_nested_tlb_fault); 310 exc_register(EXC_DATA_D_BIT_FAULT, 311 vector_to_string(EXC_DATA_D_BIT_FAULT), true, 312 data_dirty_bit_fault); 313 exc_register(EXC_INST_A_BIT_FAULT, 314 vector_to_string(EXC_INST_A_BIT_FAULT), true, 315 instruction_access_bit_fault); 316 exc_register(EXC_DATA_A_BIT_FAULT, 317 vector_to_string(EXC_DATA_A_BIT_FAULT), true, 318 data_access_bit_fault); 319 exc_register(EXC_EXT_INTERRUPT, 320 vector_to_string(EXC_EXT_INTERRUPT), true, 321 external_interrupt); 322 323 exc_register(EXC_PAGE_NOT_PRESENT, 324 vector_to_string(EXC_PAGE_NOT_PRESENT), true, 325 page_not_present); 326 exc_register(EXC_DATA_AR_FAULT, 327 vector_to_string(EXC_DATA_AR_FAULT), true, 328 data_access_rights_fault); 329 exc_register(EXC_GENERAL_EXCEPTION, 330 vector_to_string(EXC_GENERAL_EXCEPTION), false, 331 general_exception); 332 exc_register(EXC_DISABLED_FP_REG, 333 vector_to_string(EXC_DISABLED_FP_REG), true, 334 disabled_fp_register); 335 } 336 300 337 /** @} 301 338 */ -
kernel/arch/ia64/src/ivt.S
r0b49d4e r9928240 31 31 #include <arch/register.h> 32 32 #include <arch/mm/page.h> 33 #include <arch/interrupt.h> 33 34 #include <arch/istate_struct.h> 34 35 #include <align.h> … … 39 40 40 41 /** Partitioning of bank 0 registers. */ 41 #define R_ OFFSr1642 #define R_VECTOR r16 42 43 #define R_HANDLER r17 43 44 #define R_RET r18 44 #define R_TMP r1945 45 #define R_KSTACK_BSP r22 /* keep in sync with before_thread_runs_arch() */ 46 46 #define R_KSTACK r23 /* keep in sync with before_thread_runs_arch() */ 47 47 48 48 /* Speculation vector handler */ 49 .macro SPECULATION_VECTOR_HANDLER offs50 .org ivt + \ offs49 .macro SPECULATION_VECTOR_HANDLER vector 50 .org ivt + \vector * 0x100 51 51 52 52 /* 1. Save predicates, IIM, IIP, IPSR and ISR CR's in bank 0 registers. */ … … 94 94 * @param handler Interrupt handler address. 95 95 */ 96 .macro HEAVYWEIGHT_HANDLER offs, handler=universal_handler97 .org ivt + \ offs98 mov R_ OFFS = \offs96 .macro HEAVYWEIGHT_HANDLER vector, handler=exc_dispatch 97 .org ivt + \vector * 0x100 98 mov R_VECTOR = \vector 99 99 movl R_HANDLER = \handler ;; 100 100 br heavyweight_handler … … 165 165 * copy input parameters to stack. 166 166 */ 167 mov R_TMP = 0x2c00 ;; 168 cmp.eq p6, p5 = R_OFFS, R_TMP ;; 167 cmp.eq p6, p5 = EXC_BREAK_INSTRUCTION, R_VECTOR ;; 169 168 170 169 /* … … 309 308 mov loc1 = R_RET /* b0 belonging to interrupted context */ 310 309 mov loc2 = R_HANDLER 311 mov out0 = R_ OFFS310 mov out0 = R_VECTOR 312 311 313 312 add out1 = STACK_SCRATCH_AREA_SIZE, r12 … … 543 542 .align 32768 544 543 ivt: 545 HEAVYWEIGHT_HANDLER 0x00 00546 HEAVYWEIGHT_HANDLER 0x04 00547 HEAVYWEIGHT_HANDLER 0x08 00548 HEAVYWEIGHT_HANDLER 0x0c 00 alternate_instruction_tlb_fault549 HEAVYWEIGHT_HANDLER 0x10 00 alternate_data_tlb_fault550 HEAVYWEIGHT_HANDLER 0x14 00 data_nested_tlb_fault551 HEAVYWEIGHT_HANDLER 0x18 00552 HEAVYWEIGHT_HANDLER 0x1c 00553 HEAVYWEIGHT_HANDLER 0x20 00 data_dirty_bit_fault554 HEAVYWEIGHT_HANDLER 0x24 00 instruction_access_bit_fault555 HEAVYWEIGHT_HANDLER 0x28 00 data_access_bit_fault556 HEAVYWEIGHT_HANDLER 0x2c 00break_instruction557 HEAVYWEIGHT_HANDLER 0x30 00 external_interrupt /* For external interrupt, heavyweight handler is used. */558 HEAVYWEIGHT_HANDLER 0x34 00559 HEAVYWEIGHT_HANDLER 0x38 00560 HEAVYWEIGHT_HANDLER 0x3c 00561 HEAVYWEIGHT_HANDLER 0x40 00562 HEAVYWEIGHT_HANDLER 0x44 00563 HEAVYWEIGHT_HANDLER 0x48 00564 HEAVYWEIGHT_HANDLER 0x4c 00565 566 HEAVYWEIGHT_HANDLER 0x50 00 page_not_present567 HEAVYWEIGHT_HANDLER 0x51 00568 HEAVYWEIGHT_HANDLER 0x52 00569 HEAVYWEIGHT_HANDLER 0x53 00 data_access_rights_fault570 HEAVYWEIGHT_HANDLER 0x54 00 general_exception571 HEAVYWEIGHT_HANDLER 0x55 00 disabled_fp_register572 HEAVYWEIGHT_HANDLER 0x56 00573 SPECULATION_VECTOR_HANDLER 0x57 00574 HEAVYWEIGHT_HANDLER 0x58 00575 HEAVYWEIGHT_HANDLER 0x59 00576 HEAVYWEIGHT_HANDLER 0x5a 00577 HEAVYWEIGHT_HANDLER 0x5b 00578 HEAVYWEIGHT_HANDLER 0x5c 00579 HEAVYWEIGHT_HANDLER 0x5d 00580 HEAVYWEIGHT_HANDLER 0x5e 00581 HEAVYWEIGHT_HANDLER 0x5f 00582 583 HEAVYWEIGHT_HANDLER 0x60 00584 HEAVYWEIGHT_HANDLER 0x61 00585 HEAVYWEIGHT_HANDLER 0x62 00586 HEAVYWEIGHT_HANDLER 0x63 00587 HEAVYWEIGHT_HANDLER 0x64 00588 HEAVYWEIGHT_HANDLER 0x65 00589 HEAVYWEIGHT_HANDLER 0x66 00590 HEAVYWEIGHT_HANDLER 0x67 00591 HEAVYWEIGHT_HANDLER 0x68 00592 HEAVYWEIGHT_HANDLER 0x69 00593 HEAVYWEIGHT_HANDLER 0x6a 00594 HEAVYWEIGHT_HANDLER 0x6b 00595 HEAVYWEIGHT_HANDLER 0x6c 00596 HEAVYWEIGHT_HANDLER 0x6d 00597 HEAVYWEIGHT_HANDLER 0x6e 00598 HEAVYWEIGHT_HANDLER 0x6f 00599 600 HEAVYWEIGHT_HANDLER 0x70 00601 HEAVYWEIGHT_HANDLER 0x71 00602 HEAVYWEIGHT_HANDLER 0x72 00603 HEAVYWEIGHT_HANDLER 0x73 00604 HEAVYWEIGHT_HANDLER 0x74 00605 HEAVYWEIGHT_HANDLER 0x75 00606 HEAVYWEIGHT_HANDLER 0x76 00607 HEAVYWEIGHT_HANDLER 0x77 00608 HEAVYWEIGHT_HANDLER 0x78 00609 HEAVYWEIGHT_HANDLER 0x79 00610 HEAVYWEIGHT_HANDLER 0x7a 00611 HEAVYWEIGHT_HANDLER 0x7b 00612 HEAVYWEIGHT_HANDLER 0x7c 00613 HEAVYWEIGHT_HANDLER 0x7d 00614 HEAVYWEIGHT_HANDLER 0x7e 00615 HEAVYWEIGHT_HANDLER 0x7f 00544 HEAVYWEIGHT_HANDLER 0x00 545 HEAVYWEIGHT_HANDLER 0x04 546 HEAVYWEIGHT_HANDLER 0x08 547 HEAVYWEIGHT_HANDLER 0x0c 548 HEAVYWEIGHT_HANDLER 0x10 549 HEAVYWEIGHT_HANDLER 0x14 550 HEAVYWEIGHT_HANDLER 0x18 551 HEAVYWEIGHT_HANDLER 0x1c 552 HEAVYWEIGHT_HANDLER 0x20 553 HEAVYWEIGHT_HANDLER 0x24 554 HEAVYWEIGHT_HANDLER 0x28 555 HEAVYWEIGHT_HANDLER 0x2c break_instruction 556 HEAVYWEIGHT_HANDLER 0x30 557 HEAVYWEIGHT_HANDLER 0x34 558 HEAVYWEIGHT_HANDLER 0x38 559 HEAVYWEIGHT_HANDLER 0x3c 560 HEAVYWEIGHT_HANDLER 0x40 561 HEAVYWEIGHT_HANDLER 0x44 562 HEAVYWEIGHT_HANDLER 0x48 563 HEAVYWEIGHT_HANDLER 0x4c 564 565 HEAVYWEIGHT_HANDLER 0x50 566 HEAVYWEIGHT_HANDLER 0x51 567 HEAVYWEIGHT_HANDLER 0x52 568 HEAVYWEIGHT_HANDLER 0x53 569 HEAVYWEIGHT_HANDLER 0x54 570 HEAVYWEIGHT_HANDLER 0x55 571 HEAVYWEIGHT_HANDLER 0x56 572 SPECULATION_VECTOR_HANDLER 0x57 573 HEAVYWEIGHT_HANDLER 0x58 574 HEAVYWEIGHT_HANDLER 0x59 575 HEAVYWEIGHT_HANDLER 0x5a 576 HEAVYWEIGHT_HANDLER 0x5b 577 HEAVYWEIGHT_HANDLER 0x5c 578 HEAVYWEIGHT_HANDLER 0x5d 579 HEAVYWEIGHT_HANDLER 0x5e 580 HEAVYWEIGHT_HANDLER 0x5f 581 582 HEAVYWEIGHT_HANDLER 0x60 583 HEAVYWEIGHT_HANDLER 0x61 584 HEAVYWEIGHT_HANDLER 0x62 585 HEAVYWEIGHT_HANDLER 0x63 586 HEAVYWEIGHT_HANDLER 0x64 587 HEAVYWEIGHT_HANDLER 0x65 588 HEAVYWEIGHT_HANDLER 0x66 589 HEAVYWEIGHT_HANDLER 0x67 590 HEAVYWEIGHT_HANDLER 0x68 591 HEAVYWEIGHT_HANDLER 0x69 592 HEAVYWEIGHT_HANDLER 0x6a 593 HEAVYWEIGHT_HANDLER 0x6b 594 HEAVYWEIGHT_HANDLER 0x6c 595 HEAVYWEIGHT_HANDLER 0x6d 596 HEAVYWEIGHT_HANDLER 0x6e 597 HEAVYWEIGHT_HANDLER 0x6f 598 599 HEAVYWEIGHT_HANDLER 0x70 600 HEAVYWEIGHT_HANDLER 0x71 601 HEAVYWEIGHT_HANDLER 0x72 602 HEAVYWEIGHT_HANDLER 0x73 603 HEAVYWEIGHT_HANDLER 0x74 604 HEAVYWEIGHT_HANDLER 0x75 605 HEAVYWEIGHT_HANDLER 0x76 606 HEAVYWEIGHT_HANDLER 0x77 607 HEAVYWEIGHT_HANDLER 0x78 608 HEAVYWEIGHT_HANDLER 0x79 609 HEAVYWEIGHT_HANDLER 0x7a 610 HEAVYWEIGHT_HANDLER 0x7b 611 HEAVYWEIGHT_HANDLER 0x7c 612 HEAVYWEIGHT_HANDLER 0x7d 613 HEAVYWEIGHT_HANDLER 0x7e 614 HEAVYWEIGHT_HANDLER 0x7f -
kernel/arch/ia64/src/mm/tlb.c
r0b49d4e r9928240 477 477 /** Instruction TLB fault handler for faults with VHPT turned off. 478 478 * 479 * @param vectorInterruption vector.480 * @param istate Structure with saved interruption state. 481 * 482 */ 483 void alternate_instruction_tlb_fault(u int64_t vector, istate_t *istate)479 * @param n Interruption vector. 480 * @param istate Structure with saved interruption state. 481 * 482 */ 483 void alternate_instruction_tlb_fault(unsigned int n, istate_t *istate) 484 484 { 485 485 uintptr_t va; … … 566 566 /** Data TLB fault handler for faults with VHPT turned off. 567 567 * 568 * @param vectorInterruption vector.569 * @param istate Structure with saved interruption state. 570 * 571 */ 572 void alternate_data_tlb_fault(u int64_t vector, istate_t *istate)568 * @param n Interruption vector. 569 * @param istate Structure with saved interruption state. 570 * 571 */ 572 void alternate_data_tlb_fault(unsigned int n, istate_t *istate) 573 573 { 574 574 if (istate->cr_isr.sp) { … … 623 623 * This fault should not occur. 624 624 * 625 * @param vectorInterruption vector.626 * @param istate Structure with saved interruption state. 627 * 628 */ 629 void data_nested_tlb_fault(u int64_t vector, istate_t *istate)625 * @param n Interruption vector. 626 * @param istate Structure with saved interruption state. 627 * 628 */ 629 void data_nested_tlb_fault(unsigned int n, istate_t *istate) 630 630 { 631 631 ASSERT(false); … … 634 634 /** Data Dirty bit fault handler. 635 635 * 636 * @param vectorInterruption vector.637 * @param istate Structure with saved interruption state. 638 * 639 */ 640 void data_dirty_bit_fault(u int64_t vector, istate_t *istate)636 * @param n Interruption vector. 637 * @param istate Structure with saved interruption state. 638 * 639 */ 640 void data_dirty_bit_fault(unsigned int n, istate_t *istate) 641 641 { 642 642 uintptr_t va; … … 665 665 /** Instruction access bit fault handler. 666 666 * 667 * @param vectorInterruption vector.668 * @param istate Structure with saved interruption state. 669 * 670 */ 671 void instruction_access_bit_fault(u int64_t vector, istate_t *istate)667 * @param n Interruption vector. 668 * @param istate Structure with saved interruption state. 669 * 670 */ 671 void instruction_access_bit_fault(unsigned int n, istate_t *istate) 672 672 { 673 673 uintptr_t va; … … 694 694 /** Data access bit fault handler. 695 695 * 696 * @param vectorInterruption vector.697 * @param istate Structure with saved interruption state. 698 * 699 */ 700 void data_access_bit_fault(u int64_t vector, istate_t *istate)696 * @param n Interruption vector. 697 * @param istate Structure with saved interruption state. 698 * 699 */ 700 void data_access_bit_fault(unsigned int n, istate_t *istate) 701 701 { 702 702 uintptr_t va; … … 729 729 /** Data access rights fault handler. 730 730 * 731 * @param vectorInterruption vector.732 * @param istate Structure with saved interruption state. 733 * 734 */ 735 void data_access_rights_fault(u int64_t vector, istate_t *istate)731 * @param n Interruption vector. 732 * @param istate Structure with saved interruption state. 733 * 734 */ 735 void data_access_rights_fault(unsigned int n, istate_t *istate) 736 736 { 737 737 uintptr_t va; … … 753 753 /** Page not present fault handler. 754 754 * 755 * @param vectorInterruption vector.756 * @param istate Structure with saved interruption state. 757 * 758 */ 759 void page_not_present(u int64_t vector, istate_t *istate)755 * @param n Interruption vector. 756 * @param istate Structure with saved interruption state. 757 * 758 */ 759 void page_not_present(unsigned int n, istate_t *istate) 760 760 { 761 761 uintptr_t va;
Note:
See TracChangeset
for help on using the changeset viewer.