# 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

  # Disable fair scheduler by default on all architectures.
  # ZX-3959: Disable by default until E2E tests stabilize.
  enable_fair_scheduler = false

  # 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
}
