X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/bd504ef0e0b883cdd7917b73b3574eb9ce669905..39236c6e673c41db228275375ab7fdb0f837b292:/bsd/kern/makesyscalls.sh diff --git a/bsd/kern/makesyscalls.sh b/bsd/kern/makesyscalls.sh index d585708d1..405c027d4 100755 --- a/bsd/kern/makesyscalls.sh +++ b/bsd/kern/makesyscalls.sh @@ -242,8 +242,9 @@ s/\$//g printf "void munge_wws(const void *, void *); \n" > sysarg printf "void munge_wwwsw(const void *, void *); \n" > sysarg printf "void munge_llllll(const void *, void *); \n" > sysarg + printf "void munge_ll(const void *, void *); \n" > sysarg printf "#else \n" > sysarg - printf "/* ARM does not need mungers for BSD system calls. */\n" > sysarg + printf "/* ARM does not need mungers for BSD system calls... */\n" > sysarg printf "#define munge_w NULL \n" > sysarg printf "#define munge_ww NULL \n" > sysarg printf "#define munge_www NULL \n" > sysarg @@ -274,6 +275,7 @@ s/\$//g printf "#define munge_wws NULL \n" > sysarg printf "#define munge_wwwsw NULL \n" > sysarg printf "#define munge_llllll NULL \n" > sysarg + printf "#define munge_ll NULL \n" > sysarg printf "#endif /* __arm__ */\n" > sysarg printf "\n" > sysarg printf "/* Active 64-bit user ABIs do not need munging */\n" > sysarg @@ -482,13 +484,9 @@ s/\$//g add_sysnames_entry = 1 add_sysheader_entry = 1 add_sysproto_entry = 1 - add_64bit_unsafe = 0 - add_64bit_fakesafe = 0 - add_resv = "0" - my_flags = "0" - if ($3 != "ALL" && $3 != "UALL") { + if ($3 != "ALL") { files_keyword_OK = 0 add_sysent_entry = 0 add_sysnames_entry = 0 @@ -511,21 +509,12 @@ s/\$//g add_sysproto_entry = 1 files_keyword_OK = 1 } - if (match($3, "[U]") != 0) { - add_64bit_unsafe = 1 - } - if (match($3, "[F]") != 0) { - add_64bit_fakesafe = 1 - } if (files_keyword_OK == 0) { printf "%s: line %d: unrecognized keyword %s\n", infile, NR, $2 exit 1 } } - else if ($3 == "UALL") { - add_64bit_unsafe = 1; - } parseline() @@ -550,29 +539,25 @@ s/\$//g # each argument consumes 64-bits. # see .../xnu/bsd/dev/ppc/munge.s for munge argument types. if (argtype[i] == "long") { - if (add_64bit_unsafe == 0) - ext_argtype[i] = "user_long_t"; + ext_argtype[i] = "user_long_t"; munge32 = munge32 "s" munge64 = munge64 "d" size32 += 4 } else if (argtype[i] == "u_long") { - if (add_64bit_unsafe == 0) - ext_argtype[i] = "user_ulong_t"; + ext_argtype[i] = "user_ulong_t"; munge32 = munge32 "w" munge64 = munge64 "d" size32 += 4 } else if (argtype[i] == "size_t") { - if (add_64bit_unsafe == 0) - ext_argtype[i] = "user_size_t"; + ext_argtype[i] = "user_size_t"; munge32 = munge32 "w" munge64 = munge64 "d" size32 += 4 } else if (argtype[i] == "ssize_t") { - if (add_64bit_unsafe == 0) - ext_argtype[i] = "user_ssize_t"; + ext_argtype[i] = "user_ssize_t"; munge32 = munge32 "s" munge64 = munge64 "d" size32 += 4 @@ -589,9 +574,8 @@ s/\$//g size32 += 4 } else if (argtype[i] == "caddr_t" || argtype[i] == "semun_t" || - match(argtype[i], "[\*]") != 0) { - if (add_64bit_unsafe == 0) - ext_argtype[i] = "user_addr_t"; + argtype[i] == "uuid_t" || match(argtype[i], "[\*]") != 0) { + ext_argtype[i] = "user_addr_t"; munge32 = munge32 "w" munge64 = munge64 "d" size32 += 4 @@ -602,7 +586,8 @@ s/\$//g argtype[i] == "socklen_t" || argtype[i] == "uint32_t" || argtype[i] == "int32_t" || argtype[i] == "sigset_t" || argtype[i] == "gid_t" || argtype[i] == "unsigned int" || argtype[i] == "mode_t" || argtype[i] == "key_t" || - argtype[i] == "mach_port_name_t" || argtype[i] == "au_asid_t") { + argtype[i] == "mach_port_name_t" || argtype[i] == "au_asid_t" || + argtype[i] == "associd_t" || argtype[i] == "connid_t") { munge32 = munge32 "w" munge64 = munge64 "d" size32 += 4 @@ -685,13 +670,10 @@ s/\$//g } } - if (add_64bit_unsafe == 1 && add_64bit_fakesafe == 0) - my_flags = "UNSAFE_64BIT"; - - printf("\t{%s, %s, %s, \(sy_call_t *\)%s, %s, %s, %s, %s},", - argssize, add_resv, my_flags, tempname, munge32, munge64, munge_ret, size32) > sysent - linesize = length(argssize) + length(add_resv) + length(my_flags) + length(tempname) + \ - length(munge32) + length(munge64) + length(munge_ret) + 28 + printf("\t{ \(sy_call_t *\)%s, %s, %s, %s, %s, %s},", + tempname, munge32, munge64, munge_ret, argssize, size32) > sysent + linesize = length(tempname) + length(munge32) + length(munge64) + \ + length(munge_ret) + length(argssize) + length(size32) + 28 align_comment(linesize, 88, sysent) printf("/* %d = %s%s*/\n", syscall_num, funcname, additional_comments) > sysent