summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorH. Peter Anvin <hpa@zytor.com>2012-02-25 15:10:04 -0800
committerH. Peter Anvin <hpa@zytor.com>2012-02-25 15:11:11 -0800
commit5a24fdd547f4c02fe46c37b84a020febfa41bfd2 (patch)
tree4a8018ff69d3c806b8baa52fb3d8ff500395b197
parentc92aaa1d49876b69fc2d727033922274733ff7fe (diff)
downloadnasm-5a24fdd547f4c02fe46c37b84a020febfa41bfd2.tar.gz
Make the LOCK and HLE warnings suppressable.
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
-rw-r--r--assemble.c6
-rw-r--r--doc/nasmdoc.src7
-rw-r--r--nasm.c4
-rw-r--r--nasmlib.h4
4 files changed, 16 insertions, 5 deletions
diff --git a/assemble.c b/assemble.c
index eba1b32d..bf5c103f 100644
--- a/assemble.c
+++ b/assemble.c
@@ -818,14 +818,14 @@ static void bad_hle_warn(const insn * ins, uint8_t hleok)
case w_lock:
if (ins->prefixes[PPS_LOCK] != P_LOCK) {
- errfunc(ERR_WARNING | ERR_PASS2,
+ errfunc(ERR_WARNING | ERR_WARN_HLE | ERR_PASS2,
"%s with this instruction requires lock",
prefix_name(rep_pfx));
}
break;
case w_inval:
- errfunc(ERR_WARNING | ERR_PASS2,
+ errfunc(ERR_WARNING | ERR_WARN_HLE | ERR_PASS2,
"%s invalid with this instruction",
prefix_name(rep_pfx));
break;
@@ -1254,7 +1254,7 @@ static int64_t calcsize(int32_t segment, int64_t offset, int bits,
if (has_prefix(ins, PPS_LOCK, P_LOCK) && lockcheck &&
(!(temp->flags & IF_LOCK) || !is_class(MEMORY, ins->oprs[0].type))) {
- errfunc(ERR_WARNING | ERR_PASS2,
+ errfunc(ERR_WARNING | ERR_WARN_LOCK | ERR_PASS2 ,
"instruction is not lockable");
}
diff --git a/doc/nasmdoc.src b/doc/nasmdoc.src
index 583ad523..217c12a8 100644
--- a/doc/nasmdoc.src
+++ b/doc/nasmdoc.src
@@ -948,6 +948,13 @@ Enabled by default.
\b \i\c{user} controls \c{%warning} directives (see \k{pperror}).
Enabled by default.
+\b \i\c{lock} warns about \c{LOCK} prefixes on unlockable instructions.
+Enabled by default.
+
+\b \i\c{hle} warns about invalid use of the HLE \c{XACQUIRE} or \c{XRELEASE}
+prefixes.
+Enabled by default.
+
\b \i\c{error} causes warnings to be treated as errors. Disabled by
default.
diff --git a/nasm.c b/nasm.c
index cca6650f..5103fea5 100644
--- a/nasm.c
+++ b/nasm.c
@@ -1,6 +1,6 @@
/* ----------------------------------------------------------------------- *
*
- * Copyright 1996-2011 The NASM Authors - All Rights Reserved
+ * Copyright 1996-2012 The NASM Authors - All Rights Reserved
* See the file AUTHORS included with the NASM distribution for
* the specific copyright holders.
*
@@ -161,6 +161,8 @@ static const struct warning {
{"float-underflow", "floating point underflow", false},
{"float-toolong", "too many digits in floating-point number", true},
{"user", "%warning directives", true},
+ {"lock", "lock prefix on unlockable instructions", true},
+ {"hle", "invalid hle prefixes", true},
};
/*
diff --git a/nasmlib.h b/nasmlib.h
index 1aeaf0a0..2210748b 100644
--- a/nasmlib.h
+++ b/nasmlib.h
@@ -132,7 +132,9 @@ void nasm_set_verror(vefunc);
#define ERR_WARN_FL_UNDERFLOW WARN( 9) /* FP underflow */
#define ERR_WARN_FL_TOOLONG WARN(10) /* FP too many digits */
#define ERR_WARN_USER WARN(11) /* %warning directives */
-#define ERR_WARN_MAX 11 /* the highest numbered one */
+#define ERR_WARN_LOCK WARN(12) /* bad LOCK prefixes */
+#define ERR_WARN_HLE WARN(13) /* bad HLE prefixes */
+#define ERR_WARN_MAX 13 /* the highest numbered one */
/*
* Wrappers around malloc, realloc and free. nasm_malloc will