blob: f05c6ed34c4652af72eb55e51634510b04ae48a2 [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.
Alphan Ulusoy5a8c8a02021-08-21 12:58:13 -040034sw_silicon_creator_mask_rom_boot_policy = declare_dependency(
Alphan Ulusoycfa1d3c2021-05-24 13:40:09 -040035 link_with: static_library(
Alphan Ulusoy5a8c8a02021-08-21 12:58:13 -040036 'sw_silicon_creator_mask_rom_boot_policy',
Alphan Ulusoycfa1d3c2021-05-24 13:40:09 -040037 sources: [
Alphan Ulusoy5a8c8a02021-08-21 12:58:13 -040038 'boot_policy.c',
Alphan Ulusoycfa1d3c2021-05-24 13:40:09 -040039 ],
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: [
Michael Munday5f158272021-07-29 23:57:32 +010060 hw_ip_aon_timer_reg_h,
Michael Mundayfc5fb2d2021-06-08 12:59:01 +010061 hw_ip_entropy_src_reg_h,
62 hw_ip_csrng_reg_h,
63 hw_ip_edn_reg_h,
Michael Munday31bafb82021-07-02 15:46:11 +010064 hw_ip_sram_ctrl_reg_h,
Michael Munday5f158272021-07-29 23:57:32 +010065 hw_ip_pwrmgr_reg_h,
Michael Mundayfc5fb2d2021-06-08 12:59:01 +010066 'mask_rom_start.S',
67 ],
68 link_args: rom_link_args,
69 dependencies: [
70 freestanding_headers,
Michael Munday4ca50c32021-09-01 23:27:12 +010071 sw_silicon_creator_lib_base_sec_mmio,
Michael Mundayfc5fb2d2021-06-08 12:59:01 +010072 sw_silicon_creator_lib_driver_uart,
73 sw_silicon_creator_lib_epmp_test_unlock,
74 sw_silicon_creator_lib_fake_deps,
Michael Munday5f158272021-07-29 23:57:32 +010075 sw_silicon_creator_lib_irq_asm,
Michael Mundayfc5fb2d2021-06-08 12:59:01 +010076 sw_silicon_creator_mask_rom_epmp,
77 sw_lib_crt,
78 sw_lib_pinmux,
79 sw_lib_runtime_print,
80 sw_lib_testing_test_status,
81 ],
82 link_with: static_library(
83 'mask_rom_epmp_test_lib',
84 sources: [
85 hw_ip_sram_ctrl_reg_h,
86 'mask_rom_epmp_test.c',
87 ],
88 link_depends: [rom_linkfile],
89 )
90)
91
92# Mask ROM ePMP test images
93foreach device_name, device_lib : sw_lib_arch_core_devices
94 mask_rom_epmp_test_elf = executable(
95 'mask_rom_epmp_test_' + device_name,
96 name_suffix: 'elf',
97 link_depends: rom_link_deps,
98 link_args: [
99 '-Wl,-Map=@0@/mask_rom_@1@.map'.format(meson.current_build_dir(), device_name),
100 ],
101 dependencies: [
102 device_lib,
103 mask_rom_epmp_test_lib,
104 ],
105 )
106
107 target_name = 'mask_rom_epmp_test_@0@_' + device_name
108
109 mask_rom_epmp_test_dis = custom_target(
110 target_name.format('dis'),
111 input: mask_rom_epmp_test_elf,
112 kwargs: elf_to_dis_custom_target_args,
113 )
114
115 mask_rom_epmp_test_bin = custom_target(
116 target_name.format('bin'),
117 input: mask_rom_epmp_test_elf,
118 kwargs: elf_to_bin_custom_target_args,
119 )
120
121 mask_rom_epmp_test_vmem32 = custom_target(
122 target_name.format('vmem32'),
123 input: mask_rom_epmp_test_bin,
124 kwargs: bin_to_vmem32_custom_target_args,
125 )
126
127 mask_rom_epmp_test_vmem64 = custom_target(
128 target_name.format('vmem64'),
129 input: mask_rom_epmp_test_bin,
130 kwargs: bin_to_vmem64_custom_target_args,
131 )
132
133 mask_rom_epmp_test_scrambled = custom_target(
134 target_name.format('scrambled'),
135 command: scramble_image_command,
136 depend_files: scramble_image_depend_files,
137 input: mask_rom_epmp_test_elf,
138 output: scramble_image_outputs,
139 build_by_default: true,
140 )
141
142 custom_target(
143 target_name.format('export'),
144 command: export_target_command,
145 depend_files: [export_target_depend_files,],
146 input: [
147 mask_rom_epmp_test_elf,
148 mask_rom_epmp_test_dis,
149 mask_rom_epmp_test_bin,
150 mask_rom_epmp_test_vmem32,
151 mask_rom_epmp_test_vmem64,
152 mask_rom_epmp_test_scrambled,
153 ],
154 output: target_name.format('export'),
155 build_always_stale: true,
156 build_by_default: true,
157 )
158endforeach
159
Silvestrs Timofejevs6c22add2021-03-09 11:43:36 +0000160# MaskROM library.
161mask_rom_lib = declare_dependency(
162 sources: [
Michael Munday5f158272021-07-29 23:57:32 +0100163 hw_ip_aon_timer_reg_h,
Miguel Osorio61121392021-05-18 17:27:04 -0700164 hw_ip_entropy_src_reg_h,
165 hw_ip_csrng_reg_h,
166 hw_ip_edn_reg_h,
Michael Munday31bafb82021-07-02 15:46:11 +0100167 hw_ip_sram_ctrl_reg_h,
Silvestrs Timofejevs6c22add2021-03-09 11:43:36 +0000168 'mask_rom_start.S',
169 ],
170 link_args: rom_link_args,
171 dependencies: [
172 freestanding_headers,
Miguel Osorio925320e2021-04-08 09:05:06 -0700173 sw_silicon_creator_lib_driver_hmac,
Miguel Osorio61121392021-05-18 17:27:04 -0700174 sw_silicon_creator_lib_driver_keymgr,
Chris Frantz84c3a4e2021-05-27 15:59:13 -0700175 sw_silicon_creator_lib_driver_lifecycle,
Michael Munday78d9cda2021-06-10 16:07:04 +0100176 sw_silicon_creator_lib_driver_pinmux,
Michael Mundayb1188ef2021-08-26 22:51:46 +0100177 sw_silicon_creator_lib_driver_retention_sram,
178 sw_silicon_creator_lib_driver_rstmgr,
Chris Frantz620a1a72021-04-06 16:40:30 -0700179 sw_silicon_creator_lib_driver_uart,
180 sw_silicon_creator_lib_fake_deps,
Michael Munday5f158272021-07-29 23:57:32 +0100181 sw_silicon_creator_lib_irq_asm,
Alphan Ulusoyf2e575e2021-05-22 23:48:40 -0400182 sw_silicon_creator_lib_manifest,
Chris Frantz84c3a4e2021-05-27 15:59:13 -0700183 sw_silicon_creator_lib_shutdown,
Michael Mundayb4d81542021-06-04 11:49:54 +0100184 sw_silicon_creator_mask_rom_epmp,
Alphan Ulusoya628be12021-05-14 16:24:02 -0400185 sw_silicon_creator_mask_rom_sigverify,
Alphan Ulusoy5a8c8a02021-08-21 12:58:13 -0400186 sw_silicon_creator_mask_rom_boot_policy,
Silvestrs Timofejevs6c22add2021-03-09 11:43:36 +0000187 sw_lib_crt,
Chris Frantz620a1a72021-04-06 16:40:30 -0700188 sw_lib_runtime_print,
Silvestrs Timofejevs6c22add2021-03-09 11:43:36 +0000189 ],
190 link_with: static_library(
191 'mask_rom_lib',
Miguel Osorio73d7ead2021-05-04 21:47:36 -0700192 sources: [
Michael Mundayb4d81542021-06-04 11:49:54 +0100193 'mask_rom.c',
Miguel Osorio73d7ead2021-05-04 21:47:36 -0700194 ],
Silvestrs Timofejevs6c22add2021-03-09 11:43:36 +0000195 link_depends: [rom_linkfile],
196 )
197)
198
199# Production MaskROM images
Sam Elliott240a2082020-07-27 21:34:34 +0100200foreach device_name, device_lib : sw_lib_arch_core_devices
201 mask_rom_elf = executable(
202 'mask_rom_' + device_name,
Sam Elliott240a2082020-07-27 21:34:34 +0100203 name_suffix: 'elf',
Sam Elliott240a2082020-07-27 21:34:34 +0100204 link_depends: rom_link_deps,
Chris Frantz4fa3b312021-04-09 11:41:27 -0700205 link_args: [
206 '-Wl,-Map=@0@/mask_rom_@1@.map'.format(meson.current_build_dir(), device_name),
207 ],
Sam Elliott240a2082020-07-27 21:34:34 +0100208 dependencies: [
Silvestrs Timofejevsa3e018b2021-03-18 16:56:38 +0000209 device_lib,
Silvestrs Timofejevs6c22add2021-03-09 11:43:36 +0000210 mask_rom_lib,
Sam Elliott240a2082020-07-27 21:34:34 +0100211 ],
212 )
213
Alphan Ulusoy9b5b10c2021-05-13 09:49:06 -0400214 target_name = 'mask_rom_@0@_' + device_name
215
216 mask_rom_dis = custom_target(
217 target_name.format('dis'),
Sam Elliott240a2082020-07-27 21:34:34 +0100218 input: mask_rom_elf,
Alphan Ulusoy9b5b10c2021-05-13 09:49:06 -0400219 kwargs: elf_to_dis_custom_target_args,
220 )
221
222 mask_rom_bin = custom_target(
223 target_name.format('bin'),
224 input: mask_rom_elf,
225 kwargs: elf_to_bin_custom_target_args,
226 )
227
228 mask_rom_vmem32 = custom_target(
229 target_name.format('vmem32'),
230 input: mask_rom_bin,
231 kwargs: bin_to_vmem32_custom_target_args,
232 )
233
234 mask_rom_vmem64 = custom_target(
235 target_name.format('vmem64'),
236 input: mask_rom_bin,
237 kwargs: bin_to_vmem64_custom_target_args,
Sam Elliott240a2082020-07-27 21:34:34 +0100238 )
239
Rupert Swarbrick4366c822021-03-24 07:44:43 +0000240 mask_rom_scrambled = custom_target(
Alphan Ulusoy9b5b10c2021-05-13 09:49:06 -0400241 target_name.format('scrambled'),
Rupert Swarbrick4366c822021-03-24 07:44:43 +0000242 command: scramble_image_command,
243 depend_files: scramble_image_depend_files,
244 input: mask_rom_elf,
245 output: scramble_image_outputs,
246 build_by_default: true,
247 )
248
Sam Elliott240a2082020-07-27 21:34:34 +0100249 custom_target(
Alphan Ulusoy9b5b10c2021-05-13 09:49:06 -0400250 target_name.format('export'),
Philipp Wagner525891d2020-10-30 19:01:04 +0000251 command: export_target_command,
Sam Elliott08f926f2020-11-20 13:09:14 +0000252 depend_files: [export_target_depend_files,],
Rupert Swarbrick4366c822021-03-24 07:44:43 +0000253 input: [
254 mask_rom_elf,
Alphan Ulusoy9b5b10c2021-05-13 09:49:06 -0400255 mask_rom_dis,
256 mask_rom_bin,
257 mask_rom_vmem32,
258 mask_rom_vmem64,
Rupert Swarbrick4366c822021-03-24 07:44:43 +0000259 mask_rom_scrambled,
260 ],
Alphan Ulusoy9b5b10c2021-05-13 09:49:06 -0400261 output: target_name.format('export'),
Sam Elliott240a2082020-07-27 21:34:34 +0100262 build_always_stale: true,
263 build_by_default: true,
264 )
265endforeach
Alphan Ulusoy6e9a3c42021-04-14 18:17:46 -0400266
Alphan Ulusoy5a8c8a02021-08-21 12:58:13 -0400267test('sw_silicon_creator_mask_rom_boot_policy_unittest', executable(
268 'sw_silicon_creator_mask_rom_boot_policy_unittest',
Alphan Ulusoycfa1d3c2021-05-24 13:40:09 -0400269 sources: [
Alphan Ulusoy5a8c8a02021-08-21 12:58:13 -0400270 'boot_policy_unittest.cc',
271 'boot_policy.c',
Alphan Ulusoycfa1d3c2021-05-24 13:40:09 -0400272 ],
273 dependencies: [
274 sw_vendor_gtest,
275 ],
276 native: true,
277 c_args: ['-DOT_OFF_TARGET_TEST'],
278 cpp_args: ['-DOT_OFF_TARGET_TEST'],
279 ),
280 suite: 'mask_rom',
281)
Alphan Ulusoy3478c7f2021-06-15 09:10:12 -0400282
283test('sw_silicon_creator_mask_rom_sigverify_keys_unittest', executable(
284 'sw_silicon_creator_mask_rom_sigverify_keys_unittest',
285 sources: [
286 'sigverify_keys.c',
287 'sigverify_keys_unittest.cc',
Alphan Ulusoy75cbf582021-06-18 14:59:41 -0400288 hw_ip_otp_ctrl_reg_h,
Alphan Ulusoy23da61a2021-06-15 09:40:48 -0400289 ] + sw_silicon_creator_lib_sigverify_sources_for_boot_stage_tests,
Alphan Ulusoy3478c7f2021-06-15 09:10:12 -0400290 dependencies: [
291 sw_vendor_gtest,
Alphan Ulusoy75cbf582021-06-18 14:59:41 -0400292 sw_lib_testing_bitfield,
Alphan Ulusoy3478c7f2021-06-15 09:10:12 -0400293 ],
294 native: true,
Alphan Ulusoy548b1332021-08-08 01:07:52 -0400295 c_args: ['-DOT_OFF_TARGET_TEST'],
296 cpp_args: ['-DOT_OFF_TARGET_TEST'],
Alphan Ulusoy3478c7f2021-06-15 09:10:12 -0400297 ),
298 suite: 'mask_rom',
299)