# Copyright lowRISC contributors.
# Licensed under the Apache License, Version 2.0, see LICENSE for details.
# SPDX-License-Identifier: Apache-2.0

sw_otbn_sources += {
  'barrett384': files(
    'barrett384.s',
  ),
  'modexp': files(
    'modexp.s'
  ),
  'loop': files(
    'loop.s',
  ),
  'mul256': files(
    'mul256.s',
  ),
  'mul384': files(
    'mul384.s',
  ),
  'pseudo-ops': files(
    'pseudo-ops.s',
  ),
  'rsa_1024_dec_test': files(
    'rsa_1024_dec_test.s',
    'modexp.s',
  ),
  'rsa_1024_enc_test': files(
    'rsa_1024_enc_test.s',
    'modexp.s',
  ),
}
