summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuca Dariz <luca@orpolo.org>2023-02-16 22:33:17 +0100
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2023-02-16 23:27:44 +0100
commit68945d0b2b858dedf5481b1df2b0ce44ce92e0b6 (patch)
tree0685e1205172b9696ab2c9a3e7e209888ffbbc74
parent78395241a0546832f0904492579df8210f7a176e (diff)
x86_64: fix argument passing to bootstrap modules if ! USER32
* kern/bootstrap.c: replace integers with long/vm_offset_t Message-Id: <20230216213318.2048699-3-luca@orpolo.org>
-rw-r--r--kern/bootstrap.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/kern/bootstrap.c b/kern/bootstrap.c
index 91f4241e..8f66a4b5 100644
--- a/kern/bootstrap.c
+++ b/kern/bootstrap.c
@@ -579,7 +579,7 @@ build_args_and_stack(struct exec_info *boot_exec_info,
vm_offset_t stack_base;
vm_size_t stack_size;
char * arg_ptr;
- int arg_count, envc;
+ long arg_count, envc;
int arg_len;
char * arg_pos;
int arg_item_len;
@@ -612,7 +612,7 @@ build_args_and_stack(struct exec_info *boot_exec_info,
* trailing 0 pointer
* and align to integer boundary
*/
- arg_len += (sizeof(integer_t)
+ arg_len += (sizeof(rpc_vm_offset_t)
+ (arg_count + 1 + envc + 1) * sizeof(rpc_vm_offset_t));
arg_len = (arg_len + sizeof(integer_t) - 1) & ~(sizeof(integer_t)-1);
@@ -633,7 +633,7 @@ build_args_and_stack(struct exec_info *boot_exec_info,
* Start the strings after the arg-count and pointers
*/
string_pos = (arg_pos
- + sizeof(integer_t)
+ + sizeof(rpc_vm_offset_t)
+ (arg_count + 1 + envc + 1) * sizeof(rpc_vm_offset_t));
/*
@@ -641,8 +641,8 @@ build_args_and_stack(struct exec_info *boot_exec_info,
*/
(void) copyout(&arg_count,
arg_pos,
- sizeof(integer_t));
- arg_pos += sizeof(integer_t);
+ sizeof(rpc_vm_offset_t));
+ arg_pos += sizeof(rpc_vm_offset_t);
/*
* Then the strings and string pointers for each argument