Fix PAL_GetLogicalProcessorCacheSizeFromOS on mac (#24777)
[platform/upstream/coreclr.git] / src / pal / inc / unixasmmacrosx86.inc
1 // Licensed to the .NET Foundation under one or more agreements.
2 // The .NET Foundation licenses this file to you under the MIT license.
3 // See the LICENSE file in the project root for more information.
4
5 .macro NESTED_ENTRY Name, Section, Handler
6         LEAF_ENTRY \Name, \Section
7         .ifnc \Handler, NoHandler
8         .cfi_personality 0x1b, C_FUNC(\Handler) // 0x1b == DW_EH_PE_pcrel | DW_EH_PE_sdata4
9         .endif
10 .endm
11
12 .macro NESTED_END Name, Section
13         LEAF_END \Name, \Section
14 .endm
15
16 .macro LEAF_ENTRY Name, Section
17         .global C_FUNC(\Name)
18         .type \Name, %function
19 C_FUNC(\Name):
20         .cfi_startproc
21 .endm
22
23 .macro PATCH_LABEL Name
24         .global C_FUNC(\Name)
25 C_FUNC(\Name):
26 .endm
27
28 .macro LEAF_END Name, Section
29         .size \Name, .-\Name
30         .cfi_endproc
31 .endm
32
33 .macro LEAF_END_MARKED Name, Section
34 C_FUNC(\Name\()_End):
35         .global C_FUNC(\Name\()_End)
36         LEAF_END \Name, \Section
37 .endm
38
39 .macro PROLOG_BEG
40         push ebp
41         .cfi_def_cfa_offset 8
42         .cfi_offset ebp, -8
43         mov ebp, esp
44 .endm
45
46 .macro PROLOG_PUSH Reg
47         push \Reg
48         .cfi_adjust_cfa_offset 4
49         .cfi_rel_offset \Reg, 0
50 .endm
51
52 .macro PROLOG_END
53         .cfi_def_cfa_register ebp
54         .cfi_def_cfa_offset 8
55 .endm
56
57 .macro EPILOG_BEG
58 .endm
59
60 .macro EPILOG_POP Reg
61         pop \Reg
62         .cfi_restore \Reg
63 .endm
64
65 .macro EPILOG_END
66         pop ebp
67 .endm
68
69 .macro ESP_PROLOG_BEG
70 .endm
71
72 .macro ESP_PROLOG_PUSH Reg
73         PROLOG_PUSH \Reg
74 .endm
75
76 .macro ESP_PROLOG_ALLOC Size
77         sub esp, \Size
78         .cfi_adjust_cfa_offset \Size
79 .endm
80
81 .macro ESP_PROLOG_END
82         .cfi_def_cfa_register esp
83 .endm
84
85 .macro ESP_EPILOG_BEG
86 .endm
87
88 .macro ESP_EPILOG_POP Reg
89         EPILOG_POP \Reg
90 .endm
91
92 .macro ESP_EPILOG_FREE Size
93         add esp, \Size
94         .cfi_adjust_cfa_offset -\Size
95 .endm
96
97 .macro ESP_EPILOG_END
98 .endm
99
100 .macro PREPARE_EXTERNAL_VAR Name, Reg
101 .att_syntax
102     call  0f
103 0:
104     popl  %\Reg
105 1:
106     addl  $_GLOBAL_OFFSET_TABLE_ + (1b - 0b), %\Reg
107     movl  C_FUNC(\Name)@GOT(%\Reg), %\Reg
108 .intel_syntax noprefix
109 .endm
110
111 .macro CHECK_STACK_ALIGNMENT
112 #ifdef _DEBUG
113     test    esp, 0Fh
114     je      0f
115     int3
116 0:
117 #endif // _DEBUG
118 .endm