Commit 3b4b85c9 by Bernardo Innocenti Committed by Bernardo Innocenti

m68k.c, m68k.md (SGS, [...]): Remove code to support SGS assembler.

	* config/m68k/m68k.c, config/m68k/m68k.md (SGS, SGS_CMP_ORDER): Remove
	code to support SGS assembler.  Reformat adjacent code where possible.
	* config/m68k/m68k.c (switch_table_difference_label_flag): Remove definition.
	* config/m68k/m68k.h (PRINT_OPERAND_PUNCT_VALID_P): Remove support for '%#'.
	* config/m68k/linux.h, config/m68k/m68k.c,
	* config/m68k/math-68881.h: Replace `%#' with `#' in inline asm macros and
	asm_printf() format strings.
	* config/m68k/m68kelf.h (ASM_OUTPUT_CASE_END): Remove macro definition.
	* config/m68k/linux.h: Update copyright.
	* config/m68k/linux.h, config/m68k/m68k.c: Remove traling whitespace.

From-SVN: r77518
parent 413b5912
2004-02-08 Bernardo Innocenti <bernie@develer.com>
* config/m68k/m68k.c, config/m68k/m68k.md (SGS, SGS_CMP_ORDER): Remove
code to support SGS assembler. Reformat adjacent code where possible.
* config/m68k/m68k.c (switch_table_difference_label_flag): Remove definition.
* config/m68k/m68k.h (PRINT_OPERAND_PUNCT_VALID_P): Remove support for '%#'.
* config/m68k/linux.h, config/m68k/m68k.c,
* config/m68k/math-68881.h: Replace `%#' with `#' in inline asm macros and
asm_printf() format strings.
* config/m68k/m68kelf.h (ASM_OUTPUT_CASE_END): Remove macro definition.
* config/m68k/linux.h: Update copyright.
* config/m68k/linux.h, config/m68k/m68k.c: Remove traling whitespace.
2004-02-08 Andreas Schwab <schwab@suse.de> 2004-02-08 Andreas Schwab <schwab@suse.de>
Bernardo Innocenti <bernie@develer.com> Bernardo Innocenti <bernie@develer.com>
......
/* Definitions for Motorola 68k running Linux-based GNU systems with /* Definitions for Motorola 68k running Linux-based GNU systems with
ELF format. ELF format.
Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2002, 2003, 2004 Free Software Foundation, Inc. Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2002, 2003, 2004
Free Software Foundation, Inc.
This file is part of GCC. This file is part of GCC.
...@@ -27,7 +28,7 @@ Boston, MA 02111-1307, USA. */ ...@@ -27,7 +28,7 @@ Boston, MA 02111-1307, USA. */
/* for 68k machines this only needs to be TRUE for the 68000 */ /* for 68k machines this only needs to be TRUE for the 68000 */
#undef STRICT_ALIGNMENT #undef STRICT_ALIGNMENT
#define STRICT_ALIGNMENT 0 #define STRICT_ALIGNMENT 0
#undef SUBTARGET_SWITCHES #undef SUBTARGET_SWITCHES
...@@ -61,13 +62,13 @@ Boston, MA 02111-1307, USA. */ ...@@ -61,13 +62,13 @@ Boston, MA 02111-1307, USA. */
#undef SIZE_TYPE #undef SIZE_TYPE
#define SIZE_TYPE "unsigned int" #define SIZE_TYPE "unsigned int"
#undef PTRDIFF_TYPE #undef PTRDIFF_TYPE
#define PTRDIFF_TYPE "int" #define PTRDIFF_TYPE "int"
#undef WCHAR_TYPE #undef WCHAR_TYPE
#define WCHAR_TYPE "long int" #define WCHAR_TYPE "long int"
#undef WCHAR_TYPE_SIZE #undef WCHAR_TYPE_SIZE
#define WCHAR_TYPE_SIZE BITS_PER_WORD #define WCHAR_TYPE_SIZE BITS_PER_WORD
...@@ -218,7 +219,7 @@ Boston, MA 02111-1307, USA. */ ...@@ -218,7 +219,7 @@ Boston, MA 02111-1307, USA. */
the precise function being called is known, FUNC is its the precise function being called is known, FUNC is its
FUNCTION_DECL; otherwise, FUNC is 0. For m68k/SVR4 generate the FUNCTION_DECL; otherwise, FUNC is 0. For m68k/SVR4 generate the
result in d0, a0, or fp0 as appropriate. */ result in d0, a0, or fp0 as appropriate. */
#undef FUNCTION_VALUE #undef FUNCTION_VALUE
#define FUNCTION_VALUE(VALTYPE, FUNC) \ #define FUNCTION_VALUE(VALTYPE, FUNC) \
(TREE_CODE (VALTYPE) == REAL_TYPE && TARGET_68881 \ (TREE_CODE (VALTYPE) == REAL_TYPE && TARGET_68881 \
...@@ -276,7 +277,7 @@ do { \ ...@@ -276,7 +277,7 @@ do { \
scope - the scope of the flush (see the cpush insn) scope - the scope of the flush (see the cpush insn)
cache - which cache to flush (see the cpush insn) cache - which cache to flush (see the cpush insn)
len - a factor relating to the number of flushes to perform: len - a factor relating to the number of flushes to perform:
len/16 lines, or len/4096 pages. */ len/16 lines, or len/4096 pages. */
#define CLEAR_INSN_CACHE(BEG, END) \ #define CLEAR_INSN_CACHE(BEG, END) \
{ \ { \
...@@ -284,10 +285,10 @@ do { \ ...@@ -284,10 +285,10 @@ do { \
unsigned long _end = (unsigned long) (END); \ unsigned long _end = (unsigned long) (END); \
register unsigned long _len __asm ("%d4") = (_end - _beg + 32); \ register unsigned long _len __asm ("%d4") = (_end - _beg + 32); \
__asm __volatile \ __asm __volatile \
("move%.l %#123, %/d0\n\t" /* system call nr */ \ ("move%.l #123, %/d0\n\t" /* system call nr */ \
"move%.l %#1, %/d2\n\t" /* clear lines */ \ "move%.l #1, %/d2\n\t" /* clear lines */ \
"move%.l %#3, %/d3\n\t" /* insn+data caches */ \ "move%.l #3, %/d3\n\t" /* insn+data caches */ \
"trap %#0" \ "trap #0" \
: /* no outputs */ \ : /* no outputs */ \
: "d" (_beg), "d" (_len) \ : "d" (_beg), "d" (_len) \
: "%d0", "%d2", "%d3"); \ : "%d0", "%d2", "%d3"); \
......
...@@ -1629,8 +1629,6 @@ do { if (cc_prev_status.flags & CC_IN_68881) \ ...@@ -1629,8 +1629,6 @@ do { if (cc_prev_status.flags & CC_IN_68881) \
sp@+, (sp)+ or (%sp)+ depending on the style of syntax. sp@+, (sp)+ or (%sp)+ depending on the style of syntax.
'@' for a reference to the top word on the stack: '@' for a reference to the top word on the stack:
sp@, (sp) or (%sp) depending on the style of syntax. sp@, (sp) or (%sp) depending on the style of syntax.
'#' for an immediate operand prefix (# in MIT and Motorola syntax
but & in SGS syntax).
'!' for the fpcr register (used in some float-to-fixed conversions). '!' for the fpcr register (used in some float-to-fixed conversions).
'$' for the letter `s' in an op code, but only on the 68040. '$' for the letter `s' in an op code, but only on the 68040.
'&' for the letter `d' in an op code, but only on the 68040. '&' for the letter `d' in an op code, but only on the 68040.
...@@ -1645,9 +1643,8 @@ do { if (cc_prev_status.flags & CC_IN_68881) \ ...@@ -1645,9 +1643,8 @@ do { if (cc_prev_status.flags & CC_IN_68881) \
or print pair of registers as rx:ry. */ or print pair of registers as rx:ry. */
#define PRINT_OPERAND_PUNCT_VALID_P(CODE) \ #define PRINT_OPERAND_PUNCT_VALID_P(CODE) \
((CODE) == '.' || (CODE) == '#' || (CODE) == '-' \ ((CODE) == '.' || (CODE) == '-' || (CODE) == '+' || (CODE) == '@' \
|| (CODE) == '+' || (CODE) == '@' || (CODE) == '!' \ || (CODE) == '!' || (CODE) == '$' || (CODE) == '&' || (CODE) == '/')
|| (CODE) == '$' || (CODE) == '&' || (CODE) == '/')
/* A C compound statement to output to stdio stream STREAM the /* A C compound statement to output to stdio stream STREAM the
assembler syntax for an instruction operand X. X is an RTL assembler syntax for an instruction operand X. X is an RTL
......
...@@ -191,19 +191,6 @@ do { \ ...@@ -191,19 +191,6 @@ do { \
putc ('\n', (FILE)); \ putc ('\n', (FILE)); \
} while (0) } while (0)
/* SVR4 m68k assembler is bitching on the syntax `2.b'.
So use the "LLDnnn-LLnnn" format. Define LLDnnn after the table. */
#undef ASM_OUTPUT_CASE_END
#define ASM_OUTPUT_CASE_END(FILE,NUM,TABLE) \
do { \
if (switch_table_difference_label_flag) \
asm_fprintf ((FILE), "%s%LLD%d,%LL%d\n", SET_ASM_OP, (NUM), (NUM)); \
switch_table_difference_label_flag = 0; \
} while (0)
extern int switch_table_difference_label_flag;
#undef ASM_OUTPUT_COMMON #undef ASM_OUTPUT_COMMON
#undef ASM_OUTPUT_LOCAL #undef ASM_OUTPUT_LOCAL
#define ASM_OUTPUT_COMMON(FILE, NAME, SIZE, ROUNDED) \ #define ASM_OUTPUT_COMMON(FILE, NAME, SIZE, ROUNDED) \
......
...@@ -57,7 +57,7 @@ ...@@ -57,7 +57,7 @@
({ \ ({ \
double huge_val; \ double huge_val; \
\ \
__asm ("fmove%.d %#0x7ff0000000000000,%0" /* Infinity */ \ __asm ("fmove%.d #0x7ff0000000000000,%0" /* Infinity */ \
: "=f" (huge_val) \ : "=f" (huge_val) \
: /* no inputs */); \ : /* no inputs */); \
huge_val; \ huge_val; \
...@@ -135,10 +135,10 @@ atan2 (double y, double x) ...@@ -135,10 +135,10 @@ atan2 (double y, double x)
{ {
double pi, pi_over_2; double pi, pi_over_2;
__asm ("fmovecr%.x %#0,%0" /* extended precision pi */ __asm ("fmovecr%.x #0,%0" /* extended precision pi */
: "=f" (pi) : "=f" (pi)
: /* no inputs */ ); : /* no inputs */ );
__asm ("fscale%.b %#-1,%0" /* no loss of accuracy */ __asm ("fscale%.b #-1,%0" /* no loss of accuracy */
: "=f" (pi_over_2) : "=f" (pi_over_2)
: "0" (pi)); : "0" (pi));
if (x > 0) if (x > 0)
...@@ -178,7 +178,7 @@ atan2 (double y, double x) ...@@ -178,7 +178,7 @@ atan2 (double y, double x)
double value; double value;
errno = EDOM; errno = EDOM;
__asm ("fmove%.d %#0x7fffffffffffffff,%0" /* quiet NaN */ __asm ("fmove%.d #0x7fffffffffffffff,%0" /* quiet NaN */
: "=f" (value) : "=f" (value)
: /* no inputs */); : /* no inputs */);
return value; return value;
...@@ -317,7 +317,7 @@ pow (double x, double y) ...@@ -317,7 +317,7 @@ pow (double x, double y)
double value; double value;
errno = EDOM; errno = EDOM;
__asm ("fmove%.d %#0x7fffffffffffffff,%0" /* quiet NaN */ __asm ("fmove%.d #0x7fffffffffffffff,%0" /* quiet NaN */
: "=f" (value) : "=f" (value)
: /* no inputs */); : /* no inputs */);
return value; return value;
...@@ -333,7 +333,7 @@ pow (double x, double y) ...@@ -333,7 +333,7 @@ pow (double x, double y)
if (y == temp) if (y == temp)
{ {
int i = (int) y; int i = (int) y;
if ((i & 1) == 0) /* even */ if ((i & 1) == 0) /* even */
return exp (y * log (-x)); return exp (y * log (-x));
else else
...@@ -344,7 +344,7 @@ pow (double x, double y) ...@@ -344,7 +344,7 @@ pow (double x, double y)
double value; double value;
errno = EDOM; errno = EDOM;
__asm ("fmove%.d %#0x7fffffffffffffff,%0" /* quiet NaN */ __asm ("fmove%.d #0x7fffffffffffffff,%0" /* quiet NaN */
: "=f" (value) : "=f" (value)
: /* no inputs */); : /* no inputs */);
return value; return value;
...@@ -497,7 +497,7 @@ frexp (double x, int *exp) ...@@ -497,7 +497,7 @@ frexp (double x, int *exp)
double mantissa; double mantissa;
__asm ("fgetexp%.x %1,%0" __asm ("fgetexp%.x %1,%0"
: "=f" (float_exponent) /* integer-valued float */ : "=f" (float_exponent) /* integer-valued float */
: "f" (x)); : "f" (x));
int_exponent = (int) float_exponent; int_exponent = (int) float_exponent;
__asm ("fgetman%.x %1,%0" __asm ("fgetman%.x %1,%0"
...@@ -505,7 +505,7 @@ frexp (double x, int *exp) ...@@ -505,7 +505,7 @@ frexp (double x, int *exp)
: "f" (x)); : "f" (x));
if (mantissa != 0) if (mantissa != 0)
{ {
__asm ("fscale%.b %#-1,%0" __asm ("fscale%.b #-1,%0"
: "=f" (mantissa) /* mantissa /= 2.0 */ : "=f" (mantissa) /* mantissa /= 2.0 */
: "0" (mantissa)); : "0" (mantissa));
int_exponent += 1; int_exponent += 1;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment