Changes in kernel/arch/ia64/src/ivt.S [7b712b60:18ba2e4f] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/ia64/src/ivt.S
r7b712b60 r18ba2e4f 50 50 #define R_KSTACK_BSP r22 /* keep in sync with before_thread_runs_arch() */ 51 51 #define R_KSTACK r23 /* keep in sync with before_thread_runs_arch() */ 52 53 /* Speculation vector handler */54 .macro SPECULATION_VECTOR_HANDLER offs55 .org ivt + \offs56 57 /* 1. Save predicates, IIM, IIP, IPSR and ISR CR's in bank 0 registers. */58 mov r16 = pr59 mov r17 = cr.iim60 mov r18 = cr.iip61 mov r19 = cr.ipsr62 mov r20 = cr.isr ;;63 64 /* 2. Move IIP to IIPA. */65 mov cr.iipa = r1866 67 /* 3. Sign extend IIM[20:0], shift left by 4 and add to IIP. */68 shl r17 = r17, 43 ;; /* shift bit 20 to bit 63 */69 shr r17 = r17, 39 ;; /* signed shift right to bit 24 */70 add r18 = r18, r17 ;;71 mov cr.iip = r1872 73 /* 4. Set IPSR.ri to 0. */74 dep r19 = 0, r19, PSR_RI_SHIFT, PSR_RI_LEN ;;75 mov cr.ipsr = r1976 77 /* 5. Check whether IPSR.tb or IPSR.ss is set. */78 79 /* TODO:80 * Implement this when Taken Branch and Single Step traps can occur.81 */82 83 /* 6. Restore predicates and return from interruption. */84 mov pr = r16 ;;85 rfi86 .endm87 52 88 53 /** Heavyweight interrupt handler … … 576 541 HEAVYWEIGHT_HANDLER 0x5500 disabled_fp_register 577 542 HEAVYWEIGHT_HANDLER 0x5600 578 SPECULATION_VECTOR_HANDLER 0x5700543 HEAVYWEIGHT_HANDLER 0x5700 579 544 HEAVYWEIGHT_HANDLER 0x5800 580 545 HEAVYWEIGHT_HANDLER 0x5900
Note:
See TracChangeset
for help on using the changeset viewer.