diff options
Diffstat (limited to 'sys/tools')
-rw-r--r-- | sys/tools/arm_kernel_boothdr.awk | 32 | ||||
-rw-r--r-- | sys/tools/syscalls/config.lua | 1 | ||||
-rw-r--r-- | sys/tools/syscalls/core/syscall.lua | 1 | ||||
-rwxr-xr-x | sys/tools/syscalls/scripts/libsys_h.lua | 8 | ||||
-rwxr-xr-x | sys/tools/syscalls/scripts/syscall_h.lua | 4 | ||||
-rwxr-xr-x | sys/tools/syscalls/scripts/syscalls_map.lua | 2 | ||||
-rw-r--r-- | sys/tools/vnode_if.awk | 6 |
7 files changed, 48 insertions, 6 deletions
diff --git a/sys/tools/arm_kernel_boothdr.awk b/sys/tools/arm_kernel_boothdr.awk index e0f193f7922c..37d8c4b5af0e 100644 --- a/sys/tools/arm_kernel_boothdr.awk +++ b/sys/tools/arm_kernel_boothdr.awk @@ -38,6 +38,7 @@ BEGIN { # The type of header we're writing is set using -v hdrtype= on # the command line, ensure we got a valid value for it. if (hdrtype != "v7jump" && + hdrtype != "v7bootz" && hdrtype != "v8jump" && hdrtype != "v8booti") { print "arm_kernel_boothdr.awk: " \ @@ -107,6 +108,35 @@ function write_v7jump() { write_le32(hexstr_to_num("ea000000") + (gStartOff / 4) - 2) } +function write_v7bootz() { + + # We are writing this struct... + # + # struct BootZ_header { + # uint32_t code0; /* Executable code */ + # uint32_t dummy[8]; /* dummy */ + # uint32_t magic; /* Magic number 0x016f2818*/ + # uint32_t load_offset; /* Image load offset, LE */ + # uint32_t image_size; /* Effective Image size, LE */ + # }; + # + # We write 'b _start' into code0. The image size is everything from + # the start of the loaded image to the offset given by the _end symbol. + + write_v7jump() # code0 + write_le32(0) # dummy[0] + write_le32(0) # dummy[1] + write_le32(0) # dummy[2] + write_le32(0) # dummy[3] + write_le32(0) # dummy[4] + write_le32(0) # dummy[5] + write_le32(0) # dummy[6] + write_le32(0) # dummy[7] + write_le32(hexstr_to_num("016f2818")) # magic marker + write_le32(0) # load_offset (0 -> auto) + write_le32(gEndOff) # image_size +} + function write_v8jump() { # Write the machine code for "b _start"... @@ -186,6 +216,8 @@ END { if (gHdrType == "v7jump") { write_v7jump() + } else if (gHdrType == "v7bootz") { + write_v7bootz() } else if (gHdrType == "v8jump") { write_v8jump() } else if (gHdrType == "v8booti") { diff --git a/sys/tools/syscalls/config.lua b/sys/tools/syscalls/config.lua index fcf4c2217959..91a8a5af68dd 100644 --- a/sys/tools/syscalls/config.lua +++ b/sys/tools/syscalls/config.lua @@ -24,6 +24,7 @@ local util = require("tools.util") local config = { sysnames = "syscalls.c", syshdr = "../sys/syscall.h", + syshdr_extra = nil; sysmk = "/dev/null", syssw = "init_sysent.c", systrace = "systrace_args.c", diff --git a/sys/tools/syscalls/core/syscall.lua b/sys/tools/syscalls/core/syscall.lua index e7e3dc3aac33..277613ec27b7 100644 --- a/sys/tools/syscalls/core/syscall.lua +++ b/sys/tools/syscalls/core/syscall.lua @@ -28,6 +28,7 @@ syscall.known_flags = util.set { -- flags beyond this point are modifiers "CAPENABLED", "NOLIB", + "NORETURN", "NOTSTATIC", "SYSMUX", } diff --git a/sys/tools/syscalls/scripts/libsys_h.lua b/sys/tools/syscalls/scripts/libsys_h.lua index 91349d5dc870..8c1993ecf683 100755 --- a/sys/tools/syscalls/scripts/libsys_h.lua +++ b/sys/tools/syscalls/scripts/libsys_h.lua @@ -76,8 +76,12 @@ function libsys_h.generate(tbl, config, fh) for _, v in pairs(s) do if print_decl(v) then - gen:write(string.format("%s __sys_%s(%s);\n", - v.ret, v.name, v.argstr_type_var)) + local ret_attr = ""; + if v.type.NORETURN then + ret_attr = "_Noreturn " + end + gen:write(string.format("%s%s __sys_%s(%s);\n", + ret_attr, v.ret, v.name, v.argstr_type_var)) end end diff --git a/sys/tools/syscalls/scripts/syscall_h.lua b/sys/tools/syscalls/scripts/syscall_h.lua index 5f8d8fb66889..d05a1799935b 100755 --- a/sys/tools/syscalls/scripts/syscall_h.lua +++ b/sys/tools/syscalls/scripts/syscall_h.lua @@ -38,6 +38,10 @@ function syscall_h.generate(tbl, config, fh) -- Write the generated preamble. gen:preamble("System call numbers.") + if config.syshdr_extra then + gen:write(string.format("%s\n\n", config.syshdr_extra)) + end + for _, v in pairs(s) do local c = v:compatLevel() if v.num > max then diff --git a/sys/tools/syscalls/scripts/syscalls_map.lua b/sys/tools/syscalls/scripts/syscalls_map.lua index 52c3b294e338..dfd61ae75bc0 100755 --- a/sys/tools/syscalls/scripts/syscalls_map.lua +++ b/sys/tools/syscalls/scripts/syscalls_map.lua @@ -39,7 +39,7 @@ function syscalls_map.generate(tbl, config, fh) for _, v in pairs(s) do gen:write(v.prolog) if v:native() and not v.type.NODEF and not v.type.NOLIB then - if v.name ~= "exit" and v.name ~= "vfork" then + if v.name ~= "_exit" and v.name ~= "vfork" then gen:write(string.format("\t_%s;\n", v.name)) end gen:write(string.format("\t__sys_%s;\n", v.name)) diff --git a/sys/tools/vnode_if.awk b/sys/tools/vnode_if.awk index e829105197cc..74b11e6cb27d 100644 --- a/sys/tools/vnode_if.awk +++ b/sys/tools/vnode_if.awk @@ -86,7 +86,7 @@ function add_debug_code(name, arg, pos, ind) function add_debugpre(name) { if (lockdata[name, "debugpre"]) { - printc("#ifdef DEBUG_VFS_LOCKS"); + printc("#ifdef INVARIANTS"); printc("\t"lockdata[name, "debugpre"]"(a);"); printc("#endif"); } @@ -95,7 +95,7 @@ function add_debugpre(name) function add_debugpost(name) { if (lockdata[name, "debugpost"]) { - printc("#ifdef DEBUG_VFS_LOCKS"); + printc("#ifdef INVARIANTS"); printc("\t"lockdata[name, "debugpost"]"(a, rc);"); printc("#endif"); } @@ -340,7 +340,7 @@ while ((getline < srcfile) > 0) { for (i = 0; i < numargs; ++i) printh("\ta.a_" args[i] " = " args[i] ";"); if (can_inline(name)) { - printh("\n#if !defined(DEBUG_VFS_LOCKS) && !defined(INVARIANTS) && !defined(KTR)"); + printh("\n#if !defined(INVARIANTS) && !defined(KTR)"); printh("\tif (!SDT_PROBES_ENABLED())"); printh("\t\treturn (" args[0]"->v_op->"name"(&a));"); printh("\telse"); |