# Copyright 2019 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

declare_args() {
  # Maximum number of CPUs the kernel will run on (others will be ignored).
  smp_max_cpus = 32

  if (current_cpu == "arm64") {
    smp_max_cpus = 16
  }

  # Virtual address where the kernel is mapped statically.  This is the
  # base of addresses that appear in the kernel symbol table.  At runtime
  # KASLR relocation processing adjusts addresses in memory from this base
  # to the actual runtime virtual address.
  if (current_cpu == "arm64") {
    kernel_base = "0xffffffff00000000"
  } else if (current_cpu == "x64") {
    kernel_base = "0xffffffff80100000"  # Has KERNEL_LOAD_OFFSET baked into it.
  }

  # Virtual address where the kernel address space begins.
  # Below this is the user address space.
  if (current_cpu == "arm64") {
    kernel_aspace_base = "0xffff000000000000"
  } else if (current_cpu == "x64") {
    kernel_aspace_base = "0xffffff8000000000UL"  # -512GB
  }

  # Enable kernel lock dependency tracking.
  enable_lock_dep = false

  # Enable fair scheduler by default on all architectures.
  enable_fair_scheduler = true

  # Enable detailed scheduler traces.
  detailed_scheduler_tracing = false

  # Enable userspace PCI and disable kernel PCI.
  enable_user_pci = false

  # Extra macro definitions for kernel code, e.g. "DISABLE_KASLR",
  # "ENABLE_KERNEL_LL_DEBUG".
  kernel_extra_defines = []
}

declare_args() {
  # Enable kernel lock dependency tracking tests.  By default this is
  # enabled when tracking is enabled, but can also be eanbled independently
  # to assess whether the tests build and *fail correctly* when lockdep is
  # disabled.
  enable_lock_dep_tests = enable_lock_dep
}
