| # Copyright lowRISC contributors. | |
| # Licensed under the Apache License, Version 2.0, see LICENSE for details. | |
| # SPDX-License-Identifier: Apache-2.0 | |
| load("//rules:cross_platform.bzl", "dual_cc_library", "dual_inputs") | |
| load( | |
| "//rules:opentitan_test.bzl", | |
| "cw310_params", | |
| "opentitan_functest", | |
| ) | |
| package(default_visibility = ["//visibility:public"]) | |
| cc_library( | |
| name = "global_mock", | |
| hdrs = ["global_mock.h"], | |
| ) | |
| cc_library( | |
| name = "stdasm", | |
| hdrs = ["stdasm.h"], | |
| ) | |
| cc_library( | |
| name = "macros", | |
| hdrs = [ | |
| "adv_macros.h", | |
| "macros.h", | |
| ], | |
| ) | |
| cc_library( | |
| name = "math_polyfills", | |
| srcs = ["math_builtins.c"], | |
| # This library defines polyfills, so we need to ensure LLVM doesn't make | |
| # the polyfills call themselves. | |
| copts = ["-fno-builtin"], | |
| visibility = ["//visibility:private"], | |
| deps = [":macros"], | |
| ) | |
| cc_test( | |
| name = "math_builtins_unittest", | |
| srcs = ["math_builtins_unittest.cc"], | |
| deps = [ | |
| ":bitfield", | |
| ":math_polyfills", | |
| "@googletest//:gtest_main", | |
| ], | |
| ) | |
| alias( | |
| name = "math_builtins", | |
| actual = select({ | |
| "//sw/device:measure_coverage_on_target": "//sw/device:nothing", | |
| "//conditions:default": ":math_polyfills", | |
| }), | |
| visibility = ["//visibility:private"], | |
| ) | |
| cc_library( | |
| name = "math", | |
| srcs = ["math.c"], | |
| hdrs = ["math.h"], | |
| deps = [":math_builtins"], | |
| ) | |
| cc_test( | |
| name = "math_unittest", | |
| srcs = ["math_unittest.cc"], | |
| deps = [ | |
| ":math", | |
| "@googletest//:gtest_main", | |
| ], | |
| ) | |
| cc_library( | |
| name = "bitfield", | |
| srcs = ["bitfield.c"], | |
| hdrs = ["bitfield.h"], | |
| deps = [ | |
| ":macros", | |
| ":math", | |
| ], | |
| ) | |
| cc_library( | |
| name = "memory", | |
| srcs = ["memory.c"], | |
| hdrs = ["memory.h"], | |
| # This library defines memcpy(), so we can't have LLVM rewriting memcpy | |
| # into a call to itself. | |
| copts = ["-fno-builtin"], | |
| deps = [ | |
| ":macros", | |
| ], | |
| ) | |
| opentitan_functest( | |
| name = "memory_perftest", | |
| srcs = ["memory_perftest.c"], | |
| cw310 = cw310_params( | |
| tags = [ | |
| "flaky", | |
| "manual", | |
| ], | |
| ), | |
| manifest = "//sw/device/silicon_creator/rom_ext:manifest_standard", | |
| targets = ["cw310_test_rom"], | |
| deps = [ | |
| ":macros", | |
| ":memory", | |
| "//sw/device/lib/runtime:ibex", | |
| "//sw/device/lib/runtime:log", | |
| "//sw/device/lib/testing/test_framework:check", | |
| "//sw/device/lib/testing/test_framework:ottf_main", | |
| ], | |
| ) | |
| cc_test( | |
| name = "memory_unittest", | |
| srcs = ["memory_unittest.cc"], | |
| deps = [ | |
| ":memory", | |
| "@googletest//:gtest_main", | |
| ], | |
| ) | |
| cc_library( | |
| name = "hardened", | |
| srcs = ["hardened.c"], | |
| hdrs = [ | |
| "hardened.h", | |
| "hardened_asm.h", | |
| ], | |
| deps = [ | |
| ":macros", | |
| ":memory", | |
| ":stdasm", | |
| ], | |
| ) | |
| cc_test( | |
| name = "hardened_unittest", | |
| srcs = ["hardened_unittest.cc"], | |
| deps = [ | |
| ":hardened", | |
| "@googletest//:gtest_main", | |
| ], | |
| ) | |
| cc_library( | |
| name = "hardened_status", | |
| srcs = ["hardened_status.c"], | |
| hdrs = ["hardened_status.h"], | |
| deps = [ | |
| ":bitfield", | |
| ":hardened", | |
| ":macros", | |
| ":status", | |
| ], | |
| ) | |
| cc_test( | |
| name = "hardened_status_unittest", | |
| srcs = ["hardened_status_unittest.cc"], | |
| deps = [ | |
| ":hardened_status", | |
| "@googletest//:gtest_main", | |
| ], | |
| ) | |
| cc_library( | |
| name = "random_order", | |
| srcs = ["random_order.c"], | |
| hdrs = ["random_order.h"], | |
| deps = [":bitfield"], | |
| ) | |
| cc_library( | |
| name = "hardened_memory", | |
| srcs = ["hardened_memory.c"], | |
| hdrs = ["hardened_memory.h"], | |
| deps = [ | |
| ":hardened", | |
| ":macros", | |
| ":memory", | |
| ":random_order", | |
| ], | |
| ) | |
| cc_test( | |
| name = "hardened_memory_unittest", | |
| srcs = ["hardened_memory_unittest.cc"], | |
| deps = [ | |
| ":hardened_memory", | |
| ":random_order", | |
| "@googletest//:gtest_main", | |
| ], | |
| ) | |
| dual_cc_library( | |
| name = "csr", | |
| srcs = dual_inputs( | |
| host = ["//sw/device/silicon_creator/lib/base:mock_csr.cc"], | |
| ), | |
| hdrs = dual_inputs( | |
| host = [ | |
| "//sw/device/silicon_creator/lib/base:mock_csr.h", | |
| ], | |
| shared = [ | |
| "csr.h", | |
| "csr_registers.h", | |
| ], | |
| ), | |
| deps = dual_inputs( | |
| host = [ | |
| "global_mock", | |
| "@googletest//:gtest", | |
| ], | |
| shared = [ | |
| ":macros", | |
| ":stdasm", | |
| ], | |
| ), | |
| ) | |
| cc_test( | |
| name = "mock_csr_unittest", | |
| srcs = ["//sw/device/silicon_creator/lib/base:mock_csr_test.cc"], | |
| deps = [ | |
| ":csr", | |
| "@googletest//:gtest_main", | |
| ], | |
| ) | |
| cc_library( | |
| name = "multibits", | |
| hdrs = [ | |
| "multibits.h", | |
| "multibits_asm.h", | |
| ], | |
| ) | |
| dual_cc_library( | |
| name = "mmio", | |
| srcs = dual_inputs( | |
| host = ["mock_mmio.cc"], | |
| # NOTE: mmio.c is shared because it provides mmio_memcpy and friends. | |
| shared = ["mmio.c"], | |
| ), | |
| hdrs = dual_inputs( | |
| host = [ | |
| "mock_mmio.h", | |
| "mock_mmio_test_utils.h", | |
| ], | |
| shared = ["mmio.h"], | |
| ), | |
| deps = dual_inputs( | |
| host = [ | |
| "@googletest//:gtest", | |
| ], | |
| shared = [ | |
| ":bitfield", | |
| ":macros", | |
| ":memory", | |
| ], | |
| ), | |
| ) | |
| cc_test( | |
| name = "mmio_unittest", | |
| srcs = ["mock_mmio_test.cc"], | |
| deps = [ | |
| ":mmio", | |
| "@googletest//:gtest_main", | |
| ], | |
| ) | |
| dual_cc_library( | |
| name = "abs_mmio", | |
| srcs = dual_inputs( | |
| device = ["abs_mmio.c"], | |
| host = ["mock_abs_mmio.cc"], | |
| ), | |
| hdrs = dual_inputs( | |
| host = [ | |
| "mock_abs_mmio.h", | |
| ], | |
| shared = ["abs_mmio.h"], | |
| ), | |
| deps = dual_inputs( | |
| host = [ | |
| "global_mock", | |
| "@googletest//:gtest", | |
| ], | |
| shared = [ | |
| ":mmio", | |
| ":macros", | |
| ], | |
| ), | |
| ) | |
| cc_library( | |
| name = "status", | |
| srcs = ["status.c"], | |
| hdrs = ["status.h"], | |
| deps = [ | |
| ":bitfield", | |
| ":macros", | |
| "//sw/device/lib/base/internal:status", | |
| "//sw/device/lib/dif:base", | |
| ], | |
| ) | |
| cc_test( | |
| name = "status_unittest", | |
| srcs = ["status_unittest.cc"], | |
| deps = [ | |
| ":status", | |
| "@googletest//:gtest_main", | |
| ], | |
| ) |