Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 81254
b: refs/heads/master
c: 0a4690c
h: refs/heads/master
v: v3
  • Loading branch information
Stephen Rothwell authored and Paul Mackerras committed Jan 17, 2008
1 parent 8a6382c commit bb5fb69
Show file tree
Hide file tree
Showing 4 changed files with 102 additions and 1 deletion.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 4ec161cf73bc0b4e5c36843638ef9171896fc0b9
refs/heads/master: 0a4690cf751db6adb28b9275a6ecbaa6549a9ea8
10 changes: 10 additions & 0 deletions trunk/arch/powerpc/kernel/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -91,3 +91,13 @@ obj-$(CONFIG_PPC64) += $(obj64-y)

extra-$(CONFIG_PPC_FPU) += fpu.o
extra-$(CONFIG_PPC64) += entry_64.o

extra-y += systbl_chk.i
$(obj)/systbl.o: systbl_chk

quiet_cmd_systbl_chk = CALL $<
cmd_systbl_chk = $(CONFIG_SHELL) $< $(obj)/systbl_chk.i

PHONY += systbl_chk
systbl_chk: $(src)/systbl_chk.sh $(obj)/systbl_chk.i
$(call cmd,systbl_chk)
58 changes: 58 additions & 0 deletions trunk/arch/powerpc/kernel/systbl_chk.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
/*
* This file, when run through CPP produces a list of syscall numbers
* in the order of systbl.h. That way we can check for gaps and syscalls
* that are out of order.
*
* Unfortunately, we cannot check for the correct ordering of entries
* using SYSX().
*
* Copyright © IBM Corporation
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version
* 2 of the License, or (at your option) any later version.
*/
#include <asm/unistd.h>

#define SYSCALL(func) __NR_##func
#define COMPAT_SYS(func) __NR_##func
#define PPC_SYS(func) __NR_##func
#ifdef CONFIG_PPC64
#define OLDSYS(func) -1
#define SYS32ONLY(func) -1
#else
#define OLDSYS(func) __NR_old##func
#define SYS32ONLY(func) __NR_##func
#endif
#define SYSX(f, f3264, f32) -1

#define SYSCALL_SPU(func) SYSCALL(func)
#define COMPAT_SYS_SPU(func) COMPAT_SYS(func)
#define PPC_SYS_SPU(func) PPC_SYS(func)
#define SYSX_SPU(f, f3264, f32) SYSX(f, f3264, f32)

/* Just insert a marker for ni_syscalls */
#define __NR_ni_syscall -1

/*
* These are the known exceptions.
* Hopefully, there will be no more.
*/
#define __NR_llseek __NR__llseek
#undef __NR_umount
#define __NR_umount __NR_umount2
#define __NR_old_getrlimit __NR_getrlimit
#define __NR_newstat __NR_stat
#define __NR_newlstat __NR_lstat
#define __NR_newfstat __NR_fstat
#define __NR_newuname __NR_uname
#define __NR_sysctl __NR__sysctl
#define __NR_olddebug_setcontext __NR_sys_debug_setcontext

/* We call sys_ugetrlimit for syscall number __NR_getrlimit */
#define getrlimit ugetrlimit

START_TABLE
#include <asm/systbl.h>
END_TABLE __NR_syscalls
33 changes: 33 additions & 0 deletions trunk/arch/powerpc/kernel/systbl_chk.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
#!/bin/sh
#
# Just process the CPP output from systbl_chk.c and complain
# if anything is out of order.
#
# Copyright © 2008 IBM Corporation
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version
# 2 of the License, or (at your option) any later version.

awk 'BEGIN { num = -1; } # Ignore the beginning of the file
/^#/ { next; }
/^[ \t]*$/ { next; }
/^START_TABLE/ { num = 0; next; }
/^END_TABLE/ {
if (num != $2) {
printf "__NR_syscalls (%s) is not one more than the last syscall (%s)\n",
$2, num - 1;
exit(1);
}
num = -1; # Ignore the rest of the file
}
{
if (num == -1) next;
if (($1 != -1) && ($1 != num)) {
printf "Syscall %s out of order (expected %s)\n",
$1, num;
exit(1);
};
num++;
}' "$1"

0 comments on commit bb5fb69

Please sign in to comment.