30 lines
840 B
C
30 lines
840 B
C
#include "sparc/sparc.h"
|
|
|
|
/* Override the name of the mcount profiling function. */
|
|
|
|
#undef MCOUNT_FUNCTION
|
|
#define MCOUNT_FUNCTION "*.mcount"
|
|
|
|
/* LINK_SPEC is needed only for SunOS 4. */
|
|
|
|
#undef LINK_SPEC
|
|
|
|
/* Override MACHINE_STATE_{SAVE,RESTORE} because we have special
|
|
traps available which can get and set the condition codes
|
|
reliably. */
|
|
#undef MACHINE_STATE_SAVE
|
|
#define MACHINE_STATE_SAVE(ID) \
|
|
unsigned long int ms_flags, ms_saveret; \
|
|
asm volatile("ta 0x20\n\t" \
|
|
"mov %%g1, %0\n\t" \
|
|
"mov %%g2, %1\n\t" \
|
|
: "=r" (ms_flags), "=r" (ms_saveret));
|
|
|
|
#undef MACHINE_STATE_RESTORE
|
|
#define MACHINE_STATE_RESTORE(ID) \
|
|
asm volatile("mov %0, %%g1\n\t" \
|
|
"mov %1, %%g2\n\t" \
|
|
"ta 0x21\n\t" \
|
|
: /* no outputs */ \
|
|
: "r" (ms_flags), "r" (ms_saveret));
|