summaryrefslogtreecommitdiffstats
path: root/mdk-stage1/dietlibc/profiling/PORTING
blob: c3fc5eba7c464190a055e83c6eb200c6cbc6e405 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
              Porting to other platforms

	... is easy. Just create an mcount.S in the $ARCH
    directory  (eg. dietlibc/i386)  which  includes a
    function (called "mcount") that:

     1.) saves ALL registers that are freely usable
         and which might be used by __mcount().
     2.) loads the instruction pointer (PC) from the
         function that called mcount, and the function
         which called the function, that called mcount
         into the first two argument registers (or push
         them on the stack - depending on the processor-
         architecture).
     3.) call __mcount.
     4.) restore the registers saved in 1)

    Then You need a macro called PC in <asm/sigcontext.h>
    which extracts the (instruction pointer / program 
    counter) from a sigcontext structure (eg. on i386 this 
    would be ctx.eip).

    $ARCH/start.S must also be modified to call monitor
    with the offset of .text and _etext as parameters.