Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/generic/src/ddi/ddi.c

    r5df1963 rba2be23  
    322322}
    323323
    324 NO_TRACE static int dmamem_map_anonymous(size_t size, uintptr_t constraint,
    325     unsigned int map_flags, unsigned int flags, uintptr_t *phys,
    326     uintptr_t *virt, uintptr_t bound)
     324NO_TRACE static int dmamem_map_anonymous(size_t size, unsigned int map_flags,
     325    unsigned int flags, uintptr_t *phys, uintptr_t *virt, uintptr_t bound)
    327326{
    328327        ASSERT(TASK);
    329328       
    330329        size_t frames = SIZE2FRAMES(size);
    331         *phys = frame_alloc_noreserve(frames, 0, constraint);
     330        uint8_t order;
     331       
     332        /* We need the 2^order >= frames */
     333        if (frames == 1)
     334                order = 0;
     335        else
     336                order = fnzb(frames - 1) + 1;
     337       
     338        *phys = frame_alloc_noreserve(order, 0, 0);
    332339        if (*phys == 0)
    333340                return ENOMEM;
     
    339346        if (!as_area_create(TASK->as, map_flags, size,
    340347            AS_AREA_ATTR_NONE, &phys_backend, &backend_data, virt, bound)) {
    341                 frame_free_noreserve(*phys, frames);
     348                frame_free_noreserve(*phys);
    342349                return ENOMEM;
    343350        }
     
    383390                 */
    384391               
    385                 uintptr_t constraint;
    386                 int rc = copy_from_uspace(&constraint, phys_ptr,
    387                     sizeof(constraint));
    388                 if (rc != EOK)
    389                         return rc;
    390                
    391392                uintptr_t phys;
    392393                uintptr_t virt = (uintptr_t) -1;
    393                 rc = dmamem_map_anonymous(size, constraint, map_flags, flags,
     394                int rc = dmamem_map_anonymous(size, map_flags, flags,
    394395                    &phys, &virt, bound);
    395396                if (rc != EOK)
Note: See TracChangeset for help on using the changeset viewer.