Rev 1178 | Rev 1233 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1178 | Rev 1179 | ||
---|---|---|---|
Line 222... | Line 222... | ||
222 | */ |
222 | */ |
223 | spinlock_unlock(&AS->lock); |
223 | spinlock_unlock(&AS->lock); |
224 | return 0; |
224 | return 0; |
225 | } |
225 | } |
226 | 226 | ||
- | 227 | ASSERT(!(area->flags & AS_AREA_DEVICE)); |
|
- | 228 | ||
227 | page_table_lock(AS, false); |
229 | page_table_lock(AS, false); |
228 | 230 | ||
229 | /* |
231 | /* |
230 | * To avoid race condition between two page faults |
232 | * To avoid race condition between two page faults |
231 | * on the same address, we need to make sure |
233 | * on the same address, we need to make sure |
Line 445... | Line 447... | ||
445 | spinlock_unlock(&as->lock); |
447 | spinlock_unlock(&as->lock); |
446 | interrupts_restore(ipl); |
448 | interrupts_restore(ipl); |
447 | return (__address) -1; |
449 | return (__address) -1; |
448 | } |
450 | } |
449 | 451 | ||
- | 452 | if (area->flags & AS_AREA_DEVICE) { |
|
- | 453 | /* |
|
- | 454 | * Remapping of address space areas associated |
|
- | 455 | * with memory mapped devices is not supported. |
|
- | 456 | */ |
|
- | 457 | spinlock_unlock(&area->lock); |
|
- | 458 | spinlock_unlock(&as->lock); |
|
- | 459 | interrupts_restore(ipl); |
|
- | 460 | return (__address) -1; |
|
- | 461 | } |
|
- | 462 | ||
450 | pages = SIZE2FRAMES((address - area->base) + size); |
463 | pages = SIZE2FRAMES((address - area->base) + size); |
451 | if (pages < area->pages) { |
464 | if (pages < area->pages) { |
452 | int i; |
465 | int i; |
453 | 466 | ||
454 | /* |
467 | /* |