Lines 418-432
Link Here
|
418 |
|
418 |
|
419 |
if ((fProt & RTMEM_PROT_NONE) == RTMEM_PROT_NONE) |
419 |
if ((fProt & RTMEM_PROT_NONE) == RTMEM_PROT_NONE) |
420 |
ProtectionFlags = VM_PROT_NONE; |
420 |
ProtectionFlags = VM_PROT_NONE; |
421 |
@@ -826,6 +885,7 @@ DECLHIDDEN(int) rtR0MemObjNativeProtect(PRTR0MEMOBJINT |
421 |
@@ -825,7 +884,12 @@ DECLHIDDEN(int) rtR0MemObjNativeProtect(PRTR0MEMOBJINT |
|
|
422 |
if ((fProt & RTMEM_PROT_EXEC) == RTMEM_PROT_EXEC) |
422 |
ProtectionFlags |= VM_PROT_EXECUTE; |
423 |
ProtectionFlags |= VM_PROT_EXECUTE; |
423 |
|
424 |
|
|
|
425 |
+#if __FreeBSD_version >= 1300135 |
426 |
+ int krc = vm_map_protect(pVmMap, AddrStart, AddrEnd, ProtectionFlags, 0, VM_MAP_PROTECT_SET_PROT); |
427 |
+#else |
424 |
int krc = vm_map_protect(pVmMap, AddrStart, AddrEnd, ProtectionFlags, FALSE); |
428 |
int krc = vm_map_protect(pVmMap, AddrStart, AddrEnd, ProtectionFlags, FALSE); |
|
|
429 |
+#endif |
425 |
+ IPRT_FREEBSD_RESTORE_EFL_AC(); |
430 |
+ IPRT_FREEBSD_RESTORE_EFL_AC(); |
426 |
if (krc == KERN_SUCCESS) |
431 |
if (krc == KERN_SUCCESS) |
427 |
return VINF_SUCCESS; |
432 |
return VINF_SUCCESS; |
428 |
|
433 |
|
429 |
@@ -850,11 +910,19 @@ DECLHIDDEN(RTHCPHYS) rtR0MemObjNativeGetPagePhysAddr(P |
434 |
@@ -850,11 +914,19 @@ DECLHIDDEN(RTHCPHYS) rtR0MemObjNativeGetPagePhysAddr(P |
430 |
|
435 |
|
431 |
vm_offset_t pb = (vm_offset_t)pMemFreeBSD->Core.pv + ptoa(iPage); |
436 |
vm_offset_t pb = (vm_offset_t)pMemFreeBSD->Core.pv + ptoa(iPage); |
432 |
|
437 |
|
Lines 450-456
Link Here
|
450 |
} |
455 |
} |
451 |
|
456 |
|
452 |
case RTR0MEMOBJTYPE_MAPPING: |
457 |
case RTR0MEMOBJTYPE_MAPPING: |
453 |
@@ -863,11 +931,15 @@ DECLHIDDEN(RTHCPHYS) rtR0MemObjNativeGetPagePhysAddr(P |
458 |
@@ -863,11 +935,15 @@ DECLHIDDEN(RTHCPHYS) rtR0MemObjNativeGetPagePhysAddr(P |
454 |
|
459 |
|
455 |
if (pMemFreeBSD->Core.u.Mapping.R0Process != NIL_RTR0PROCESS) |
460 |
if (pMemFreeBSD->Core.u.Mapping.R0Process != NIL_RTR0PROCESS) |
456 |
{ |
461 |
{ |
Lines 467-473
Link Here
|
467 |
} |
472 |
} |
468 |
return vtophys(pb); |
473 |
return vtophys(pb); |
469 |
} |
474 |
} |
470 |
@@ -877,6 +949,7 @@ DECLHIDDEN(RTHCPHYS) rtR0MemObjNativeGetPagePhysAddr(P |
475 |
@@ -877,6 +953,7 @@ DECLHIDDEN(RTHCPHYS) rtR0MemObjNativeGetPagePhysAddr(P |
471 |
case RTR0MEMOBJTYPE_PHYS_NC: |
476 |
case RTR0MEMOBJTYPE_PHYS_NC: |
472 |
{ |
477 |
{ |
473 |
RTHCPHYS addr; |
478 |
RTHCPHYS addr; |
Lines 475-481
Link Here
|
475 |
#if __FreeBSD_version >= 1000030 |
480 |
#if __FreeBSD_version >= 1000030 |
476 |
VM_OBJECT_WLOCK(pMemFreeBSD->pObject); |
481 |
VM_OBJECT_WLOCK(pMemFreeBSD->pObject); |
477 |
#else |
482 |
#else |
478 |
@@ -888,6 +961,7 @@ DECLHIDDEN(RTHCPHYS) rtR0MemObjNativeGetPagePhysAddr(P |
483 |
@@ -888,6 +965,7 @@ DECLHIDDEN(RTHCPHYS) rtR0MemObjNativeGetPagePhysAddr(P |
479 |
#else |
484 |
#else |
480 |
VM_OBJECT_UNLOCK(pMemFreeBSD->pObject); |
485 |
VM_OBJECT_UNLOCK(pMemFreeBSD->pObject); |
481 |
#endif |
486 |
#endif |