Changeset df3c6f02 in mainline for kernel/arch/ia64/src
- Timestamp:
- 2011-05-31T22:58:56Z (15 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- d362410
- Parents:
- 82582e4 (diff), 4ce90544 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)links above to see all the changes relative to each parent. - Location:
- kernel/arch/ia64/src
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/ia64/src/ia64.c
r82582e4 rdf3c6f02 249 249 rsc.mode = 3; /* eager mode */ 250 250 251 /* 252 * Switch to userspace. 253 * 254 * When calculating stack addresses, mind the stack split between the 255 * memory stack and the RSE stack. Each occuppies STACK_SIZE / 2 bytes. 256 */ 251 257 switch_to_userspace((uintptr_t) kernel_uarg->uspace_entry, 252 ((uintptr_t) kernel_uarg->uspace_stack) + PAGE_SIZE-258 ((uintptr_t) kernel_uarg->uspace_stack) + STACK_SIZE / 2 - 253 259 ALIGN_UP(STACK_ITEM_SIZE, STACK_ALIGNMENT), 254 ((uintptr_t) kernel_uarg->uspace_stack) + PAGE_SIZE,260 ((uintptr_t) kernel_uarg->uspace_stack) + STACK_SIZE / 2, 255 261 (uintptr_t) kernel_uarg->uspace_uarg, psr.value, rsc.value); 256 262 -
kernel/arch/ia64/src/ivt.S
r82582e4 rdf3c6f02 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 offs 55 .org ivt + \offs 56 57 /* 1. Save predicates, IIM, IIP, IPSR and ISR CR's in bank 0 registers. */ 58 mov r16 = pr 59 mov r17 = cr.iim 60 mov r18 = cr.iip 61 mov r19 = cr.ipsr 62 mov r20 = cr.isr ;; 63 64 /* 2. Move IIP to IIPA. */ 65 mov cr.iipa = r18 66 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 = r18 72 73 /* 4. Set IPSR.ri to 0. */ 74 dep r19 = 0, r19, PSR_RI_SHIFT, PSR_RI_LEN ;; 75 mov cr.ipsr = r19 76 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 rfi 86 .endm 52 87 53 88 /** Heavyweight interrupt handler … … 391 426 392 427 /* 10. call handler */ 393 movl r1 = kernel_image_start428 movl r1 = __gp 394 429 395 430 mov b1 = loc2 … … 541 576 HEAVYWEIGHT_HANDLER 0x5500 disabled_fp_register 542 577 HEAVYWEIGHT_HANDLER 0x5600 543 HEAVYWEIGHT_HANDLER 0x5700578 SPECULATION_VECTOR_HANDLER 0x5700 544 579 HEAVYWEIGHT_HANDLER 0x5800 545 580 HEAVYWEIGHT_HANDLER 0x5900 -
kernel/arch/ia64/src/mm/tlb.c
r82582e4 rdf3c6f02 481 481 482 482 page_table_lock(AS, true); 483 t = page_mapping_find(AS, va );483 t = page_mapping_find(AS, va, true); 484 484 if (t) { 485 485 /* … … 599 599 600 600 page_table_lock(AS, true); 601 pte_t *entry = page_mapping_find(AS, va );601 pte_t *entry = page_mapping_find(AS, va, true); 602 602 if (entry) { 603 603 /* … … 651 651 652 652 page_table_lock(AS, true); 653 t = page_mapping_find(AS, va );653 t = page_mapping_find(AS, va, true); 654 654 ASSERT((t) && (t->p)); 655 655 if ((t) && (t->p) && (t->w)) { … … 684 684 685 685 page_table_lock(AS, true); 686 t = page_mapping_find(AS, va );686 t = page_mapping_find(AS, va, true); 687 687 ASSERT((t) && (t->p)); 688 688 if ((t) && (t->p) && (t->x)) { … … 717 717 718 718 page_table_lock(AS, true); 719 t = page_mapping_find(AS, va );719 t = page_mapping_find(AS, va, true); 720 720 ASSERT((t) && (t->p)); 721 721 if ((t) && (t->p)) { … … 753 753 */ 754 754 page_table_lock(AS, true); 755 t = page_mapping_find(AS, va );755 t = page_mapping_find(AS, va, true); 756 756 ASSERT((t) && (t->p)); 757 757 ASSERT(!t->w); … … 778 778 779 779 page_table_lock(AS, true); 780 t = page_mapping_find(AS, va );780 t = page_mapping_find(AS, va, true); 781 781 ASSERT(t); 782 782 -
kernel/arch/ia64/src/proc/scheduler.c
r82582e4 rdf3c6f02 79 79 * Record address of kernel stack to bank 0 r23. 80 80 * These values will be found there after switch from userspace. 81 * 82 * Mind the 1:1 split of the entire STACK_SIZE long region between the 83 * memory stack and the RSE stack. 81 84 */ 82 85 asm volatile ( … … 86 89 "bsw.1\n" 87 90 : 88 : "r" (&THREAD->kstack[ THREAD_STACK_SIZE]),89 "r" (&THREAD->kstack[ THREAD_STACK_SIZE- SP_DELTA])91 : "r" (&THREAD->kstack[STACK_SIZE / 2]), 92 "r" (&THREAD->kstack[STACK_SIZE / 2 - SP_DELTA]) 90 93 ); 91 94 } -
kernel/arch/ia64/src/start.S
r82582e4 rdf3c6f02 174 174 175 175 # Initialize gp (Global Pointer) register 176 movl gp = kernel_image_start176 movl gp = __gp 177 177 178 # 178 # 179 179 # Initialize bootinfo on BSP. 180 180 #
Note:
See TracChangeset
for help on using the changeset viewer.
