Skip to content

Commit abd9f48

Browse files
committed
dwarf: WIP
Signed-off-by: Paul Guyot <[email protected]>
1 parent 75e515f commit abd9f48

File tree

6 files changed

+952
-105
lines changed

6 files changed

+952
-105
lines changed

libs/jit/src/jit_aarch64.erl

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,8 @@
7777
dwarf_opcode/2,
7878
dwarf_label/2,
7979
dwarf_function/3,
80-
dwarf_line/2
80+
dwarf_line/2,
81+
dwarf_ctx_register/0
8182
]).
8283
-endif.
8384

@@ -87,6 +88,10 @@
8788

8889
-include("primitives.hrl").
8990

91+
-ifdef(JIT_DWARF).
92+
-include("jit_dwarf.hrl").
93+
-endif.
94+
9095
%-define(ASSERT(Expr), true = Expr).
9196
-define(ASSERT(_Expr), ok).
9297

@@ -2338,3 +2343,14 @@ add_label(#state{stream_module = StreamModule, stream = Stream} = State, Label)
23382343
-spec add_label(state(), integer() | reference(), integer()) -> state().
23392344
add_label(#state{labels = Labels} = State, Label, Offset) ->
23402345
State#state{labels = [{Label, Offset} | Labels]}.
2346+
2347+
-ifdef(JIT_DWARF).
2348+
%%-----------------------------------------------------------------------------
2349+
%% @doc Return the DWARF register number for the ctx parameter
2350+
%% @returns The DWARF register number where ctx is passed (x0/r0 in aarch64)
2351+
%% @end
2352+
%%-----------------------------------------------------------------------------
2353+
-spec dwarf_ctx_register() -> non_neg_integer().
2354+
dwarf_ctx_register() ->
2355+
?DWARF_X0_REG_AARCH64.
2356+
-endif.

libs/jit/src/jit_armv6m.erl

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,8 @@
7777
dwarf_opcode/2,
7878
dwarf_label/2,
7979
dwarf_function/3,
80-
dwarf_line/2
80+
dwarf_line/2,
81+
dwarf_ctx_register/0
8182
]).
8283
-endif.
8384

@@ -87,6 +88,10 @@
8788

8889
-include("primitives.hrl").
8990

91+
-ifdef(JIT_DWARF).
92+
-include("jit_dwarf.hrl").
93+
-endif.
94+
9095
-define(ASSERT(Expr), true = Expr).
9196

9297
%% ARMv6-M AAPCS32 ABI: r0-r3 are used for argument passing and return value.
@@ -3160,3 +3165,14 @@ add_label(#state{stream_module = StreamModule, stream = Stream0} = State0, Label
31603165
-spec add_label(state(), integer() | reference(), integer()) -> state().
31613166
add_label(#state{labels = Labels} = State, Label, Offset) ->
31623167
State#state{labels = [{Label, Offset} | Labels]}.
3168+
3169+
-ifdef(JIT_DWARF).
3170+
%%-----------------------------------------------------------------------------
3171+
%% @doc Return the DWARF register number for the ctx parameter
3172+
%% @returns The DWARF register number where ctx is passed (r0 in ARM)
3173+
%% @end
3174+
%%-----------------------------------------------------------------------------
3175+
-spec dwarf_ctx_register() -> non_neg_integer().
3176+
dwarf_ctx_register() ->
3177+
?DWARF_R0_REG_ARMV6M.
3178+
-endif.

0 commit comments

Comments
 (0)