Changeset a7a1063 in mainline
- Timestamp:
- 2005-06-07T00:41:39Z (20 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- d896525
- Parents:
- b0bf501
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
arch/ia32/src/boot/boot.S
rb0bf501 ra7a1063 96 96 orl $(1<<31), %ebx 97 97 movl %ebx, %cr0 98 jmp 0f99 0:100 98 ret 101 99 -
arch/ia32/src/mm/frame.c
rb0bf501 ra7a1063 38 38 { 39 39 if (config.cpu_active == 1) { 40 kernel_frames = frames;41 kernel_frames_free = frames_free;42 frame_kernel_bitmap = frame_bitmap;43 44 40 frame_not_free(0x0); 45 41 -
arch/ia32/src/mm/page.c
rb0bf501 ra7a1063 65 65 */ 66 66 for (i = 1; i < frames; i++) { 67 map_page_to_frame(i * PAGE_SIZE, i * PAGE_SIZE, PAGE_CACHEABLE, dba);68 map_page_to_frame(PA2KA(i * PAGE_SIZE), i * PAGE_SIZE, PAGE_CACHEABLE, dba);67 map_page_to_frame(i * PAGE_SIZE, i * PAGE_SIZE, PAGE_CACHEABLE, KA2PA(dba)); 68 map_page_to_frame(PA2KA(i * PAGE_SIZE), i * PAGE_SIZE, PAGE_CACHEABLE, KA2PA(dba)); 69 69 } 70 70 … … 113 113 pte = (page >> 12) & 0x3ff; /* page table entry */ 114 114 115 pd = (struct page_specifier *) dba;115 pd = (struct page_specifier *) PA2KA(dba); 116 116 117 117 if (!pd[pde].present) { … … 127 127 } 128 128 129 pt = (struct page_specifier *) (pd[pde].frame_address << 12);129 pt = (struct page_specifier *) PA2KA((pd[pde].frame_address << 12)); 130 130 131 131 pt[pte].frame_address = frame >> 12; -
arch/ia32/src/pm.c
rb0bf501 ra7a1063 132 132 void pm_init(void) 133 133 { 134 struct descriptor *gdt_p = (struct descriptor *) gdtr.base;134 struct descriptor *gdt_p = (struct descriptor *) PA2KA(gdtr.base); 135 135 136 136 /* -
arch/ia32/src/smp/ap.S
rb0bf501 ra7a1063 64 64 movl $(ctx-0x80000000),%eax # KA2PA((__address) &ctx) 65 65 movl (%eax),%esp 66 subl $0x80000000,%esp # KA2PA(ctx.sp) 66 67 67 68 lidt idtr -
arch/ia32/src/smp/mps.c
rb0bf501 ra7a1063 393 393 } 394 394 395 395 396 /* 396 397 * Kernel thread for bringing up application processors. It becomes clear … … 415 416 416 417 /* 417 * Grab a frame and map its address to page 0. This is a hack which 418 * accesses data in frame 0. Note that page 0 is not present because 419 * of nil reference bug catching. 420 */ 421 frame = frame_alloc(FRAME_KA); 418 * We need to access data in frame 0. 419 */ 420 frame = frame_alloc(0); 422 421 map_page_to_frame(frame,0,PAGE_CACHEABLE,0); 423 422 … … 474 473 memcopy(gdt, gdt_new, GDT_ITEMS*sizeof(struct descriptor)); 475 474 gdtr.base = KA2PA((__address) gdt_new); 476 475 477 476 if (l_apic_send_init_ipi(pr[i].l_apic_id)) { 478 477 /* -
arch/mips/src/mm/frame.c
rb0bf501 ra7a1063 32 32 void frame_arch_init(void) 33 33 { 34 kernel_frames = frames;35 kernel_frames_free = frames_free;36 frame_kernel_bitmap = frame_bitmap;37 34 } -
src/mm/frame.c
rb0bf501 ra7a1063 49 49 count_t frame_bitmap_octets; 50 50 51 /*52 * This is for kernel address space frames (allocated with FRAME_KA).53 * Their addresses may not interfere with user address space.54 */55 __u8 *frame_kernel_bitmap;56 count_t kernel_frames;57 count_t kernel_frames_free;58 59 51 static spinlock_t framelock; 60 52 … … 78 70 memsetb((__address) frame_bitmap, frame_bitmap_octets, 0); 79 71 frames_free = frames; 80 81 /*82 * Will be properly set up by architecture dependent frame init.83 */84 frame_kernel_bitmap = NULL;85 kernel_frames_free = 0;86 kernel_frames = 0;87 72 } 88 73 89 74 /* 90 * No frame allocations/reservations 75 * No frame allocations/reservations prior this point. 91 76 */ 92 77 … … 109 94 int i; 110 95 pri_t pri; 111 __u8 **frame_bitmap_ptr = &frame_bitmap;112 count_t *frames_ptr = &frames, *frames_free_ptr = &frames_free;113 114 if (flags & FRAME_KA) {115 frame_bitmap_ptr = &frame_kernel_bitmap;116 frames_ptr = &kernel_frames;117 frames_free_ptr = &kernel_frames_free;118 }119 96 120 97 loop: 121 98 pri = cpu_priority_high(); 122 99 spinlock_lock(&framelock); 123 if ( *frames_free_ptr) {124 for (i=0; i < *frames_ptr; i++) {100 if (frames_free) { 101 for (i=0; i < frames; i++) { 125 102 int m, n; 126 103 … … 128 105 n = i % 8; 129 106 130 if (((*frame_bitmap_ptr)[m] & (1<<n)) == 0) { 131 (*frame_bitmap_ptr)[m] |= (1<<n); 132 *frames_free_ptr--; 133 if (flags & FRAME_KA) { 134 /* 135 * frames_free_ptr points to kernel_frames_free 136 * It is still necessary to decrement frames_free. 137 */ 138 frames_free--; 139 } 107 if ((frame_bitmap[m] & (1<<n)) == 0) { 108 frame_bitmap[m] |= (1<<n); 109 frames_free--; 140 110 spinlock_unlock(&framelock); 141 111 cpu_priority_restore(pri); … … 165 135 pri_t pri; 166 136 __u32 frame; 167 count_t *frames_free_ptr = &frames_free, *frames_ptr = &frames;168 __u8 **frame_bitmap_ptr = &frame_bitmap;169 170 if (IS_KA(addr)) {171 frames_free_ptr = &kernel_frames_free;172 frame_bitmap_ptr = &frame_kernel_bitmap;173 }174 137 175 138 pri = cpu_priority_high(); … … 178 141 frame = IS_KA(addr) ? KA2PA(addr) : addr; 179 142 frame /= FRAME_SIZE; 180 if (frame < *frames_ptr) {143 if (frame < frames) { 181 144 int m, n; 182 145 … … 184 147 n = frame % 8; 185 148 186 if ((*frame_bitmap_ptr)[m] & (1<<n)) { 187 (*frame_bitmap_ptr)[m] &= ~(1<<n); 188 *frames_free_ptr++; 189 if (IS_KA(addr)) { 190 /* 191 * frames_free_ptr points to kernel_frames_free 192 * It is still necessary to increment frames_free. 193 */ 194 frames_free++; 195 } 149 if (frame_bitmap[m] & (1<<n)) { 150 frame_bitmap[m] &= ~(1<<n); 151 frames_free++; 196 152 } 197 153 else panic("frame already free\n"); … … 211 167 pri_t pri; 212 168 __u32 frame; 213 count_t *frames_ptr = &frames, *frames_free_ptr = &frames_free;214 __u8 **frame_bitmap_ptr = &frame_bitmap;215 169 216 170 pri = cpu_priority_high(); … … 218 172 frame = IS_KA(addr) ? KA2PA(addr) : addr; 219 173 frame /= FRAME_SIZE; 220 if (frame < *frames_ptr) {174 if (frame < frames) { 221 175 int m, n; 222 176 … … 224 178 n = frame % 8; 225 179 226 if (((*frame_bitmap_ptr)[m] & (1<<n)) == 0) { 227 (*frame_bitmap_ptr)[m] |= (1<<n); 228 *frames_free_ptr--; 229 if (IS_KA(addr)) { 230 /* 231 * frames_free_ptr points to kernel_frames_free 232 * It is still necessary to decrement frames_free. 233 */ 234 frames_free--; 235 } 180 if ((frame_bitmap[m] & (1<<n)) == 0) { 181 frame_bitmap[m] |= (1<<n); 182 frames_free--; 236 183 } 237 184 } -
src/proc/scheduler.c
rb0bf501 ra7a1063 44 44 #include <arch/faddr.h> 45 45 #include <arch/atomic.h> 46 47 /*48 * NOTE ON ATOMIC READS:49 * Some architectures cannot read __u32 atomically.50 * For that reason, all accesses to nrdy and the likes must be protected by spinlock.51 */52 46 53 47 volatile int nrdy;
Note:
See TracChangeset
for help on using the changeset viewer.