summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Thibault <samuel.thibault@ens-lyon.org>2020-03-29 12:43:12 +0200
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2020-03-29 12:45:12 +0200
commit1e90662dd80c64de27b432c9d6911fad937da804 (patch)
tree2ae3dbea05ee40f847991c5c6f43591033e180da
parent573668e85a9bf59a9c64df03b6ffc7e8669a6df6 (diff)
64bit: Fix vm_size_t size
It needs to be able to hold > 4G size. * i386/include/mach/i386/vm_types.h (vm_size_t): Set type to unsigned long. * vm/vm_user.c (vm_read, vm_write): Fix type according to RPC. * i386/i386at/model_dep.c (c_boot_entry): Fix format. * device/dev_pager.c (device_pager_data_request): Fix format.
-rw-r--r--device/dev_pager.c2
-rw-r--r--i386/i386at/model_dep.c2
-rw-r--r--i386/include/mach/i386/vm_types.h5
-rw-r--r--vm/vm_user.c4
4 files changed, 8 insertions, 5 deletions
diff --git a/device/dev_pager.c b/device/dev_pager.c
index 0680b5aa..84db5ed8 100644
--- a/device/dev_pager.c
+++ b/device/dev_pager.c
@@ -328,7 +328,7 @@ kern_return_t device_pager_data_request(
dev_pager_t ds;
if (device_pager_debug)
- printf("(device_pager)data_request: pager=%p, offset=0x%lx, length=0x%x\n",
+ printf("(device_pager)data_request: pager=%p, offset=0x%lx, length=0x%lx\n",
pager, offset, length);
ds = dev_pager_hash_lookup(pager);
diff --git a/i386/i386at/model_dep.c b/i386/i386at/model_dep.c
index 02adec17..72798fd4 100644
--- a/i386/i386at/model_dep.c
+++ b/i386/i386at/model_dep.c
@@ -574,7 +574,7 @@ void c_boot_entry(vm_offset_t bi)
strtab_size = (vm_offset_t)phystokv(boot_info.syms.a.strsize);
kern_sym_end = kern_sym_start + 4 + symtab_size + strtab_size;
- printf("kernel symbol table at %08lx-%08lx (%d,%d)\n",
+ printf("kernel symbol table at %08lx-%08lx (%ld,%ld)\n",
kern_sym_start, kern_sym_end,
symtab_size, strtab_size);
}
diff --git a/i386/include/mach/i386/vm_types.h b/i386/include/mach/i386/vm_types.h
index 4e259f9b..78fb805b 100644
--- a/i386/include/mach/i386/vm_types.h
+++ b/i386/include/mach/i386/vm_types.h
@@ -48,6 +48,9 @@
* a port in user space as an integer and
* in kernel space as a pointer.
*/
+#ifdef __x86_64__
+// unsigned long ?
+#endif
typedef unsigned int natural_t;
/*
@@ -80,7 +83,7 @@ typedef unsigned long phys_addr_t;
* expressing the difference between two
* vm_offset_t entities.
*/
-typedef natural_t vm_size_t;
+typedef unsigned long vm_size_t;
#endif /* __ASSEMBLER__ */
diff --git a/vm/vm_user.c b/vm/vm_user.c
index b6a069a5..92b1e494 100644
--- a/vm/vm_user.c
+++ b/vm/vm_user.c
@@ -242,7 +242,7 @@ kern_return_t vm_read(
vm_address_t address,
vm_size_t size,
pointer_t *data,
- vm_size_t *data_size)
+ mach_msg_type_number_t *data_size)
{
kern_return_t error;
vm_map_copy_t ipc_address;
@@ -265,7 +265,7 @@ kern_return_t vm_write(
vm_map_t map,
vm_address_t address,
pointer_t data,
- vm_size_t size)
+ mach_msg_type_number_t size)
{
if (map == VM_MAP_NULL)
return KERN_INVALID_ARGUMENT;