aboutsummaryrefslogtreecommitdiff
path: root/sys/tools
diff options
context:
space:
mode:
Diffstat (limited to 'sys/tools')
-rw-r--r--sys/tools/arm_kernel_boothdr.awk32
-rw-r--r--sys/tools/syscalls/config.lua1
-rw-r--r--sys/tools/syscalls/core/syscall.lua1
-rwxr-xr-xsys/tools/syscalls/scripts/libsys_h.lua8
-rwxr-xr-xsys/tools/syscalls/scripts/syscall_h.lua4
-rwxr-xr-xsys/tools/syscalls/scripts/syscalls_map.lua2
-rw-r--r--sys/tools/vnode_if.awk6
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");