Changeset e2a0d76 in mainline
- Timestamp:
- 2013-09-09T23:29:57Z (12 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- ba2be23
- Parents:
- 8cbf1c3
- Location:
- kernel
- Files:
-
- 15 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/arm32/src/ras.c
r8cbf1c3 re2a0d76 51 51 void ras_init(void) 52 52 { 53 uintptr_t frame; 54 55 frame = frame_alloc(ONE_FRAME, 53 uintptr_t frame = frame_alloc(ONE_FRAME, 56 54 FRAME_ATOMIC | FRAME_HIGHMEM, 0); 57 55 if (!frame) 58 56 frame = frame_alloc(ONE_FRAME, FRAME_LOWMEM, 0); 57 59 58 ras_page = (uintptr_t *) km_map(frame, 60 59 PAGE_SIZE, PAGE_READ | PAGE_WRITE | PAGE_USER | PAGE_CACHEABLE); 61 60 62 61 memsetb(ras_page, PAGE_SIZE, 0); 63 62 ras_page[RAS_START] = 0; -
kernel/arch/ia64/src/mm/vhpt.c
r8cbf1c3 re2a0d76 46 46 if (!vhpt_base) 47 47 panic("Kernel configured with VHPT but no memory for table."); 48 48 49 vhpt_invalidate_all(); 49 50 return (uintptr_t) vhpt_base; -
kernel/arch/mips32/include/arch/mm/page.h
r8cbf1c3 re2a0d76 27 27 */ 28 28 29 /** @addtogroup mips32mm 29 /** @addtogroup mips32mm 30 30 * @{ 31 31 */ … … 70 70 * - PTL3 has 4096 entries (12 bits) 71 71 */ 72 72 73 73 /* Macros describing number of entries in each level. */ 74 #define PTL0_ENTRIES_ARCH 75 #define PTL1_ENTRIES_ARCH 76 #define PTL2_ENTRIES_ARCH 77 #define PTL3_ENTRIES_ARCH 74 #define PTL0_ENTRIES_ARCH 64 75 #define PTL1_ENTRIES_ARCH 0 76 #define PTL2_ENTRIES_ARCH 0 77 #define PTL3_ENTRIES_ARCH 4096 78 78 79 79 /* Macros describing size of page tables in each level. */ … … 84 84 85 85 /* Macros calculating entry indices for each level. */ 86 #define PTL0_INDEX_ARCH(vaddr) ((vaddr) >> 26)87 #define PTL1_INDEX_ARCH(vaddr) 88 #define PTL2_INDEX_ARCH(vaddr) 89 #define PTL3_INDEX_ARCH(vaddr) 86 #define PTL0_INDEX_ARCH(vaddr) ((vaddr) >> 26) 87 #define PTL1_INDEX_ARCH(vaddr) 0 88 #define PTL2_INDEX_ARCH(vaddr) 0 89 #define PTL3_INDEX_ARCH(vaddr) (((vaddr) >> 14) & 0xfff) 90 90 91 91 /* Set accessor for PTL0 address. */ 92 92 #define SET_PTL0_ADDRESS_ARCH(ptl0) 93 93 94 /* Get PTE address accessors for each level. */ 94 /* Get PTE address accessors for each level. */ 95 95 #define GET_PTL1_ADDRESS_ARCH(ptl0, i) \ 96 96 (((pte_t *) (ptl0))[(i)].pfn << 12) -
kernel/arch/sparc64/src/mm/sun4u/as.c
r8cbf1c3 re2a0d76 72 72 73 73 uintptr_t tsb = PA2KA(frame_alloc(order, flags, 0)); 74 75 74 if (!tsb) 76 75 return -1; -
kernel/arch/sparc64/src/mm/sun4v/as.c
r8cbf1c3 re2a0d76 70 70 71 71 uintptr_t tsb = frame_alloc(order, flags, 0); 72 73 72 if (!tsb) 74 73 return -1; -
kernel/doc/mm
r8cbf1c3 re2a0d76 71 71 72 72 'malloc' function accepts flags as a second argument. The flags are directly 73 passed to the underlying frame_alloc function. 73 passed to the underlying frame_alloc function. 74 74 75 75 1) If the flags parameter contains FRAME_ATOMIC, the allocator will not sleep. -
kernel/genarch/src/mm/as_pt.c
r8cbf1c3 re2a0d76 82 82 /* 83 83 * Copy the kernel address space portion to new PTL0. 84 *85 84 */ 86 85 -
kernel/genarch/src/mm/page_pt.c
r8cbf1c3 re2a0d76 363 363 * @param size Size in bytes defining the range of PTL0 entries that will be 364 364 * altered by this function. 365 * 365 366 */ 366 367 void pt_mapping_make_global(uintptr_t base, size_t size) 367 368 { 369 ASSERT(size > 0); 370 368 371 uintptr_t ptl0 = PA2KA((uintptr_t) AS_KERNEL->genarch.page_table); 369 372 uintptr_t ptl0_step = ptl0_step_get(); 370 373 size_t order; 371 uintptr_t addr; 372 374 373 375 #if (PTL1_ENTRIES != 0) 374 376 order = PTL1_SIZE; … … 378 380 order = PTL3_SIZE; 379 381 #endif 380 381 ASSERT(size > 0); 382 383 for (addr = ALIGN_DOWN(base, ptl0_step); addr - 1 < base + size - 1; 382 383 for (uintptr_t addr = ALIGN_DOWN(base, ptl0_step); 384 addr - 1 < base + size - 1; 384 385 addr += ptl0_step) { 385 uintptr_t l1; 386 387 l1 = PA2KA(frame_alloc(order, FRAME_LOWMEM, 0)); 386 uintptr_t l1 = PA2KA(frame_alloc(order, FRAME_LOWMEM, 0)); 388 387 memsetb((void *) l1, FRAME_SIZE << order, 0); 389 388 SET_PTL1_ADDRESS(ptl0, PTL0_INDEX(addr), KA2PA(l1)); -
kernel/generic/include/config.h
r8cbf1c3 re2a0d76 45 45 #define STACK_SIZE ((1 << STACK_FRAMES) << PAGE_WIDTH) 46 46 47 #define STACK_SIZE_USER 47 #define STACK_SIZE_USER (1 * 1024 * 1024) 48 48 49 49 #define CONFIG_INIT_TASKS 32 -
kernel/generic/include/mm/slab.h
r8cbf1c3 re2a0d76 90 90 91 91 /* Configuration */ 92 92 93 /** Size of slab position - align_up(sizeof(obj)) */ 93 94 size_t size; -
kernel/generic/src/ddi/ddi.c
r8cbf1c3 re2a0d76 327 327 ASSERT(TASK); 328 328 329 size_t pages = SIZE2FRAMES(size);329 size_t frames = SIZE2FRAMES(size); 330 330 uint8_t order; 331 331 332 /* We need the 2^order >= pages */333 if ( pages == 1)332 /* We need the 2^order >= frames */ 333 if (frames == 1) 334 334 order = 0; 335 335 else 336 order = fnzb( pages - 1) + 1;336 order = fnzb(frames - 1) + 1; 337 337 338 338 *phys = frame_alloc_noreserve(order, 0, 0); … … 342 342 mem_backend_data_t backend_data; 343 343 backend_data.base = *phys; 344 backend_data.frames = pages;344 backend_data.frames = frames; 345 345 346 346 if (!as_area_create(TASK->as, map_flags, size, -
kernel/generic/src/debug/stacktrace.c
r8cbf1c3 re2a0d76 39 39 #include <print.h> 40 40 41 #define STACK_FRAMES_MAX 41 #define STACK_FRAMES_MAX 20 42 42 43 43 void stack_trace_ctx(stack_trace_ops_t *ops, stack_trace_context_t *ctx) … … 49 49 uintptr_t pc; 50 50 51 while ( cnt++ < STACK_FRAMES_MAX&&52 ops->stack_trace_context_validate(ctx)) {51 while ((cnt++ < STACK_FRAMES_MAX) && 52 (ops->stack_trace_context_validate(ctx))) { 53 53 if (ops->symbol_resolve && 54 54 ops->symbol_resolve(ctx->pc, &symbol, &offset)) { -
kernel/generic/src/mm/km.c
r8cbf1c3 re2a0d76 239 239 uintptr_t km_temporary_page_get(uintptr_t *framep, frame_flags_t flags) 240 240 { 241 uintptr_t frame;242 uintptr_t page;243 244 241 ASSERT(THREAD); 245 242 ASSERT(framep); 246 243 ASSERT(!(flags & ~(FRAME_NO_RESERVE | FRAME_ATOMIC))); 247 244 248 245 /* 249 246 * Allocate a frame, preferably from high memory. 250 247 */ 251 frame = frame_alloc(ONE_FRAME, 248 uintptr_t page; 249 uintptr_t frame = frame_alloc(ONE_FRAME, 252 250 FRAME_HIGHMEM | FRAME_ATOMIC | flags, 0); 253 251 if (frame) { 254 252 page = km_map(frame, PAGE_SIZE, 255 253 PAGE_READ | PAGE_WRITE | PAGE_CACHEABLE); 256 ASSERT(page); // FIXME 254 255 // FIXME 256 ASSERT(page); 257 257 } else { 258 258 frame = frame_alloc(ONE_FRAME, FRAME_LOWMEM | flags, 0); 259 259 if (!frame) 260 260 return (uintptr_t) NULL; 261 261 262 page = PA2KA(frame); 262 263 } 263 264 264 265 *framep = frame; 265 return page; 266 return page; 266 267 } 267 268 -
kernel/generic/src/mm/slab.c
r8cbf1c3 re2a0d76 184 184 void *data = (void *) 185 185 PA2KA(frame_alloc_generic(cache->order, flags, 0, &zone)); 186 if (!data) {186 if (!data) 187 187 return NULL; 188 }189 188 190 189 slab_t *slab; -
kernel/test/mm/mapping1.c
r8cbf1c3 re2a0d76 43 43 uintptr_t page0, page1; 44 44 uint32_t v; 45 int i;46 45 47 46 uintptr_t frame = frame_alloc(ONE_FRAME, FRAME_NONE, 0); … … 56 55 (void *) page1, (void *) frame); 57 56 58 for ( i = 0; i < 2; i++) {57 for (unsigned int i = 0; i < 2; i++) { 59 58 TPRINTF("Writing magic using the first virtual address.\n"); 60 59 61 60 *((uint32_t *) page0) = TEST_MAGIC; 62 61 63 62 TPRINTF("Reading magic using the second virtual address.\n"); 64 63 65 64 v = *((uint32_t *) page1); 66 65 67 66 if (v != TEST_MAGIC) { 68 67 km_unmap(page0, PAGE_SIZE); … … 71 70 return "Criss-cross read does not match the value written."; 72 71 } 73 72 74 73 TPRINTF("Writing zero using the second virtual address.\n"); 75 74 76 75 *((uint32_t *) page1) = 0; 77 76 78 77 TPRINTF("Reading zero using the first virtual address.\n"); 79 78 80 79 v = *((uint32_t *) page0); 81 80 82 81 if (v != 0) { 83 82 km_unmap(page0, PAGE_SIZE); … … 87 86 } 88 87 } 89 88 90 89 km_unmap(page0, PAGE_SIZE); 91 90 km_unmap(page1, PAGE_SIZE);
Note:
See TracChangeset
for help on using the changeset viewer.