blob: e57359d84971bd328663ca2b4e2b8fb149e2b64a [file] [log] [blame]
Sam Elliott240a2082020-07-27 21:34:34 +01001# Copyright lowRISC contributors.
2# Licensed under the Apache License, Version 2.0, see LICENSE for details.
3# SPDX-License-Identifier: Apache-2.0
4
5# Mask ROM Linker Parameters
6#
7# See sw/device/exts/common/flash_link.ld for additional info about these
8# parameters.
Michael Mundayb4d81542021-06-04 11:49:54 +01009
Sam Elliott240a2082020-07-27 21:34:34 +010010rom_linkfile = files(['mask_rom.ld'])
11rom_link_args = [
12 '-Wl,-L,@0@'.format(meson.source_root()),
13 '-Wl,-T,@0@/@1@'.format(meson.source_root(), rom_linkfile[0]),
Alphan Ulusoy9b5b10c2021-05-13 09:49:06 -040014] + embedded_target_extra_link_args
Sam Elliott240a2082020-07-27 21:34:34 +010015rom_link_deps = [rom_linkfile]
16
Alphan Ulusoya628be12021-05-14 16:24:02 -040017# Signature verification.
18sw_silicon_creator_mask_rom_sigverify = declare_dependency(
19 link_with: static_library(
20 'sw_silicon_creator_mask_rom_sigverify',
21 sources: [
Alphan Ulusoyb344ed72021-06-14 12:38:22 -040022 'sigverify_keys.c',
Alphan Ulusoy75cbf582021-06-18 14:59:41 -040023 hw_ip_otp_ctrl_reg_h,
Alphan Ulusoya628be12021-05-14 16:24:02 -040024 ],
25 dependencies: [
Alphan Ulusoy23da61a2021-06-15 09:40:48 -040026 sw_silicon_creator_lib_sigverify,
Alphan Ulusoy75cbf582021-06-18 14:59:41 -040027 sw_silicon_creator_lib_driver_otp,
28 sw_lib_bitfield,
Alphan Ulusoya628be12021-05-14 16:24:02 -040029 ],
30 ),
31)
32
Alphan Ulusoycfa1d3c2021-05-24 13:40:09 -040033# ROM_EXT image.
34sw_silicon_creator_mask_rom_romextimage = declare_dependency(
35 link_with: static_library(
36 'sw_silicon_creator_mask_rom_romextimage',
37 sources: [
38 'romextimage.c',
39 ],
40 ),
41)
42
Michael Mundayb4d81542021-06-04 11:49:54 +010043# Mask ROM ePMP library
44sw_silicon_creator_mask_rom_epmp = declare_dependency(
45 link_with: static_library(
46 'sw_silicon_creator_mask_rom_epmp',
47 sources: [
48 'mask_rom_epmp.S',
49 'mask_rom_epmp.c',
50 ],
51 dependencies: [
52 sw_silicon_creator_lib_epmp,
53 ],
54 )
55)
56
Michael Mundayfc5fb2d2021-06-08 12:59:01 +010057# Mask ROM ePMP test library.
58mask_rom_epmp_test_lib = declare_dependency(
59 sources: [
60 hw_ip_entropy_src_reg_h,
61 hw_ip_csrng_reg_h,
62 hw_ip_edn_reg_h,
Michael Munday31bafb82021-07-02 15:46:11 +010063 hw_ip_sram_ctrl_reg_h,
Michael Mundayfc5fb2d2021-06-08 12:59:01 +010064 'mask_rom_start.S',
65 ],
66 link_args: rom_link_args,
67 dependencies: [
68 freestanding_headers,
69 sw_silicon_creator_lib_driver_uart,
70 sw_silicon_creator_lib_epmp_test_unlock,
71 sw_silicon_creator_lib_fake_deps,
72 sw_silicon_creator_mask_rom_epmp,
73 sw_lib_crt,
74 sw_lib_pinmux,
75 sw_lib_runtime_print,
76 sw_lib_testing_test_status,
77 ],
78 link_with: static_library(
79 'mask_rom_epmp_test_lib',
80 sources: [
81 hw_ip_sram_ctrl_reg_h,
82 'mask_rom_epmp_test.c',
83 ],
84 link_depends: [rom_linkfile],
85 )
86)
87
88# Mask ROM ePMP test images
89foreach device_name, device_lib : sw_lib_arch_core_devices
90 mask_rom_epmp_test_elf = executable(
91 'mask_rom_epmp_test_' + device_name,
92 name_suffix: 'elf',
93 link_depends: rom_link_deps,
94 link_args: [
95 '-Wl,-Map=@0@/mask_rom_@1@.map'.format(meson.current_build_dir(), device_name),
96 ],
97 dependencies: [
98 device_lib,
99 mask_rom_epmp_test_lib,
100 ],
101 )
102
103 target_name = 'mask_rom_epmp_test_@0@_' + device_name
104
105 mask_rom_epmp_test_dis = custom_target(
106 target_name.format('dis'),
107 input: mask_rom_epmp_test_elf,
108 kwargs: elf_to_dis_custom_target_args,
109 )
110
111 mask_rom_epmp_test_bin = custom_target(
112 target_name.format('bin'),
113 input: mask_rom_epmp_test_elf,
114 kwargs: elf_to_bin_custom_target_args,
115 )
116
117 mask_rom_epmp_test_vmem32 = custom_target(
118 target_name.format('vmem32'),
119 input: mask_rom_epmp_test_bin,
120 kwargs: bin_to_vmem32_custom_target_args,
121 )
122
123 mask_rom_epmp_test_vmem64 = custom_target(
124 target_name.format('vmem64'),
125 input: mask_rom_epmp_test_bin,
126 kwargs: bin_to_vmem64_custom_target_args,
127 )
128
129 mask_rom_epmp_test_scrambled = custom_target(
130 target_name.format('scrambled'),
131 command: scramble_image_command,
132 depend_files: scramble_image_depend_files,
133 input: mask_rom_epmp_test_elf,
134 output: scramble_image_outputs,
135 build_by_default: true,
136 )
137
138 custom_target(
139 target_name.format('export'),
140 command: export_target_command,
141 depend_files: [export_target_depend_files,],
142 input: [
143 mask_rom_epmp_test_elf,
144 mask_rom_epmp_test_dis,
145 mask_rom_epmp_test_bin,
146 mask_rom_epmp_test_vmem32,
147 mask_rom_epmp_test_vmem64,
148 mask_rom_epmp_test_scrambled,
149 ],
150 output: target_name.format('export'),
151 build_always_stale: true,
152 build_by_default: true,
153 )
154endforeach
155
Silvestrs Timofejevs6c22add2021-03-09 11:43:36 +0000156# MaskROM library.
157mask_rom_lib = declare_dependency(
158 sources: [
Miguel Osorio61121392021-05-18 17:27:04 -0700159 hw_ip_entropy_src_reg_h,
160 hw_ip_csrng_reg_h,
161 hw_ip_edn_reg_h,
Michael Munday31bafb82021-07-02 15:46:11 +0100162 hw_ip_sram_ctrl_reg_h,
Silvestrs Timofejevs6c22add2021-03-09 11:43:36 +0000163 'mask_rom_start.S',
164 ],
165 link_args: rom_link_args,
166 dependencies: [
167 freestanding_headers,
Miguel Osorio925320e2021-04-08 09:05:06 -0700168 sw_silicon_creator_lib_driver_hmac,
Miguel Osorio61121392021-05-18 17:27:04 -0700169 sw_silicon_creator_lib_driver_keymgr,
Chris Frantz84c3a4e2021-05-27 15:59:13 -0700170 sw_silicon_creator_lib_driver_lifecycle,
Michael Munday78d9cda2021-06-10 16:07:04 +0100171 sw_silicon_creator_lib_driver_pinmux,
Chris Frantz620a1a72021-04-06 16:40:30 -0700172 sw_silicon_creator_lib_driver_uart,
173 sw_silicon_creator_lib_fake_deps,
Alphan Ulusoyf2e575e2021-05-22 23:48:40 -0400174 sw_silicon_creator_lib_manifest,
Chris Frantz84c3a4e2021-05-27 15:59:13 -0700175 sw_silicon_creator_lib_shutdown,
Michael Mundayb4d81542021-06-04 11:49:54 +0100176 sw_silicon_creator_mask_rom_epmp,
Alphan Ulusoya628be12021-05-14 16:24:02 -0400177 sw_silicon_creator_mask_rom_sigverify,
Alphan Ulusoycfa1d3c2021-05-24 13:40:09 -0400178 sw_silicon_creator_mask_rom_romextimage,
Silvestrs Timofejevs6c22add2021-03-09 11:43:36 +0000179 sw_lib_crt,
Chris Frantz620a1a72021-04-06 16:40:30 -0700180 sw_lib_runtime_print,
Silvestrs Timofejevs6c22add2021-03-09 11:43:36 +0000181 ],
182 link_with: static_library(
183 'mask_rom_lib',
Miguel Osorio73d7ead2021-05-04 21:47:36 -0700184 sources: [
Michael Mundayb4d81542021-06-04 11:49:54 +0100185 'mask_rom.c',
Miguel Osorio73d7ead2021-05-04 21:47:36 -0700186 ],
Silvestrs Timofejevs6c22add2021-03-09 11:43:36 +0000187 link_depends: [rom_linkfile],
188 )
189)
190
191# Production MaskROM images
Sam Elliott240a2082020-07-27 21:34:34 +0100192foreach device_name, device_lib : sw_lib_arch_core_devices
193 mask_rom_elf = executable(
194 'mask_rom_' + device_name,
Sam Elliott240a2082020-07-27 21:34:34 +0100195 name_suffix: 'elf',
Sam Elliott240a2082020-07-27 21:34:34 +0100196 link_depends: rom_link_deps,
Chris Frantz4fa3b312021-04-09 11:41:27 -0700197 link_args: [
198 '-Wl,-Map=@0@/mask_rom_@1@.map'.format(meson.current_build_dir(), device_name),
199 ],
Sam Elliott240a2082020-07-27 21:34:34 +0100200 dependencies: [
Silvestrs Timofejevsa3e018b2021-03-18 16:56:38 +0000201 device_lib,
Silvestrs Timofejevs6c22add2021-03-09 11:43:36 +0000202 mask_rom_lib,
Sam Elliott240a2082020-07-27 21:34:34 +0100203 ],
204 )
205
Alphan Ulusoy9b5b10c2021-05-13 09:49:06 -0400206 target_name = 'mask_rom_@0@_' + device_name
207
208 mask_rom_dis = custom_target(
209 target_name.format('dis'),
Sam Elliott240a2082020-07-27 21:34:34 +0100210 input: mask_rom_elf,
Alphan Ulusoy9b5b10c2021-05-13 09:49:06 -0400211 kwargs: elf_to_dis_custom_target_args,
212 )
213
214 mask_rom_bin = custom_target(
215 target_name.format('bin'),
216 input: mask_rom_elf,
217 kwargs: elf_to_bin_custom_target_args,
218 )
219
220 mask_rom_vmem32 = custom_target(
221 target_name.format('vmem32'),
222 input: mask_rom_bin,
223 kwargs: bin_to_vmem32_custom_target_args,
224 )
225
226 mask_rom_vmem64 = custom_target(
227 target_name.format('vmem64'),
228 input: mask_rom_bin,
229 kwargs: bin_to_vmem64_custom_target_args,
Sam Elliott240a2082020-07-27 21:34:34 +0100230 )
231
Rupert Swarbrick4366c822021-03-24 07:44:43 +0000232 mask_rom_scrambled = custom_target(
Alphan Ulusoy9b5b10c2021-05-13 09:49:06 -0400233 target_name.format('scrambled'),
Rupert Swarbrick4366c822021-03-24 07:44:43 +0000234 command: scramble_image_command,
235 depend_files: scramble_image_depend_files,
236 input: mask_rom_elf,
237 output: scramble_image_outputs,
238 build_by_default: true,
239 )
240
Sam Elliott240a2082020-07-27 21:34:34 +0100241 custom_target(
Alphan Ulusoy9b5b10c2021-05-13 09:49:06 -0400242 target_name.format('export'),
Philipp Wagner525891d2020-10-30 19:01:04 +0000243 command: export_target_command,
Sam Elliott08f926f2020-11-20 13:09:14 +0000244 depend_files: [export_target_depend_files,],
Rupert Swarbrick4366c822021-03-24 07:44:43 +0000245 input: [
246 mask_rom_elf,
Alphan Ulusoy9b5b10c2021-05-13 09:49:06 -0400247 mask_rom_dis,
248 mask_rom_bin,
249 mask_rom_vmem32,
250 mask_rom_vmem64,
Rupert Swarbrick4366c822021-03-24 07:44:43 +0000251 mask_rom_scrambled,
252 ],
Alphan Ulusoy9b5b10c2021-05-13 09:49:06 -0400253 output: target_name.format('export'),
Sam Elliott240a2082020-07-27 21:34:34 +0100254 build_always_stale: true,
255 build_by_default: true,
256 )
257endforeach
Alphan Ulusoy6e9a3c42021-04-14 18:17:46 -0400258
Alphan Ulusoycfa1d3c2021-05-24 13:40:09 -0400259test('sw_silicon_creator_mask_rom_romextimage_unittest', executable(
260 'sw_silicon_creator_mask_rom_romextimage_unittest',
261 sources: [
262 'romextimage_unittest.cc',
263 'romextimage.c',
264 ],
265 dependencies: [
266 sw_vendor_gtest,
267 ],
268 native: true,
269 c_args: ['-DOT_OFF_TARGET_TEST'],
270 cpp_args: ['-DOT_OFF_TARGET_TEST'],
271 ),
272 suite: 'mask_rom',
273)
Alphan Ulusoy3478c7f2021-06-15 09:10:12 -0400274
275test('sw_silicon_creator_mask_rom_sigverify_keys_unittest', executable(
276 'sw_silicon_creator_mask_rom_sigverify_keys_unittest',
277 sources: [
278 'sigverify_keys.c',
279 'sigverify_keys_unittest.cc',
Alphan Ulusoy75cbf582021-06-18 14:59:41 -0400280 hw_ip_otp_ctrl_reg_h,
Alphan Ulusoy23da61a2021-06-15 09:40:48 -0400281 ] + sw_silicon_creator_lib_sigverify_sources_for_boot_stage_tests,
Alphan Ulusoy3478c7f2021-06-15 09:10:12 -0400282 dependencies: [
283 sw_vendor_gtest,
Alphan Ulusoy75cbf582021-06-18 14:59:41 -0400284 sw_lib_testing_bitfield,
Alphan Ulusoy3478c7f2021-06-15 09:10:12 -0400285 ],
286 native: true,
Alphan Ulusoy548b1332021-08-08 01:07:52 -0400287 c_args: ['-DOT_OFF_TARGET_TEST'],
288 cpp_args: ['-DOT_OFF_TARGET_TEST'],
Alphan Ulusoy3478c7f2021-06-15 09:10:12 -0400289 ),
290 suite: 'mask_rom',
291)