Changeset a1b9f63 in mainline for kernel/generic/src
- Timestamp:
- 2018-08-31T10:32:40Z (7 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 6bf5b8c
- Parents:
- b1834a01
- git-author:
- Jakub Jermar <jakub@…> (2018-08-31 09:54:11)
- git-committer:
- Jakub Jermar <jakub@…> (2018-08-31 10:32:40)
- Location:
- kernel/generic/src
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/src/console/cmd.c
rb1834a01 ra1b9f63 728 728 #endif 729 729 ptr = (uint8_t *) km_map(argv[0].intval, sizeof(uint8_t), 730 PAGE_ NOT_CACHEABLE);730 PAGE_SIZE, PAGE_NOT_CACHEABLE); 731 731 732 732 const uint8_t val = pio_read_8(ptr); … … 758 758 #endif 759 759 ptr = (uint16_t *) km_map(argv[0].intval, sizeof(uint16_t), 760 PAGE_ NOT_CACHEABLE);760 PAGE_SIZE, PAGE_NOT_CACHEABLE); 761 761 762 762 const uint16_t val = pio_read_16(ptr); … … 788 788 #endif 789 789 ptr = (uint32_t *) km_map(argv[0].intval, sizeof(uint32_t), 790 PAGE_ NOT_CACHEABLE);790 PAGE_SIZE, PAGE_NOT_CACHEABLE); 791 791 792 792 const uint32_t val = pio_read_32(ptr); … … 818 818 #endif 819 819 ptr = (uint8_t *) km_map(argv[0].intval, sizeof(uint8_t), 820 PAGE_ NOT_CACHEABLE);820 PAGE_SIZE, PAGE_NOT_CACHEABLE); 821 821 822 822 printf("write %" PRIxn ": %" PRIx8 "\n", argv[0].intval, … … 849 849 #endif 850 850 ptr = (uint16_t *) km_map(argv[0].intval, sizeof(uint16_t), 851 PAGE_ NOT_CACHEABLE);851 PAGE_SIZE, PAGE_NOT_CACHEABLE); 852 852 853 853 printf("write %" PRIxn ": %" PRIx16 "\n", argv[0].intval, … … 880 880 #endif 881 881 ptr = (uint32_t *) km_map(argv[0].intval, sizeof(uint32_t), 882 PAGE_ NOT_CACHEABLE);882 PAGE_SIZE, PAGE_NOT_CACHEABLE); 883 883 884 884 printf("write %" PRIxn ": %" PRIx32 "\n", argv[0].intval, -
kernel/generic/src/ipc/irq.c
rb1834a01 ra1b9f63 95 95 #endif 96 96 ranges[i].base = km_map(pbase[i], ranges[i].size, 97 KM_NATURAL_ALIGNMENT, 97 98 PAGE_READ | PAGE_WRITE | PAGE_KERNEL | PAGE_NOT_CACHEABLE); 98 99 if (!ranges[i].base) { -
kernel/generic/src/main/kinit.c
rb1834a01 ra1b9f63 249 249 */ 250 250 uintptr_t page = km_map(init.tasks[i].paddr, 251 init.tasks[i].size, 251 init.tasks[i].size, KM_NATURAL_ALIGNMENT, 252 252 PAGE_READ | PAGE_WRITE | PAGE_CACHEABLE); 253 253 assert(page); -
kernel/generic/src/mm/km.c
rb1834a01 ra1b9f63 130 130 131 131 static uintptr_t 132 km_map_aligned(uintptr_t paddr, size_t size, unsigned int flags)132 km_map_aligned(uintptr_t paddr, size_t size, size_t align, unsigned int flags) 133 133 { 134 134 uintptr_t vaddr; 135 size_t align;136 135 uintptr_t offs; 136 137 if (align == KM_NATURAL_ALIGNMENT) 138 align = ispwr2(size) ? size : (1U << (fnzb(size) + 1)); 137 139 138 140 assert(ALIGN_DOWN(paddr, FRAME_SIZE) == paddr); 139 141 assert(ALIGN_UP(size, FRAME_SIZE) == size); 140 141 /* Enforce natural or at least PAGE_SIZE alignment. */ 142 align = ispwr2(size) ? size : (1U << (fnzb(size) + 1));142 assert(ispwr2(align)); 143 144 /* Enforce at least PAGE_SIZE alignment. */ 143 145 vaddr = km_page_alloc(size, max(PAGE_SIZE, align)); 144 146 … … 185 187 * @return New virtual address mapped to paddr. 186 188 */ 187 uintptr_t km_map(uintptr_t paddr, size_t size, unsigned int flags)189 uintptr_t km_map(uintptr_t paddr, size_t size, size_t align, unsigned int flags) 188 190 { 189 191 uintptr_t page; … … 192 194 offs = paddr - ALIGN_DOWN(paddr, FRAME_SIZE); 193 195 page = km_map_aligned(ALIGN_DOWN(paddr, FRAME_SIZE), 194 ALIGN_UP(size + offs, FRAME_SIZE), flags);196 ALIGN_UP(size + offs, FRAME_SIZE), align, flags); 195 197 196 198 return page + offs; … … 256 258 frame = frame_alloc(1, FRAME_HIGHMEM | FRAME_ATOMIC | flags, 0); 257 259 if (frame) { 258 page = km_map(frame, PAGE_SIZE, 260 page = km_map(frame, PAGE_SIZE, PAGE_SIZE, 259 261 PAGE_READ | PAGE_WRITE | PAGE_CACHEABLE); 260 262 if (!page) {
Note:
See TracChangeset
for help on using the changeset viewer.