@@ -160,18 +160,21 @@ _rom_start_boot:
160160
161161LABEL_FOR_TEST(kRomStartBootMaybeHalt)
162162 // Check if we should halt here.
163+ COVERAGE_ASM_AUTOGEN_MARK(t6,0 )
163164 li a0, (TOP_EARLGREY_OTP_CTRL_CORE_BASE_ADDR + \
164165 OTP_CTRL_SW_CFG_WINDOW_REG_OFFSET)
165166 lw t0, OTP_CTRL_PARAM_CREATOR_SW_CFG_ROM_EXEC_EN_OFFSET(a0)
166167 bnez t0, .L_exec_en
167168LABEL_FOR_TEST(kRomStartBootHalted)
168169.L_halt_loop:
170+ COVERAGE_ASM_AUTOGEN_MARK(t6,1 )
169171 wfi
170172 j .L_halt_loop
171173
172174LABEL_FOR_TEST(kRomStartBootExecEn)
173175.L_exec_en:
174176 // Enable NMIs from the watchdog timer.
177+ COVERAGE_ASM_AUTOGEN_MARK(t6,2 )
175178 li t0, TOP_EARLGREY_RV_CORE_IBEX_CFG_BASE_ADDR
176179 li t1, (1 << RV_CORE_IBEX_NMI_ENABLE_WDOG_EN_BIT)
177180 sw t1, RV_CORE_IBEX_NMI_ENABLE_REG_OFFSET(t0)
@@ -194,6 +197,7 @@ LABEL_FOR_TEST(kRomStartBootExecEn)
194197 beq t0, t1, .L_skip_watchdog_init
195198
196199 // Configure the watchdog's bark and bite thresholds.
200+ COVERAGE_ASM_AUTOGEN_MARK(t6,3 )
197201 li t0, TOP_EARLGREY_AON_TIMER_AON_BASE_ADDR
198202 li t1, WDOG_BARK_THOLD
199203 sw t1, AON_TIMER_WDOG_BARK_THOLD_REG_OFFSET(t0)
@@ -207,6 +211,7 @@ LABEL_FOR_TEST(kRomStartStoreT1ToBiteThold)
207211.L_skip_watchdog_init:
208212
209213 // Configure rstmgr alert and cpu info collection.
214+ COVERAGE_ASM_AUTOGEN_MARK(t6,4 )
210215 li a0, (TOP_EARLGREY_OTP_CTRL_CORE_BASE_ADDR + \
211216 OTP_CTRL_SW_CFG_WINDOW_REG_OFFSET)
212217 lw t0, OTP_CTRL_PARAM_OWNER_SW_CFG_ROM_RSTMGR_INFO_EN_OFFSET(a0)
@@ -215,20 +220,24 @@ LABEL_FOR_TEST(kRomStartStoreT1ToBiteThold)
215220 // Enable alert info collection if enabled in OTP.
216221 andi t2, t0, 0xff
217222 bne t2, t1, .L_skip_rstmgr_alert_info_en
223+ COVERAGE_ASM_AUTOGEN_MARK(t6,5 )
218224 li t2, (1 << RSTMGR_ALERT_INFO_CTRL_EN_BIT)
219225 sw t2, RSTMGR_ALERT_INFO_CTRL_REG_OFFSET(a0)
220226.L_skip_rstmgr_alert_info_en:
221227 // Enable cpu info collection if enabled in OTP.
228+ COVERAGE_ASM_AUTOGEN_MARK(t6,6 )
222229 srli t0, t0, 8
223230 andi t2, t0, 0xff
224231 bne t2, t1, .L_skip_rstmgr_cpu_info_en
232+ COVERAGE_ASM_AUTOGEN_MARK(t6,7 )
225233 li t2, (1 << RSTMGR_CPU_INFO_CTRL_EN_BIT)
226234 sw t2, RSTMGR_ALERT_INFO_CTRL_REG_OFFSET(a0)
227235.L_skip_rstmgr_cpu_info_en:
228236
229237LABEL_FOR_TEST(kRomStartWatchdogEnabled)
230238 // Clear all the machine-defined interrupts, `MEIE`, `MTIE`, and `MSIE` fields
231239 // of `mie`.
240+ COVERAGE_ASM_AUTOGEN_MARK(t6,8 )
232241 li t0, 0x00000888
233242 csrc mie, t0
234243
@@ -240,6 +249,7 @@ LABEL_FOR_TEST(kRomStartWatchdogEnabled)
240249 bne t0, t1, .L_ast_init_end
241250
242251 // Copy the AST configuration from OTP.
252+ COVERAGE_ASM_AUTOGEN_MARK(t6,9 )
243253 li a0, (TOP_EARLGREY_AST_BASE_ADDR)
244254 li a1, (TOP_EARLGREY_AST_BASE_ADDR + AST_REGAL_REG_OFFSET + 4 )
245255 li a2, (TOP_EARLGREY_OTP_CTRL_CORE_BASE_ADDR + \
@@ -250,11 +260,13 @@ LABEL_FOR_TEST(kRomStartWatchdogEnabled)
250260 // Enable jittery clock if not strictly disabled in OTP.
251261 // Use hardcoded MULTIBIT_ASM_BOOL4_TRUE as the enable word to reduce all
252262 // other possible OTP values to true.
263+ COVERAGE_ASM_AUTOGEN_MARK(t6,10 )
253264 li a0, (TOP_EARLGREY_OTP_CTRL_CORE_BASE_ADDR + \
254265 OTP_CTRL_SW_CFG_WINDOW_REG_OFFSET)
255266 lw t0, OTP_CTRL_PARAM_CREATOR_SW_CFG_JITTER_EN_OFFSET(a0)
256267 li t1, MULTIBIT_ASM_BOOL4_FALSE
257268 beq t0, t1, .L_ast_init_end
269+ COVERAGE_ASM_AUTOGEN_MARK(t6,11 )
258270 li a0, TOP_EARLGREY_CLKMGR_AON_BASE_ADDR
259271 li t1, MULTIBIT_ASM_BOOL4_TRUE
260272 sw t1, CLKMGR_JITTER_ENABLE_REG_OFFSET(a0)
@@ -264,16 +276,19 @@ LABEL_FOR_TEST(kRomStartWatchdogEnabled)
264276 // CREATOR_SW_CFG_RMA_SPIN_CYCLES to let the transition start and continue
265277 // looping while lc_ctrl is not ready. Reset if the CPU is still executing at
266278 // the end.
279+ COVERAGE_ASM_AUTOGEN_MARK(t6,12 )
267280 li a0, (TOP_EARLGREY_OTP_CTRL_CORE_BASE_ADDR + \
268281 OTP_CTRL_SW_CFG_WINDOW_REG_OFFSET)
269282 lw t0, OTP_CTRL_PARAM_CREATOR_SW_CFG_RMA_SPIN_EN_OFFSET(a0)
270283 li t6, HARDENED_BOOL_TRUE
271284 bne t0, t6, .L_rma_spin_skip
272285
286+ COVERAGE_ASM_AUTOGEN_MARK(t6,13 )
273287 li a1, (TOP_EARLGREY_OTP_CTRL_CORE_BASE_ADDR + \
274288 OTP_CTRL_SW_CFG_WINDOW_REG_OFFSET)
275289 lw t1, OTP_CTRL_PARAM_CREATOR_SW_CFG_RMA_SPIN_EN_OFFSET(a1)
276290 beq t1, t6, .L_rma_spin_check_straps
291+ COVERAGE_ASM_AUTOGEN_MARK(t6,14 )
277292 unimp
278293 unimp
279294 unimp
@@ -289,6 +304,7 @@ LABEL_FOR_TEST(kRomStartWatchdogEnabled)
289304 // |------------------+----------------+----------------+------------------|
290305 // | Configuration: | Input | Input | Input |
291306 // | | Pull-down | Pull-down | Pull-up |
307+ COVERAGE_ASM_AUTOGEN_MARK(t6,15 )
292308 li a0, (TOP_EARLGREY_PINMUX_AON_BASE_ADDR + \
293309 PINMUX_MIO_PAD_ATTR_0_REG_OFFSET)
294310 li t0, (1 << PINMUX_MIO_PAD_ATTR_0_PULL_EN_0_BIT) | \
@@ -312,10 +328,12 @@ LABEL_FOR_TEST(kRomStartWatchdogEnabled)
312328 csrw mcycle, zero
313329 li t0, PINMUX_PAD_ATTR_PROP_CYCLES
314330.L_rma_strap_pu_spin_cycles_loop:
331+ COVERAGE_ASM_AUTOGEN_MARK(t6,16 )
315332 csrr t1, mcycle
316333 bltu t1, t0, .L_rma_strap_pu_spin_cycles_loop
317334
318335 // Read the strap GPIOs and check their value.
336+ COVERAGE_ASM_AUTOGEN_MARK(t6,17 )
319337 li a0, TOP_EARLGREY_GPIO_BASE_ADDR
320338 lw t0, GPIO_DATA_IN_REG_OFFSET(a0)
321339 li t5, SW_STRAP_MASK
@@ -325,12 +343,14 @@ LABEL_FOR_TEST(kRomStartWatchdogEnabled)
325343 bne t0, t6, .L_rma_spin_skip
326344
327345 // Double-check the GPIO strap value.
346+ COVERAGE_ASM_AUTOGEN_MARK(t6,18 )
328347 li t6, HARDENED_BOOL_TRUE
329348 li a1, TOP_EARLGREY_GPIO_BASE_ADDR
330349 lw t1, GPIO_DATA_IN_REG_OFFSET(a1)
331350 and t1, t1, t5
332351 xor t1, t1, t4
333352 beq t1, t6, .L_rma_spin_init
353+ COVERAGE_ASM_AUTOGEN_MARK(t6,19 )
334354 unimp
335355 unimp
336356 unimp
@@ -340,20 +360,24 @@ LABEL_FOR_TEST(kRomStartWatchdogEnabled)
340360 // the lifecycle transition request on JTAG. Since this is a wait
341361 // loop, disable the watchdog.
342362.L_rma_spin_init:
363+ COVERAGE_ASM_AUTOGEN_MARK(t6,20 )
343364 csrw mcycle, zero
344365 li a0, TOP_EARLGREY_AON_TIMER_AON_BASE_ADDR
345366 sw zero, AON_TIMER_WDOG_CTRL_REG_OFFSET(a0)
346367.L_rma_spin_cycles_loop:
368+ COVERAGE_ASM_AUTOGEN_MARK(t6,21 )
347369 li a0, (TOP_EARLGREY_OTP_CTRL_CORE_BASE_ADDR + \
348370 OTP_CTRL_SW_CFG_WINDOW_REG_OFFSET)
349371 lw t0, OTP_CTRL_PARAM_CREATOR_SW_CFG_RMA_SPIN_CYCLES_OFFSET(a0)
350372 csrr t1, mcycle
351373 bltu t1, t0, .L_rma_spin_cycles_loop
352374.L_rma_spin_lc_ctrl_loop:
375+ COVERAGE_ASM_AUTOGEN_MARK(t6,22 )
353376 li a0, TOP_EARLGREY_LC_CTRL_BASE_ADDR
354377 lw t0, LC_CTRL_STATUS_REG_OFFSET(a0)
355378 andi t0, t0, (1 << LC_CTRL_STATUS_READY_BIT)
356379 beqz t0, .L_rma_spin_lc_ctrl_loop
380+ COVERAGE_ASM_AUTOGEN_MARK(t6,23 )
357381 unimp
358382 unimp
359383 unimp
@@ -363,12 +387,14 @@ LABEL_FOR_TEST(kRomStartWatchdogEnabled)
363387 // Skip the `entropy_src` health checks configuration if the
364388 // `RNG_HEALTH_CONFIG_DIGEST` is not programmed. The default digest value is
365389 // 0 given that it is stored in a software OTP partition.
390+ COVERAGE_ASM_AUTOGEN_MARK(t6,24 )
366391 li a0, (TOP_EARLGREY_OTP_CTRL_CORE_BASE_ADDR + \
367392 OTP_CTRL_SW_CFG_WINDOW_REG_OFFSET)
368393 lw t0, OTP_CTRL_PARAM_CREATOR_SW_CFG_RNG_HEALTH_CONFIG_DIGEST_OFFSET(a0)
369394 beqz t0, .L_entropy_enable
370395
371396 // Copy the entropy source health checks configuration thresholds from OTP.
397+ COVERAGE_ASM_AUTOGEN_MARK(t6,25 )
372398 li a0, (TOP_EARLGREY_ENTROPY_SRC_BASE_ADDR + \
373399 ENTROPY_SRC_REPCNT_THRESHOLDS_REG_OFFSET)
374400 li a1, (TOP_EARLGREY_ENTROPY_SRC_BASE_ADDR + \
@@ -379,6 +405,7 @@ LABEL_FOR_TEST(kRomStartWatchdogEnabled)
379405 call crt_section_copy
380406
381407 // Configure the entropy source health alert threshold.
408+ COVERAGE_ASM_AUTOGEN_MARK(t6,26 )
382409 li a0, TOP_EARLGREY_ENTROPY_SRC_BASE_ADDR
383410 li a1, (TOP_EARLGREY_OTP_CTRL_CORE_BASE_ADDR + \
384411 OTP_CTRL_SW_CFG_WINDOW_REG_OFFSET)
@@ -388,6 +415,7 @@ LABEL_FOR_TEST(kRomStartWatchdogEnabled)
388415.L_entropy_enable:
389416 // The following sequence enables the minimum level of entropy required to
390417 // initialize memory scrambling, as well as the entropy distribution network.
418+ COVERAGE_ASM_AUTOGEN_MARK(t6,27 )
391419 li a0, TOP_EARLGREY_ENTROPY_SRC_BASE_ADDR
392420
393421 // Note for BOOT_ROM initialization the FIPS_ENABLE bit is set to kMultiBitBool4False
@@ -428,6 +456,7 @@ LABEL_FOR_TEST(kRomStartWatchdogEnabled)
428456 lw t0, OTP_CTRL_PARAM_CREATOR_SW_CFG_SRAM_KEY_RENEW_EN_OFFSET(a0)
429457 li t1, HARDENED_BOOL_FALSE
430458 beq t0, t1, .L_sram_key_renew_skip
459+ COVERAGE_ASM_AUTOGEN_MARK(t6,28 )
431460 COVERAGE_ASM_BACKUP_COUNTERS(s10, s11)
432461 li a0, TOP_EARLGREY_SRAM_CTRL_MAIN_REGS_BASE_ADDR
433462 li a1, (1 << SRAM_CTRL_CTRL_RENEW_SCR_KEY_BIT) | (1 << SRAM_CTRL_CTRL_INIT_BIT)
@@ -486,6 +515,7 @@ LABEL_FOR_TEST(kRomStartWatchdogEnabled)
486515 */
487516
488517 // Initialize the `.bss` section.
518+ COVERAGE_ASM_AUTOGEN_MARK(t6,30 )
489519 la a0, _bss_start
490520 la a1, _bss_end
491521 call crt_section_clear
@@ -497,6 +527,7 @@ LABEL_FOR_TEST(kRomStartWatchdogEnabled)
497527 //
498528 // If an exception fires, the handler is conventionally only allowed to clobber
499529 // memory at addresses below `sp`.
530+ COVERAGE_ASM_AUTOGEN_MARK(t6,31 )
500531 la sp, _stack_end
501532
502533 // PRAGMA_COVERAGE: skip start
0 commit comments