summaryrefslogtreecommitdiff
path: root/Documentation
diff options
context:
space:
mode:
authorsergey ignatov <sergign60@mail.ru>2018-09-01 17:40:44 +0300
committerJan Kotas <jkotas@microsoft.com>2018-09-01 07:40:44 -0700
commita1757ce8e80cd089d9dc31ba2d4e3246e387a6b8 (patch)
tree5de828b15ed9dc639fd5b3215833836d613c0c57 /Documentation
parentd71ed81a4b9ec9d89bcb5c35174ff60d0991c79c (diff)
downloadcoreclr-a1757ce8e80cd089d9dc31ba2d4e3246e387a6b8.tar.gz
coreclr-a1757ce8e80cd089d9dc31ba2d4e3246e387a6b8.tar.bz2
coreclr-a1757ce8e80cd089d9dc31ba2d4e3246e387a6b8.zip
i386: Fixed definition with declaration in eetoprofinterfaceimpl.cpp (#18792)
Diffstat (limited to 'Documentation')
-rw-r--r--Documentation/botr/clr-abi.md2
1 files changed, 2 insertions, 0 deletions
diff --git a/Documentation/botr/clr-abi.md b/Documentation/botr/clr-abi.md
index ea5a49ed97..0a40b4133d 100644
--- a/Documentation/botr/clr-abi.md
+++ b/Documentation/botr/clr-abi.md
@@ -599,6 +599,8 @@ For AMD64, all probes receive a second parameter (passed in `RDX` according to t
TODO: describe ARM64 tail call convention.
+On Linux/x86 the profiling hooks are declared with the ```__cdecl``` attribute. In cdecl (which stands for C declaration), subroutine arguments are passed on the stack. Integer values and memory addresses are returned in the EAX register, floating point values in the ST0 x87 register. Registers EAX, ECX, and EDX are caller-saved, and the rest are callee-saved. The x87 floating point registers ST0 to ST7 must be empty (popped or freed) when calling a new function, and ST1 to ST7 must be empty on exiting a function. ST0 must also be empty when not used for returning a value. Returned values of managed-code are formed before the leave/tailcall profiling hooks, so they should be saved in these hooks and restored on returning from them. The instruction ```ret``` for assembler implementations of profiling hooks should be without a parameter.
+
JIT32 only generates one epilog (and causes all returns to branch to it) when there are profiler hooks.
# Synchronized Methods