Rev 862 | Rev 886 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 862 | Rev 864 | ||
---|---|---|---|
Line 333... | Line 333... | ||
333 | } |
333 | } |
334 | return NULL; |
334 | return NULL; |
335 | }; |
335 | }; |
336 | 336 | ||
Line 337... | Line -... | ||
337 | void* __stdcall alloc_kernel_space(size_t size); //__asm__("alloc_kernel_space"); |
- | |
338 | - | ||
339 | - | ||
340 | void* __stdcall alloc_kernel_space(size_t size) |
337 | void * __fastcall heap_alloc(size_t size, u32_t flags) |
341 | { |
338 | { |
342 | md_t *md; |
339 | md_t *md; |
Line 343... | Line 340... | ||
343 | 340 | ||
Line 344... | Line 341... | ||
344 | size = (size+4095)&~4095; |
341 | size = (size+4095)&~4095; |
Line 345... | Line -... | ||
345 | - | ||
346 | md = find_small_md(size); |
- | |
347 | 342 | ||
- | 343 | md = find_small_md(size); |
|
- | 344 | ||
- | 345 | if( md ) |
|
- | 346 | { |
|
- | 347 | if( flags & PG_MAP ) |
|
- | 348 | { |
|
- | 349 | count_t tmp = size >> 12; |
|
- | 350 | addr_t *pte = &((addr_t*)page_tabs)[md->base>>12]; |
|
- | 351 | ||
- | 352 | while(tmp) |
|
- | 353 | { |
|
- | 354 | u32_t order; |
|
- | 355 | addr_t frame; |
|
- | 356 | size_t size; |
|
- | 357 | ||
- | 358 | asm volatile ("bsr %0, %1":"=&r"(order):"r"(tmp):"cc"); |
|
- | 359 | asm volatile ("btr %0, %1" :"=r"(tmp):"r"(order):"cc"); |
|
- | 360 | ||
- | 361 | frame = core_alloc(order) | flags; |
|
- | 362 | ||
- | 363 | size = (1 << order); |
|
- | 364 | while(size--) |
|
- | 365 | { |
|
- | 366 | *pte++ = frame; |
|
- | 367 | frame+= 4096; |
|
- | 368 | }; |
|
348 | DBG("alloc_kernel_space: %x size %x\n\n",md->base, size); |
369 | }; |
- | 370 | }; |
|
349 | 371 | DBG("alloc_heap: %x size %x\n\n",md->base, size); |
|
350 | if( md ) |
372 | return (void*)md->base; |
- | 373 | }; |
|
Line 351... | Line -... | ||
351 | return (void*)md->base; |
- | |
352 | return NULL; |
- | |
353 | } |
- | |
354 | - | ||
355 | //void* __stdcall kernel_alloc(size_t size) |
- | |
356 | //{ |
- |