x86_64.rs 777 B

123456789101112131415161718192021222324
  1. use super::CFilesArch;
  2. use cc::Build;
  3. use std::{collections::HashSet, path::PathBuf};
  4. pub(super) struct X86_64CFilesArch;
  5. impl CFilesArch for X86_64CFilesArch {
  6. fn setup_defines(&self, c: &mut cc::Build) {
  7. c.define("__x86_64__", None);
  8. }
  9. fn setup_files(&self, _c: &mut Build, files: &mut HashSet<PathBuf>) {
  10. // setup asm files
  11. files.insert(PathBuf::from("src/arch/x86_64/asm/head.S"));
  12. files.insert(PathBuf::from("src/arch/x86_64/asm/entry.S"));
  13. files.insert(PathBuf::from("src/arch/x86_64/asm/apu_boot.S"));
  14. files.insert(PathBuf::from("src/arch/x86_64/vm/vmx/vmenter.S"));
  15. }
  16. fn setup_global_flags(&self, c: &mut Build) {
  17. c.asm_flag("-m64");
  18. c.flag("-mcmodel=large").flag("-m64");
  19. }
  20. }