Subversion Repositories Kolibri OS

Rev

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
//{
-