aboutsummaryrefslogtreecommitdiff
path: root/sys/amd64/include/asmacros.h
diff options
context:
space:
mode:
Diffstat (limited to 'sys/amd64/include/asmacros.h')
-rw-r--r--sys/amd64/include/asmacros.h82
1 files changed, 2 insertions, 80 deletions
diff --git a/sys/amd64/include/asmacros.h b/sys/amd64/include/asmacros.h
index b8541bed310c..438f4ec26f61 100644
--- a/sys/amd64/include/asmacros.h
+++ b/sys/amd64/include/asmacros.h
@@ -55,92 +55,14 @@
#define CNAME(csym) csym
#define ALIGN_DATA .p2align 3 /* 8 byte alignment, zero filled */
-#ifdef GPROF
#define ALIGN_TEXT .p2align 4,0x90 /* 16-byte alignment, nop filled */
-#else
-#define ALIGN_TEXT .p2align 4,0x90 /* 16-byte alignment, nop filled */
-#endif
#define SUPERALIGN_TEXT .p2align 4,0x90 /* 16-byte alignment, nop filled */
#define GEN_ENTRY(name) ALIGN_TEXT; .globl CNAME(name); \
.type CNAME(name),@function; CNAME(name):
-#define NON_GPROF_ENTRY(name) GEN_ENTRY(name)
-#define NON_GPROF_RET .byte 0xc3 /* opcode for `ret' */
-
-#define END(name) .size name, . - name
-
-#ifdef GPROF
-/*
- * __mcount is like [.]mcount except that doesn't require its caller to set
- * up a frame pointer. It must be called before pushing anything onto the
- * stack. gcc should eventually generate code to call __mcount in most
- * cases. This would make -pg in combination with -fomit-frame-pointer
- * useful. gcc has a configuration variable PROFILE_BEFORE_PROLOGUE to
- * allow profiling before setting up the frame pointer, but this is
- * inadequate for good handling of special cases, e.g., -fpic works best
- * with profiling after the prologue.
- *
- * [.]mexitcount is a new function to support non-statistical profiling if an
- * accurate clock is available. For C sources, calls to it are generated
- * by the FreeBSD extension `-mprofiler-epilogue' to gcc. It is best to
- * call [.]mexitcount at the end of a function like the MEXITCOUNT macro does,
- * but gcc currently generates calls to it at the start of the epilogue to
- * avoid problems with -fpic.
- *
- * [.]mcount and __mcount may clobber the call-used registers and %ef.
- * [.]mexitcount may clobber %ecx and %ef.
- *
- * Cross-jumping makes non-statistical profiling timing more complicated.
- * It is handled in many cases by calling [.]mexitcount before jumping. It
- * is handled for conditional jumps using CROSSJUMP() and CROSSJUMP_LABEL().
- * It is handled for some fault-handling jumps by not sharing the exit
- * routine.
- *
- * ALTENTRY() must be before a corresponding ENTRY() so that it can jump to
- * the main entry point. Note that alt entries are counted twice. They
- * have to be counted as ordinary entries for gprof to get the call times
- * right for the ordinary entries.
- *
- * High local labels are used in macros to avoid clashes with local labels
- * in functions.
- *
- * Ordinary `ret' is used instead of a macro `RET' because there are a lot
- * of `ret's. 0xc3 is the opcode for `ret' (`#define ret ... ret' can't
- * be used because this file is sometimes preprocessed in traditional mode).
- * `ret' clobbers eflags but this doesn't matter.
- */
-#define ALTENTRY(name) GEN_ENTRY(name) ; MCOUNT ; MEXITCOUNT ; jmp 9f
-#define CROSSJUMP(jtrue, label, jfalse) \
- jfalse 8f; MEXITCOUNT; jmp __CONCAT(to,label); 8:
-#define CROSSJUMPTARGET(label) \
- ALIGN_TEXT; __CONCAT(to,label): ; MCOUNT; jmp label
-#define ENTRY(name) GEN_ENTRY(name) ; 9: ; MCOUNT
-#define FAKE_MCOUNT(caller) pushq caller ; call __mcount ; popq %rcx
-#define MCOUNT call __mcount
-#define MCOUNT_LABEL(name) GEN_ENTRY(name) ; nop ; ALIGN_TEXT
-#ifdef GUPROF
-#define MEXITCOUNT call .mexitcount
-#define ret MEXITCOUNT ; NON_GPROF_RET
-#else
-#define MEXITCOUNT
-#endif
-
-#else /* !GPROF */
-/*
- * ALTENTRY() has to align because it is before a corresponding ENTRY().
- * ENTRY() has to align to because there may be no ALTENTRY() before it.
- * If there is a previous ALTENTRY() then the alignment code for ENTRY()
- * is empty.
- */
-#define ALTENTRY(name) GEN_ENTRY(name)
-#define CROSSJUMP(jtrue, label, jfalse) jtrue label
-#define CROSSJUMPTARGET(label)
#define ENTRY(name) GEN_ENTRY(name)
-#define FAKE_MCOUNT(caller)
-#define MCOUNT
-#define MCOUNT_LABEL(name)
-#define MEXITCOUNT
-#endif /* GPROF */
+#define ALTENTRY(name) GEN_ENTRY(name)
+#define END(name) .size name, . - name
/*
* Convenience for adding frame pointers to hand-coded ASM. Useful for