diff options
author | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2020-03-29 12:43:12 +0200 |
---|---|---|
committer | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2020-03-29 12:45:12 +0200 |
commit | 1e90662dd80c64de27b432c9d6911fad937da804 (patch) | |
tree | 2ae3dbea05ee40f847991c5c6f43591033e180da | |
parent | 573668e85a9bf59a9c64df03b6ffc7e8669a6df6 (diff) | |
download | gnumach-1e90662dd80c64de27b432c9d6911fad937da804.tar.gz gnumach-1e90662dd80c64de27b432c9d6911fad937da804.tar.bz2 gnumach-1e90662dd80c64de27b432c9d6911fad937da804.zip |
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.c | 2 | ||||
-rw-r--r-- | i386/i386at/model_dep.c | 2 | ||||
-rw-r--r-- | i386/include/mach/i386/vm_types.h | 5 | ||||
-rw-r--r-- | vm/vm_user.c | 4 |
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; |