diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/mem.c | 40 | ||||
-rw-r--r-- | src/xlat/madvise_cmds.in | 111 | ||||
-rw-r--r-- | src/xlat/madvise_hppa_generic_cmds.in | 16 | ||||
-rw-r--r-- | src/xlat/madvise_hppa_old_cmds.in | 12 |
4 files changed, 93 insertions, 86 deletions
@@ -290,6 +290,11 @@ SYS_FUNC(mremap) } #include "xlat/madvise_cmds.h" +#include "xlat/madvise_hppa_generic_cmds.h" + +#if defined HPPA +# include "xlat/madvise_hppa_old_cmds.h" +#endif SYS_FUNC(madvise) { @@ -302,7 +307,40 @@ SYS_FUNC(madvise) tprint_arg_next(); /* advice */ - printxval(madvise_cmds, tcp->u_arg[2], "MADV_???"); + const unsigned int advice = tcp->u_arg[2]; +#if defined HPPA + /* + * hppa decided to be very special: it used to have its own + * definitions for some MADV_* constants (just like Alpha, + * for example), but then (see Linux commit v6.2-rc1~39^2~7) + * decided to change their values, so their symbolic names + * are meaningless for the user now (which would also probably + * add spice to debugging old binaries with the newer kernels + * "in year 2025 (or later)"), and that forces us to state + * explicitly which variant of the constant value is used. + */ + const char *old_cmd = xlookup(madvise_hppa_old_cmds, advice); + + if (old_cmd) { + PRINT_VAL_X(advice); + if (xlat_verbose(xlat_verbosity) != XLAT_STYLE_RAW) + tprintf_comment("old %s", old_cmd); + } else { + const char *new_cmd = xlookup(madvise_hppa_generic_cmds, + advice); + + if (new_cmd) { + PRINT_VAL_X(advice); + if (xlat_verbose(xlat_verbosity) != XLAT_STYLE_RAW) + tprintf_comment("generic %s", new_cmd); + } else { + printxval(madvise_cmds, advice, "MADV_???"); + } + } +#else + printxvals(advice, "MADV_???", + madvise_cmds, madvise_hppa_generic_cmds, NULL); +#endif return RVAL_DECODED; } diff --git a/src/xlat/madvise_cmds.in b/src/xlat/madvise_cmds.in index 8a1f9d8e2..decae9bf5 100644 --- a/src/xlat/madvise_cmds.in +++ b/src/xlat/madvise_cmds.in @@ -1,91 +1,32 @@ -/* Generated by maint/gen_xlat_defs.sh -f 'd' -p 'MADV_' -c 'asm-generic/mman-common.h' -a 'asm/mman.h' */ - -MADV_NORMAL 0 - -MADV_RANDOM 1 - -MADV_SEQUENTIAL 2 - -MADV_WILLNEED 3 +#sorted +MADV_NORMAL 0 +MADV_RANDOM 1 +MADV_SEQUENTIAL 2 +MADV_WILLNEED 3 #if defined __alpha__ -MADV_DONTNEED 6 -#else -MADV_DONTNEED 4 -#endif - -MADV_FREE 8 - -MADV_REMOVE 9 - -MADV_DONTFORK 10 - -MADV_DOFORK 11 - -#if defined __hppa__ -MADV_MERGEABLE 65 -#else -MADV_MERGEABLE 12 -#endif - -#if defined __hppa__ -MADV_UNMERGEABLE 66 -#else -MADV_UNMERGEABLE 13 -#endif - -#if defined __hppa__ -MADV_HUGEPAGE 67 -#else -MADV_HUGEPAGE 14 -#endif - -#if defined __hppa__ -MADV_NOHUGEPAGE 68 -#else -MADV_NOHUGEPAGE 15 -#endif - -#if defined __hppa__ -MADV_DONTDUMP 69 -#else -MADV_DONTDUMP 16 -#endif - -#if defined __hppa__ -MADV_DODUMP 70 -#else -MADV_DODUMP 17 -#endif - -#if defined __hppa__ -MADV_WIPEONFORK 71 -#else -MADV_WIPEONFORK 18 -#endif - -#if defined __hppa__ -MADV_KEEPONFORK 72 -#else -MADV_KEEPONFORK 19 -#endif - -MADV_COLD 20 - -MADV_PAGEOUT 21 - +MADV_DONTNEED 6 +#else +MADV_DONTNEED 4 +#endif + +MADV_FREE 8 +MADV_REMOVE 9 +MADV_DONTFORK 10 +MADV_DOFORK 11 +/* MADV_MERGEABLE 12 - see madvise_hppa_generic_cmds */ +/* MADV_UNMERGEABLE 13 - see madvise_hppa_generic_cmds */ +/* MADV_HUGEPAGE 14 - see madvise_hppa_generic_cmds */ +/* MADV_NOHUGEPAGE 15 - see madvise_hppa_generic_cmds */ +/* MADV_DONTDUMP 16 - see madvise_hppa_generic_cmds */ +/* MADV_DODUMP 17 - see madvise_hppa_generic_cmds */ +/* MADV_WIPEONFORK 18 - see madvise_hppa_generic_cmds */ +/* MADV_KEEPONFORK 19 - see madvise_hppa_generic_cmds */ +MADV_COLD 20 +MADV_PAGEOUT 21 MADV_POPULATE_READ 22 - MADV_POPULATE_WRITE 23 - MADV_DONTNEED_LOCKED 24 - -#if defined __hppa__ -MADV_COLLAPSE 73 -#else -MADV_COLLAPSE 25 -#endif - -MADV_HWPOISON 100 - +/* MADV_COLLAPSE 25 - see madvise_hppa_generic_cmds */ +MADV_HWPOISON 100 MADV_SOFT_OFFLINE 101 diff --git a/src/xlat/madvise_hppa_generic_cmds.in b/src/xlat/madvise_hppa_generic_cmds.in new file mode 100644 index 000000000..9740cab9b --- /dev/null +++ b/src/xlat/madvise_hppa_generic_cmds.in @@ -0,0 +1,16 @@ +#unconditional +#nocheckval +/* + * These values are used on hppa since v6.2-rc1~39^2~7 + * and on other architectures since their introduction; + * see madvise_hppa_old_cmds for the old values. + */ +MADV_MERGEABLE 12 +MADV_UNMERGEABLE 13 +MADV_HUGEPAGE 14 +MADV_NOHUGEPAGE 15 +MADV_DONTDUMP 16 +MADV_DODUMP 17 +MADV_WIPEONFORK 18 +MADV_KEEPONFORK 19 +MADV_COLLAPSE 25 diff --git a/src/xlat/madvise_hppa_old_cmds.in b/src/xlat/madvise_hppa_old_cmds.in new file mode 100644 index 000000000..b939fbba6 --- /dev/null +++ b/src/xlat/madvise_hppa_old_cmds.in @@ -0,0 +1,12 @@ +#unconditional +#nocheckval +/* These values were used on hppa before v6.2-rc1~39^2~7. */ +MADV_MERGEABLE 65 +MADV_UNMERGEABLE 66 +MADV_HUGEPAGE 67 +MADV_NOHUGEPAGE 68 +MADV_DONTDUMP 69 +MADV_DODUMP 70 +MADV_WIPEONFORK 71 +MADV_KEEPONFORK 72 +MADV_COLLAPSE 73 |