blob: 132db5b9599ebb941e0309406450d2c5165f538e [file] [log] [blame]
# Copyright lowRISC contributors.
# Licensed under the Apache License, Version 2.0, see LICENSE for details.
# SPDX-License-Identifier: Apache-2.0
load("//rules:const.bzl", "CONST", "hex")
load("//rules:linker.bzl", "ld_library")
load("//rules:manifest.bzl", "manifest")
load(
"//rules:opentitan.bzl",
"opentitan_flash_binary",
"opentitan_multislot_flash_binary",
)
load("//rules:opentitan_test.bzl", "cw310_params", "opentitan_functest")
package(default_visibility = ["//visibility:public"])
ld_library(
name = "ld_common",
includes = ["bare_metal_common.ld"],
deps = [
"//sw/device:info_sections",
"//sw/device/silicon_creator/lib/base:static_critical_sections",
],
)
ld_library(
name = "ld_slot_a",
script = "bare_metal_slot_a.ld",
deps = [
":ld_common",
"//hw/top_earlgrey/sw/autogen:top_earlgrey_memory",
],
)
ld_library(
name = "ld_slot_b",
script = "bare_metal_slot_b.ld",
deps = [
":ld_common",
"//hw/top_earlgrey/sw/autogen:top_earlgrey_memory",
],
)
ld_library(
name = "ld_slot_virtual",
script = "bare_metal_slot_virtual.ld",
deps = [
":ld_common",
"//hw/top_earlgrey/sw/autogen:top_earlgrey_memory",
],
)
cc_library(
name = "bare_metal",
srcs = ["bare_metal.c"],
hdrs = ["bare_metal.h"],
deps = [
"//sw/device/silicon_creator/lib:manifest_def",
"//sw/device/silicon_creator/lib:rom_print",
"//sw/device/silicon_creator/lib/base:static_critical_boot_measurements",
"//sw/device/silicon_creator/lib/base:static_critical_epmp_state",
"//sw/device/silicon_creator/lib/base:static_critical_sec_mmio",
],
)
manifest({
"name": "manifest_standard",
"address_translation": hex(CONST.FALSE),
"identifier": hex(CONST.OWNER),
})
manifest({
"name": "manifest_virtual",
"address_translation": hex(CONST.TRUE),
"identifier": hex(CONST.OWNER),
})
opentitan_flash_binary(
name = "bare_metal_slot_a",
srcs = ["bare_metal_start.S"],
manifest = ":manifest_standard",
signed = True,
deps = [
":bare_metal",
":ld_slot_a",
"//sw/device/lib/crt",
"//sw/device/silicon_creator/lib:manifest_def",
],
)
opentitan_flash_binary(
name = "bare_metal_slot_b",
srcs = ["bare_metal_start.S"],
manifest = ":manifest_standard",
signed = True,
deps = [
":bare_metal",
":ld_slot_b",
"//sw/device/lib/crt",
"//sw/device/silicon_creator/lib:manifest_def",
],
)
opentitan_flash_binary(
name = "bare_metal_slot_virtual",
srcs = ["bare_metal_start.S"],
manifest = ":manifest_virtual",
signed = True,
deps = [
":bare_metal",
":ld_slot_virtual",
"//sw/device/lib/crt",
"//sw/device/silicon_creator/lib:manifest_def",
],
)
################################################################################
# Bare metal ROM_EXT + BL0 test that DOES NOT use OTTF.
################################################################################
opentitan_multislot_flash_binary(
name = "rom_ext_virtual_bare_metal_virtual",
srcs = {
"//sw/device/silicon_creator/rom_ext:rom_ext_slot_virtual": {
"key": "fake_test_key_0",
"offset": "0x0",
},
":bare_metal_slot_virtual": {
"key": "fake_rom_ext_test_key_0",
"offset": "0x10000",
},
},
)
BOOT_SUCCESS_MSG = "Bare metal PASS!"
opentitan_functest(
name = "rom_ext_virtual_bare_metal_virtual_boot_test",
cw310 = cw310_params(
exit_success = BOOT_SUCCESS_MSG,
),
key = "multislot",
ot_flash_binary = ":rom_ext_virtual_bare_metal_virtual",
signed = True,
targets = ["cw310_rom"],
)
################################################################################
# Bare metal ROM_EXT + BL0 test that DOES use OTTF.
################################################################################
opentitan_flash_binary(
name = "ottf_test_bl0_slot_virtual",
srcs = ["empty_test.c"],
manifest = "//sw/device/silicon_owner/bare_metal:manifest_virtual",
signed = True,
deps = [
"//sw/device/lib/testing/test_framework:ottf_ld_silicon_owner_slot_virtual",
"//sw/device/lib/testing/test_framework:ottf_main",
],
)
opentitan_multislot_flash_binary(
name = "rom_ext_virtual_ottf_bl0_virtual",
srcs = {
"//sw/device/silicon_creator/rom_ext:rom_ext_slot_virtual": {
"key": "fake_test_key_0",
"offset": "0x0",
},
":ottf_test_bl0_slot_virtual": {
"key": "fake_rom_ext_test_key_0",
"offset": "0x10000",
},
},
)
opentitan_functest(
name = "rom_ext_virtual_ottf_bl0_virtual_test",
key = "multislot",
ot_flash_binary = ":rom_ext_virtual_ottf_bl0_virtual",
signed = True,
targets = ["cw310_rom"],
)