4 .section .mips16.call.\name, "ax", @progbits
6 .type __call_stub_\name, @function
13 # Flags to specify how a particular function is referenced
15 .equ DC, 1 # Direct call from "compressed" code
16 .equ BC, 2 # Branch from "compressed" code
17 .equ IC, 4 # Indirect call from "compressed" code
18 .equ DU, 8 # Direct call from "uncompressed" code
19 .equ BU, 16 # Branch from "uncompressed" code
20 .equ IU, 32 # Indirect call from "uncompressed" code
21 .equ LO, 64 # Direct address reference (%lo)
23 # A wrapper around a macro called test_one, which is defined by
24 # the file that includes this one. NAME is the name of a function
25 # that is referenced in the way described by FLAGS, an inclusive OR
26 # of the flags above. The wrapper filters out any functions whose
27 # FLAGS are not a subset of FILTER.
29 .macro test_filter, name, flags
30 .if (\flags & filter) == \flags
31 test_one
\name
, \flags
35 .macro test_all_dc, name, flags
36 test_filter
\name
, \flags
37 test_filter
\name\
()_dc
, (\flags | DC
)
40 .macro test_all_bc, name, flags
41 test_all_dc
\name
, \flags
42 test_all_dc
\name\
()_bc
, (\flags |
BC)
45 .macro test_all_ic, name, flags
46 test_all_bc
\name
, \flags
47 test_all_bc
\name\
()_ic
, (\flags | IC
)
50 .macro test_all_du, name, flags
51 test_all_ic
\name
, \flags
52 test_all_ic
\name\
()_du
, (\flags | DU
)
55 .macro test_all_bu, name, flags
56 test_all_du
\name
, \flags
57 test_all_du
\name\
()_bu
, (\flags | BU
)
60 .macro test_all_iu, name, flags
61 test_all_bu
\name
, \flags
62 test_all_bu
\name\
()_iu
, (\flags | IU
)
65 .macro test_all_lo, name, flags
66 test_all_iu
\name
, \flags
67 test_all_iu
\name\
()_lo
, (\flags | LO
)
70 # Test all the combinations of interest.