- Timestamp:
- 2007-03-27T23:40:25Z (19 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 399ece9
- Parents:
- 8d37a06
- Location:
- uspace
- Files:
-
- 13 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/fb/ega.c
r8d37a06 r2057572 316 316 317 317 sz = scr_width * scr_height * 2; 318 scr_addr = as_get_mappable_page(sz, (int) 319 sysinfo_value("fb.address.color")); 318 scr_addr = as_get_mappable_page(sz); 320 319 321 320 physmem_map(ega_ph_addr, scr_addr, ALIGN_UP(sz, PAGE_SIZE) >> -
uspace/fb/fb.c
r8d37a06 r2057572 756 756 /* We accept one area for data interchange */ 757 757 if (IPC_GET_ARG1(*call) == shm_id) { 758 void *dest = as_get_mappable_page(IPC_GET_ARG2(*call), 759 PAGE_COLOR(IPC_GET_ARG1(*call))); 758 void *dest = as_get_mappable_page(IPC_GET_ARG2(*call)); 760 759 shm_size = IPC_GET_ARG2(*call); 761 760 if (!ipc_answer_fast(callid, 0, (sysarg_t) dest, 0)) … … 1370 1369 1371 1370 asz = fb_scanline * fb_height; 1372 fb_addr = as_get_mappable_page(asz, (int) 1373 sysinfo_value("fb.address.color")); 1371 fb_addr = as_get_mappable_page(asz); 1374 1372 1375 1373 physmem_map(fb_ph_addr, fb_addr, ALIGN_UP(asz, PAGE_SIZE) >> -
uspace/fb/main.c
r8d37a06 r2057572 44 44 void *dest; 45 45 46 dest = as_get_mappable_page(IPC_GET_ARG2(*call), 47 PAGE_COLOR(IPC_GET_ARG1(*call))); 46 dest = as_get_mappable_page(IPC_GET_ARG2(*call)); 48 47 if (ipc_answer_fast(callid, 0, (sysarg_t) dest, 0) == 0) { 49 48 if (*area) -
uspace/klog/klog.c
r8d37a06 r2057572 63 63 printf("Kernel console output.\n"); 64 64 65 mapping = as_get_mappable_page(PAGE_SIZE , sysinfo_value("klog.fcolor"));65 mapping = as_get_mappable_page(PAGE_SIZE); 66 66 res = ipc_call_sync_3(PHONE_NS, IPC_M_AS_AREA_RECV, 67 67 (sysarg_t) mapping, PAGE_SIZE, SERVICE_MEM_KLOG, -
uspace/libc/arch/sparc64/_link.ld.in
r8d37a06 r2057572 8 8 9 9 SECTIONS { 10 . = 0x 2000;10 . = 0x4000; 11 11 12 .init ALIGN(0x 2000) : SUBALIGN(0x2000) {12 .init ALIGN(0x4000) : SUBALIGN(0x4000) { 13 13 *(.init); 14 14 } :text … … 18 18 } :text 19 19 20 .got ALIGN(0x 2000) : SUBALIGN(0x2000) {20 .got ALIGN(0x4000) : SUBALIGN(0x4000) { 21 21 _gp = .; 22 22 *(.got*); 23 23 } :data 24 .data ALIGN(0x 2000) : SUBALIGN(0x2000) {24 .data ALIGN(0x4000) : SUBALIGN(0x4000) { 25 25 *(.data); 26 26 *(.sdata); … … 42 42 } :data 43 43 44 . = ALIGN(0x 2000);44 . = ALIGN(0x4000); 45 45 _heap = .; 46 46 -
uspace/libc/arch/sparc64/include/config.h
r8d37a06 r2057572 36 36 #define LIBC_sparc64_CONFIG_H_ 37 37 38 #define PAGE_WIDTH 1 339 #define PAGE_SIZE (1 <<PAGE_WIDTH)40 #define PAGE_COLOR_BITS 1 /**< Bit 13 is the page color. */38 #define PAGE_WIDTH 14 39 #define PAGE_SIZE (1 << PAGE_WIDTH) 40 #define PAGE_COLOR_BITS 0 /**< Only one page color. */ 41 41 42 42 #endif -
uspace/libc/arch/sparc64/include/stack.h
r8d37a06 r2057572 44 44 * 16-extended-word save area for %i[0-7] and %l[0-7] registers. 45 45 */ 46 #define STACK_WINDOW_SAVE_AREA_SIZE (16 *STACK_ITEM_SIZE)46 #define STACK_WINDOW_SAVE_AREA_SIZE (16 * STACK_ITEM_SIZE) 47 47 48 48 /** -
uspace/libc/generic/as.c
r8d37a06 r2057572 56 56 { 57 57 return (void *) __SYSCALL3(SYS_AS_AREA_CREATE, (sysarg_t ) address, 58 58 (sysarg_t) size, (sysarg_t) flags); 59 59 } 60 60 … … 70 70 int as_area_resize(void *address, size_t size, int flags) 71 71 { 72 return __SYSCALL3(SYS_AS_AREA_RESIZE, (sysarg_t ) address, (sysarg_t)73 72 return __SYSCALL3(SYS_AS_AREA_RESIZE, (sysarg_t ) address, 73 (sysarg_t) size, (sysarg_t) flags); 74 74 } 75 75 … … 144 144 * 145 145 * @param sz Requested size of the allocation. 146 * @param color Requested virtual color of the allocation.147 146 * 148 147 * @return Pointer to the beginning … … 151 150 * the pointer to last area 152 151 */ 153 void *as_get_mappable_page(size_t sz , int color)152 void *as_get_mappable_page(size_t sz) 154 153 { 155 154 void *res; … … 167 166 168 167 /* 169 * Make sure we allocate from naturally aligned address and a page of 170 * appropriate color. 168 * Make sure we allocate from naturally aligned address. 171 169 */ 172 170 i = 0; 173 do { 174 if (!last_allocated) { 175 last_allocated = (void *) ALIGN_UP((void *) &_heap + 176 maxheapsize, asz); 177 } else { 178 last_allocated = (void *) ALIGN_UP(((uintptr_t) 179 last_allocated) + (int) (i > 0), asz); 180 } 181 } while ((asz < (1 << (PAGE_COLOR_BITS + PAGE_WIDTH))) && 182 (PAGE_COLOR((uintptr_t) last_allocated) != color) && 183 (++i < (1 << PAGE_COLOR_BITS))); 171 if (!last_allocated) { 172 last_allocated = (void *) ALIGN_UP((void *) &_heap + 173 maxheapsize, asz); 174 } else { 175 last_allocated = (void *) ALIGN_UP(((uintptr_t) 176 last_allocated) + (int) (i > 0), asz); 177 } 184 178 185 179 res = last_allocated; -
uspace/libc/generic/mman.c
r8d37a06 r2057572 37 37 #include <unistd.h> 38 38 39 void *mmap(void *start, size_t length, int prot, int flags, int fd, off_t offset) 39 void *mmap(void *start, size_t length, int prot, int flags, int fd, 40 off_t offset) 40 41 { 41 42 if (!start) 42 start = as_get_mappable_page(length , 0);43 start = as_get_mappable_page(length); 43 44 44 45 // if (! ((flags & MAP_SHARED) ^ (flags & MAP_PRIVATE))) -
uspace/libc/generic/time.c
r8d37a06 r2057572 73 73 74 74 if (!ktime) { 75 mapping = as_get_mappable_page(PAGE_SIZE, (int) 76 sysinfo_value("clock.fcolor")); 75 mapping = as_get_mappable_page(PAGE_SIZE); 77 76 /* Get the mapping of kernel clock */ 78 res = ipc_call_sync_3(PHONE_NS, IPC_M_AS_AREA_RECV, (sysarg_t)79 mapping, PAGE_SIZE, SERVICE_MEM_REALTIME, NULL, &rights,80 77 res = ipc_call_sync_3(PHONE_NS, IPC_M_AS_AREA_RECV, 78 (sysarg_t) mapping, PAGE_SIZE, SERVICE_MEM_REALTIME, NULL, 79 &rights, NULL); 81 80 if (res) { 82 81 printf("Failed to initialize timeofday memarea\n"); -
uspace/libc/include/as.h
r8d37a06 r2057572 41 41 #include <libarch/config.h> 42 42 43 #define PAGE_COLOR(va) (((va) >> PAGE_WIDTH) & ((1 << PAGE_COLOR_BITS) - 1))44 45 43 extern void *as_area_create(void *address, size_t size, int flags); 46 44 extern int as_area_resize(void *address, size_t size, int flags); 47 45 extern int as_area_destroy(void *address); 48 46 extern void *set_maxheapsize(size_t mhs); 49 extern void * as_get_mappable_page(size_t sz , int color);47 extern void * as_get_mappable_page(size_t sz); 50 48 51 49 #endif -
uspace/ns/ns.c
r8d37a06 r2057572 84 84 static void *klogaddr = NULL; 85 85 86 static void get_as_area(ipc_callid_t callid, ipc_call_t *call, char *name, char *colstr,void **addr)86 static void get_as_area(ipc_callid_t callid, ipc_call_t *call, char *name, void **addr) 87 87 { 88 88 void *ph_addr; 89 int ph_color;90 89 91 90 if (!*addr) { … … 95 94 return; 96 95 } 97 ph_color = (int) sysinfo_value(colstr); 98 *addr = as_get_mappable_page(PAGE_SIZE, ph_color); 96 *addr = as_get_mappable_page(PAGE_SIZE); 99 97 physmem_map(ph_addr, *addr, 1, AS_AREA_READ | AS_AREA_CACHEABLE); 100 98 } … … 120 118 case SERVICE_MEM_REALTIME: 121 119 get_as_area(callid, &call, "clock.faddr", 122 "clock.fcolor",&clockaddr);120 &clockaddr); 123 121 break; 124 122 case SERVICE_MEM_KLOG: 125 123 get_as_area(callid, &call, "klog.faddr", 126 "klog.fcolor",&klogaddr);124 &klogaddr); 127 125 break; 128 126 default: -
uspace/rd/rd.c
r8d37a06 r2057572 74 74 size_t rd_size = sysinfo_value("rd.size"); 75 75 void * rd_ph_addr = (void *) sysinfo_value("rd.address.physical"); 76 int rd_color = (int) sysinfo_value("rd.address.color");77 76 78 77 if (rd_size == 0) 79 78 return false; 80 79 81 void * rd_addr = as_get_mappable_page(rd_size , rd_color);80 void * rd_addr = as_get_mappable_page(rd_size); 82 81 83 82 physmem_map(rd_ph_addr, rd_addr, ALIGN_UP(rd_size, PAGE_SIZE) >> PAGE_WIDTH, AS_AREA_READ | AS_AREA_WRITE);
Note:
See TracChangeset
for help on using the changeset viewer.