diff --git a/gas/ChangeLog b/gas/ChangeLog
index 3532a9b7711..02b1040cea9 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,9 @@
+2002-01-24  Kazu Hirata  <kazu@hxi.com>
+
+	* config/tc-h8300.c (check_operand): Don't print a warning
+	when a valid 24-bit address is given to a 16-bit address
+	operand.
+
 2002-01-24  Alexandre Oliva  <aoliva@redhat.com>
 
 	* config/tc-sh.c (sh_elf_suffix): Removed.
diff --git a/gas/config/tc-h8300.c b/gas/config/tc-h8300.c
index b1f6ecbc2ce..940e6d67f5f 100644
--- a/gas/config/tc-h8300.c
+++ b/gas/config/tc-h8300.c
@@ -813,6 +813,14 @@ check_operand (operand, width, string)
 		 fit a 16 bit address truncated into an 8 bit address
 		 of something like bset.  */
 	    }
+	  else if (strcmp (string, "@") == 0
+		   && width == 0xffff
+		   && (operand->exp.X_add_number & 0xff8000) == 0xff8000)
+	    {
+	      /* Just ignore this one - which happens when trying to
+		 fit a 24 bit address truncated into a 16 bit address
+		 of something like mov.w.  */
+	    }
 	  else
 	    {
 	      as_warn (_("operand %s0x%lx out of range."), string,