Profiling fixes from Ethan Solomita <ethan@geocast.com>.
Merge Kernel MCOUNT and user MCOUNT. The earlier code which was inserted to call _mcount in profiling assembler routines is busted badly. This gets it working with PIC code and should work with any arbitrary assembler routine.
This commit is contained in:
parent
58ca6aac15
commit
751cd4ffb0
|
@ -1,4 +1,4 @@
|
||||||
/* $NetBSD: asm.h,v 1.22 1999/04/24 08:10:33 simonb Exp $ */
|
/* $NetBSD: asm.h,v 1.23 2000/06/12 23:42:10 castor Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1992, 1993
|
* Copyright (c) 1992, 1993
|
||||||
|
@ -62,21 +62,26 @@
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Define -pg profile entry code.
|
* Define -pg profile entry code.
|
||||||
* XXX assume .set noreorder for kernel, .set reorder for user code.
|
* Must always be noreorder, must never use a macro instruction
|
||||||
|
* Final addiu to t9 must always equal the size of this _KERN_MCOUNT
|
||||||
*/
|
*/
|
||||||
#define _KERN_MCOUNT \
|
#define _KERN_MCOUNT \
|
||||||
.set noat; \
|
.set push; \
|
||||||
move $1,$31; \
|
.set noreorder; \
|
||||||
jal _mcount; \
|
.set noat; \
|
||||||
subu sp,sp,8; \
|
sw t9,-4(sp); \
|
||||||
.set at
|
move AT,ra; \
|
||||||
|
lui t9,%hi(_mcount); \
|
||||||
|
addiu t9,t9,%lo(_mcount); \
|
||||||
|
jalr t9; \
|
||||||
|
subu sp,sp,16; \
|
||||||
|
lw t9,4(sp); \
|
||||||
|
addiu sp,sp,8; \
|
||||||
|
addiu t9,t9,36; \
|
||||||
|
.set pop;
|
||||||
|
|
||||||
#ifdef GPROF
|
#ifdef GPROF
|
||||||
# if defined(_KERNEL) || defined(_LOCORE)
|
#define MCOUNT _KERN_MCOUNT
|
||||||
# define MCOUNT _KERN_MCOUNT
|
|
||||||
# else
|
|
||||||
# define MCOUNT .set noreorder; _KERN_MCOUNT ; .set reorder;
|
|
||||||
# endif
|
|
||||||
#else
|
#else
|
||||||
#define MCOUNT
|
#define MCOUNT
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue