Copy disabled (too large)
Download .txt
Showing preview only (16,608K chars total). Download the full file to get everything.
Repository: Atmosphere-NX/Atmosphere
Branch: master
Commit: 61ac03e22d20
Files: 3719
Total size: 26.5 MB
Directory structure:
gitextract_x8an86a0/
├── .gitattributes
├── .gitignore
├── .gitmodules
├── LICENSE
├── Makefile
├── README.md
├── atmosphere.mk
├── config_templates/
│ ├── exosphere.ini
│ ├── hbl_html/
│ │ └── accessible-urls/
│ │ └── accessible-urls.txt
│ ├── override_config.ini
│ ├── stratosphere.ini
│ └── system_settings.ini
├── docs/
│ ├── building.md
│ ├── changelog.md
│ ├── components/
│ │ ├── detail/
│ │ │ └── exosphere_memory_layout.txt
│ │ ├── emummc.md
│ │ ├── exosphere.md
│ │ ├── fusee.md
│ │ ├── libraries.md
│ │ ├── mesosphere.md
│ │ ├── modules/
│ │ │ ├── ams_mitm.md
│ │ │ ├── boot.md
│ │ │ ├── boot2.md
│ │ │ ├── creport.md
│ │ │ ├── dmnt.md
│ │ │ ├── eclct.stub.md
│ │ │ ├── erpt.md
│ │ │ ├── fatal.md
│ │ │ ├── jpegdec.md
│ │ │ ├── loader.md
│ │ │ ├── ncm.md
│ │ │ ├── pgl.md
│ │ │ ├── pm.md
│ │ │ ├── ro.md
│ │ │ ├── sm.md
│ │ │ └── spl.md
│ │ ├── stratosphere.md
│ │ ├── thermosphere.md
│ │ └── troposphere.md
│ ├── faq.md
│ ├── features/
│ │ ├── cheats.md
│ │ ├── configurations.md
│ │ └── dns_mitm.md
│ ├── licensing_exemptions/
│ │ └── MIT_LICENSE
│ ├── main.md
│ └── roadmap.md
├── emummc/
│ ├── .gitignore
│ ├── .gitrepo
│ ├── LICENSE
│ ├── Makefile
│ ├── README.md
│ ├── build.sh
│ ├── emummc.json
│ ├── emummc.ld
│ ├── emummc.specs
│ ├── source/
│ │ ├── FS/
│ │ │ ├── FS.h
│ │ │ ├── FS_offsets.c
│ │ │ ├── FS_offsets.h
│ │ │ ├── FS_structs.h
│ │ │ ├── FS_versions.h
│ │ │ └── offsets/
│ │ │ ├── 100.h
│ │ │ ├── 1000.h
│ │ │ ├── 1000_exfat.h
│ │ │ ├── 1020.h
│ │ │ ├── 1020_exfat.h
│ │ │ ├── 1100.h
│ │ │ ├── 1100_exfat.h
│ │ │ ├── 1200.h
│ │ │ ├── 1200_exfat.h
│ │ │ ├── 1203.h
│ │ │ ├── 1203_exfat.h
│ │ │ ├── 1300.h
│ │ │ ├── 1300_exfat.h
│ │ │ ├── 1310.h
│ │ │ ├── 1310_exfat.h
│ │ │ ├── 1400.h
│ │ │ ├── 1400_exfat.h
│ │ │ ├── 1500.h
│ │ │ ├── 1500_exfat.h
│ │ │ ├── 1600.h
│ │ │ ├── 1600_exfat.h
│ │ │ ├── 1603.h
│ │ │ ├── 1603_exfat.h
│ │ │ ├── 1700.h
│ │ │ ├── 1700_exfat.h
│ │ │ ├── 1800.h
│ │ │ ├── 1800_exfat.h
│ │ │ ├── 1810.h
│ │ │ ├── 1810_exfat.h
│ │ │ ├── 1900.h
│ │ │ ├── 1900_exfat.h
│ │ │ ├── 200.h
│ │ │ ├── 2000.h
│ │ │ ├── 2000_exfat.h
│ │ │ ├── 200_exfat.h
│ │ │ ├── 2010.h
│ │ │ ├── 2010_exfat.h
│ │ │ ├── 210.h
│ │ │ ├── 2100.h
│ │ │ ├── 2100_exfat.h
│ │ │ ├── 210_exfat.h
│ │ │ ├── 2120.h
│ │ │ ├── 2120_exfat.h
│ │ │ ├── 300.h
│ │ │ ├── 300_exfat.h
│ │ │ ├── 301.h
│ │ │ ├── 301_exfat.h
│ │ │ ├── 400.h
│ │ │ ├── 400_exfat.h
│ │ │ ├── 410.h
│ │ │ ├── 410_exfat.h
│ │ │ ├── 500.h
│ │ │ ├── 500_exfat.h
│ │ │ ├── 510.h
│ │ │ ├── 510_exfat.h
│ │ │ ├── 600.h
│ │ │ ├── 600_exfat.h
│ │ │ ├── 700.h
│ │ │ ├── 700_exfat.h
│ │ │ ├── 800.h
│ │ │ ├── 800_exfat.h
│ │ │ ├── 810.h
│ │ │ ├── 810_exfat.h
│ │ │ ├── 900.h
│ │ │ ├── 900_exfat.h
│ │ │ ├── 910.h
│ │ │ └── 910_exfat.h
│ │ ├── emmc/
│ │ │ ├── mmc.h
│ │ │ ├── nx_emmc.c
│ │ │ ├── nx_emmc.h
│ │ │ ├── nx_sd.c
│ │ │ ├── nx_sd.h
│ │ │ ├── sd.h
│ │ │ ├── sdmmc.c
│ │ │ ├── sdmmc.h
│ │ │ ├── sdmmc_driver.c
│ │ │ ├── sdmmc_driver.h
│ │ │ └── sdmmc_t210.h
│ │ ├── emuMMC/
│ │ │ ├── emummc.c
│ │ │ ├── emummc.h
│ │ │ └── emummc_ctx.h
│ │ ├── libs/
│ │ │ └── fatfs/
│ │ │ ├── diskio.c
│ │ │ ├── diskio.h
│ │ │ ├── ff.c
│ │ │ ├── ff.h
│ │ │ ├── ffconf.h
│ │ │ ├── ffsystem.c
│ │ │ └── ffunicode.c
│ │ ├── main.c
│ │ ├── nx/
│ │ │ ├── cache.h
│ │ │ ├── cache.s
│ │ │ ├── counter.h
│ │ │ ├── dynamic.c
│ │ │ ├── smc.c
│ │ │ ├── smc.h
│ │ │ ├── start.s
│ │ │ ├── svc.h
│ │ │ └── svc.s
│ │ ├── power/
│ │ │ ├── max77620.h
│ │ │ ├── max7762x.c
│ │ │ └── max7762x.h
│ │ ├── soc/
│ │ │ ├── clock.c
│ │ │ ├── clock.h
│ │ │ ├── gpio.c
│ │ │ ├── gpio.h
│ │ │ ├── i2c.c
│ │ │ ├── i2c.h
│ │ │ ├── pinmux.c
│ │ │ ├── pinmux.h
│ │ │ ├── pmc.h
│ │ │ ├── pmc_lp0_t210.h
│ │ │ └── t210.h
│ │ └── utils/
│ │ ├── fatal.c
│ │ ├── fatal.h
│ │ ├── types.h
│ │ ├── util.c
│ │ └── util.h
│ └── tools/
│ ├── fs_ida_nintendo_folder_xref_formatter.au3
│ └── kip1converter.py
├── exosphere/
│ ├── Makefile
│ ├── exosphere.mk
│ ├── loader_stub/
│ │ ├── Makefile
│ │ ├── loader_stub.ld
│ │ ├── loader_stub.mk
│ │ ├── loader_stub.specs
│ │ └── source/
│ │ ├── secmon_loader_error.cpp
│ │ ├── secmon_loader_error.hpp
│ │ ├── secmon_loader_main.cpp
│ │ ├── secmon_loader_uncompress.cpp
│ │ ├── secmon_loader_uncompress.hpp
│ │ └── start.s
│ ├── mariko_fatal/
│ │ ├── Makefile
│ │ ├── mariko_fatal.ld
│ │ ├── mariko_fatal.mk
│ │ ├── mariko_fatal.specs
│ │ └── source/
│ │ ├── fatal_abort_impl.cpp
│ │ ├── fatal_crt0.s
│ │ ├── fatal_crt0_cpp.cpp
│ │ ├── fatal_device_page_table.cpp
│ │ ├── fatal_device_page_table.hpp
│ │ ├── fatal_display.cpp
│ │ ├── fatal_display.hpp
│ │ ├── fatal_display_config.inc
│ │ ├── fatal_font.inc
│ │ ├── fatal_main.cpp
│ │ ├── fatal_print.cpp
│ │ ├── fatal_print.hpp
│ │ ├── fatal_registers_di.hpp
│ │ ├── fatal_save_context.cpp
│ │ ├── fatal_save_context.hpp
│ │ ├── fatal_sdmmc.cpp
│ │ ├── fatal_sdmmc.hpp
│ │ ├── fatal_sdmmc_c.cpp
│ │ ├── fatal_sdmmc_c.h
│ │ ├── fatal_sound.cpp
│ │ ├── fatal_sound.hpp
│ │ ├── fatfs/
│ │ │ ├── 00history.txt
│ │ │ ├── 00readme.txt
│ │ │ ├── diskio.c
│ │ │ ├── diskio.h
│ │ │ ├── ff.c
│ │ │ ├── ff.h
│ │ │ ├── ffconf.h
│ │ │ ├── ffsystem.c
│ │ │ └── ffunicode.c
│ │ └── fs/
│ │ ├── fatal_fs_api.cpp
│ │ └── fatal_fs_api.hpp
│ ├── program/
│ │ ├── Makefile
│ │ ├── program.ld
│ │ ├── program.mk
│ │ ├── program.specs
│ │ ├── rebootstub/
│ │ │ ├── Makefile
│ │ │ ├── rebootstub.ld
│ │ │ ├── rebootstub.mk
│ │ │ ├── rebootstub.specs
│ │ │ └── source/
│ │ │ ├── rebootstub_exception_vectors.s
│ │ │ ├── rebootstub_main.s
│ │ │ └── rebootstub_power_off.cpp
│ │ ├── sc7fw/
│ │ │ ├── Makefile
│ │ │ ├── sc7fw.ld
│ │ │ ├── sc7fw.mk
│ │ │ ├── sc7fw.specs
│ │ │ └── source/
│ │ │ ├── sc7fw_dram.cpp
│ │ │ ├── sc7fw_dram.hpp
│ │ │ ├── sc7fw_exception_vectors.s
│ │ │ ├── sc7fw_main.cpp
│ │ │ ├── sc7fw_start.s
│ │ │ ├── sc7fw_util.hpp
│ │ │ └── sc7fw_util_asm.s
│ │ ├── source/
│ │ │ ├── boot/
│ │ │ │ ├── secmon_boot.hpp
│ │ │ │ ├── secmon_boot_cache.cpp
│ │ │ │ ├── secmon_boot_cache.hpp
│ │ │ │ ├── secmon_boot_config.cpp
│ │ │ │ ├── secmon_boot_functions.cpp
│ │ │ │ ├── secmon_boot_functions.hpp
│ │ │ │ ├── secmon_boot_key_data.s
│ │ │ │ ├── secmon_boot_rsa.cpp
│ │ │ │ ├── secmon_boot_setup.cpp
│ │ │ │ ├── secmon_crt0.s
│ │ │ │ ├── secmon_crt0_cpp.cpp
│ │ │ │ ├── secmon_main.cpp
│ │ │ │ ├── secmon_make_page_table.cpp
│ │ │ │ ├── secmon_package2.cpp
│ │ │ │ └── secmon_size_data.s
│ │ │ ├── secmon_cache.cpp
│ │ │ ├── secmon_cache.hpp
│ │ │ ├── secmon_cache.inc
│ │ │ ├── secmon_cache_impl.inc
│ │ │ ├── secmon_cpu_context.cpp
│ │ │ ├── secmon_cpu_context.hpp
│ │ │ ├── secmon_error.cpp
│ │ │ ├── secmon_error.hpp
│ │ │ ├── secmon_exception_handler.cpp
│ │ │ ├── secmon_exception_vectors.s
│ │ │ ├── secmon_interrupt_handler.cpp
│ │ │ ├── secmon_interrupt_handler.hpp
│ │ │ ├── secmon_key_storage.cpp
│ │ │ ├── secmon_key_storage.hpp
│ │ │ ├── secmon_map.cpp
│ │ │ ├── secmon_map.hpp
│ │ │ ├── secmon_mariko_fatal_error.cpp
│ │ │ ├── secmon_mariko_fatal_error.hpp
│ │ │ ├── secmon_misc.cpp
│ │ │ ├── secmon_misc.hpp
│ │ │ ├── secmon_page_mapper.cpp
│ │ │ ├── secmon_page_mapper.hpp
│ │ │ ├── secmon_setup.cpp
│ │ │ ├── secmon_setup.hpp
│ │ │ ├── secmon_setup_warm.cpp
│ │ │ ├── secmon_spinlock.hpp
│ │ │ ├── secmon_spinlock.s
│ │ │ ├── secmon_stack_warm.s
│ │ │ ├── secmon_start_virtual.s
│ │ │ ├── secmon_start_warm.s
│ │ │ ├── secmon_user_power_management.cpp
│ │ │ ├── secmon_user_power_management.hpp
│ │ │ └── smc/
│ │ │ ├── secmon_define_access_table.inc
│ │ │ ├── secmon_define_mc01_access_table.inc
│ │ │ ├── secmon_define_mc_access_table.inc
│ │ │ ├── secmon_define_pmc_access_table.inc
│ │ │ ├── secmon_mc01_access_table_data.inc
│ │ │ ├── secmon_mc_access_table_data.inc
│ │ │ ├── secmon_pmc_access_table_data.inc
│ │ │ ├── secmon_random_cache.cpp
│ │ │ ├── secmon_random_cache.hpp
│ │ │ ├── secmon_smc_aes.cpp
│ │ │ ├── secmon_smc_aes.hpp
│ │ │ ├── secmon_smc_carveout.cpp
│ │ │ ├── secmon_smc_carveout.hpp
│ │ │ ├── secmon_smc_common.hpp
│ │ │ ├── secmon_smc_cpu_asm.s
│ │ │ ├── secmon_smc_device_unique_data.cpp
│ │ │ ├── secmon_smc_device_unique_data.hpp
│ │ │ ├── secmon_smc_error.cpp
│ │ │ ├── secmon_smc_error.hpp
│ │ │ ├── secmon_smc_handler.cpp
│ │ │ ├── secmon_smc_handler.hpp
│ │ │ ├── secmon_smc_info.cpp
│ │ │ ├── secmon_smc_info.hpp
│ │ │ ├── secmon_smc_memory_access.cpp
│ │ │ ├── secmon_smc_memory_access.hpp
│ │ │ ├── secmon_smc_power_management.cpp
│ │ │ ├── secmon_smc_power_management.hpp
│ │ │ ├── secmon_smc_random.cpp
│ │ │ ├── secmon_smc_random.hpp
│ │ │ ├── secmon_smc_register_access.cpp
│ │ │ ├── secmon_smc_register_access.hpp
│ │ │ ├── secmon_smc_result.cpp
│ │ │ ├── secmon_smc_result.hpp
│ │ │ ├── secmon_smc_rsa.cpp
│ │ │ ├── secmon_smc_rsa.hpp
│ │ │ ├── secmon_smc_se_lock.cpp
│ │ │ └── secmon_smc_se_lock.hpp
│ │ └── split_program.py
│ ├── sdmmc_test/
│ │ ├── Makefile
│ │ ├── sdmmc_test.ld
│ │ ├── sdmmc_test.specs
│ │ └── source/
│ │ ├── sdmmc_test_main.cpp
│ │ └── sdmmc_test_start.s
│ └── warmboot/
│ ├── Makefile
│ ├── source/
│ │ ├── warmboot_bootrom_workaround.cpp
│ │ ├── warmboot_bootrom_workaround.hpp
│ │ ├── warmboot_clkrst.cpp
│ │ ├── warmboot_clkrst.hpp
│ │ ├── warmboot_cpu_cluster.cpp
│ │ ├── warmboot_cpu_cluster.hpp
│ │ ├── warmboot_dram.cpp
│ │ ├── warmboot_dram.hpp
│ │ ├── warmboot_exception_vectors.s
│ │ ├── warmboot_main.cpp
│ │ ├── warmboot_main.hpp
│ │ ├── warmboot_misc.cpp
│ │ ├── warmboot_misc.hpp
│ │ ├── warmboot_secure_monitor.cpp
│ │ ├── warmboot_secure_monitor.hpp
│ │ ├── warmboot_start.s
│ │ ├── warmboot_util.hpp
│ │ └── warmboot_util_asm.s
│ ├── warmboot.ld
│ ├── warmboot.mk
│ └── warmboot.specs
├── fusee/
│ ├── Makefile
│ ├── build_package3.py
│ ├── fusee.mk
│ ├── loader_stub/
│ │ ├── Makefile
│ │ ├── loader_stub.ld
│ │ ├── loader_stub.mk
│ │ ├── loader_stub.specs
│ │ └── source/
│ │ ├── fusee_loader_error.cpp
│ │ ├── fusee_loader_error.hpp
│ │ ├── fusee_loader_main.cpp
│ │ ├── fusee_loader_start.s
│ │ ├── fusee_loader_uncompress.cpp
│ │ └── fusee_loader_uncompress.hpp
│ └── program/
│ ├── Makefile
│ ├── lz4_compress.py
│ ├── program.ld
│ ├── program.mk
│ ├── program.specs
│ ├── program_ovl.ld
│ ├── source/
│ │ ├── fatfs/
│ │ │ ├── diskio.c
│ │ │ ├── diskio.h
│ │ │ ├── diskio_cpp.h
│ │ │ ├── ff.c
│ │ │ ├── ff.h
│ │ │ ├── ffconf.h
│ │ │ ├── ffsystem.c
│ │ │ ├── ffunicode.c
│ │ │ └── fusee_diskio.cpp
│ │ ├── fs/
│ │ │ ├── fusee_fs_api.cpp
│ │ │ ├── fusee_fs_api.hpp
│ │ │ ├── fusee_fs_file_storage.cpp
│ │ │ └── fusee_fs_storage.hpp
│ │ ├── fusee_cpu.cpp
│ │ ├── fusee_cpu.hpp
│ │ ├── fusee_crt0.cpp
│ │ ├── fusee_display.cpp
│ │ ├── fusee_display.hpp
│ │ ├── fusee_display_config.inc
│ │ ├── fusee_emummc.cpp
│ │ ├── fusee_emummc.hpp
│ │ ├── fusee_exception_handler.cpp
│ │ ├── fusee_exception_handler.hpp
│ │ ├── fusee_exception_handler_asm.s
│ │ ├── fusee_external_package.hpp
│ │ ├── fusee_fatal.cpp
│ │ ├── fusee_fatal.hpp
│ │ ├── fusee_font.inc
│ │ ├── fusee_ini.cpp
│ │ ├── fusee_ini.hpp
│ │ ├── fusee_key_derivation.cpp
│ │ ├── fusee_key_derivation.hpp
│ │ ├── fusee_main.cpp
│ │ ├── fusee_malloc.cpp
│ │ ├── fusee_malloc.hpp
│ │ ├── fusee_mmc.cpp
│ │ ├── fusee_mmc.hpp
│ │ ├── fusee_overlay_manager.cpp
│ │ ├── fusee_overlay_manager.hpp
│ │ ├── fusee_package2.cpp
│ │ ├── fusee_package2.hpp
│ │ ├── fusee_print.cpp
│ │ ├── fusee_print.hpp
│ │ ├── fusee_registers_di.hpp
│ │ ├── fusee_sd_card.cpp
│ │ ├── fusee_sd_card.hpp
│ │ ├── fusee_secmon_sync.cpp
│ │ ├── fusee_secmon_sync.hpp
│ │ ├── fusee_setup_horizon.cpp
│ │ ├── fusee_setup_horizon.hpp
│ │ ├── fusee_start.s
│ │ ├── fusee_stratosphere.cpp
│ │ ├── fusee_stratosphere.hpp
│ │ ├── fusee_uncompress.cpp
│ │ ├── fusee_uncompress.hpp
│ │ ├── mtc/
│ │ │ ├── fusee_mtc.cpp
│ │ │ ├── fusee_mtc.hpp
│ │ │ ├── fusee_mtc_erista.cpp
│ │ │ ├── fusee_mtc_mariko.cpp
│ │ │ ├── fusee_mtc_ram_training_pattern.inc
│ │ │ ├── fusee_mtc_tables_erista.inc
│ │ │ ├── fusee_mtc_tables_mariko.inc
│ │ │ ├── fusee_mtc_timing_table_common.hpp
│ │ │ ├── fusee_mtc_timing_table_erista.hpp
│ │ │ └── fusee_mtc_timing_table_mariko.hpp
│ │ ├── sdram/
│ │ │ ├── fusee_sdram.cpp
│ │ │ ├── fusee_sdram.hpp
│ │ │ ├── fusee_sdram_params.inc
│ │ │ ├── fusee_sdram_params_lp0_erista.inc
│ │ │ └── fusee_sdram_params_lp0_mariko.inc
│ │ └── sein/
│ │ ├── fusee_secure_initialize.cpp
│ │ └── fusee_secure_initialize.hpp
│ ├── update_mtc_tables.py
│ └── update_sdram_params.py
├── img/
│ └── atmosphere.sketch
├── libraries/
│ ├── .gitignore
│ ├── .gitmodules
│ ├── .gitrepo
│ ├── LICENSE
│ ├── README.md
│ ├── config/
│ │ ├── arch/
│ │ │ ├── arm/
│ │ │ │ ├── arch.mk
│ │ │ │ └── cpu/
│ │ │ │ └── arm7tdmi/
│ │ │ │ └── cpu.mk
│ │ │ ├── arm64/
│ │ │ │ ├── arch.mk
│ │ │ │ ├── base_rules
│ │ │ │ ├── base_tools
│ │ │ │ └── cpu/
│ │ │ │ ├── cortex_a57/
│ │ │ │ │ └── cpu.mk
│ │ │ │ └── generic_arm64/
│ │ │ │ └── cpu.mk
│ │ │ ├── armv4t/
│ │ │ │ └── arch.mk
│ │ │ ├── armv8a/
│ │ │ │ └── arch.mk
│ │ │ └── x64/
│ │ │ ├── arch.mk
│ │ │ ├── base_rules
│ │ │ ├── base_tools
│ │ │ └── cpu/
│ │ │ └── generic_x64/
│ │ │ └── cpu.mk
│ │ ├── board/
│ │ │ ├── generic/
│ │ │ │ ├── linux/
│ │ │ │ │ └── board.mk
│ │ │ │ ├── macos/
│ │ │ │ │ └── board.mk
│ │ │ │ └── windows/
│ │ │ │ └── board.mk
│ │ │ ├── nintendo/
│ │ │ │ ├── nx/
│ │ │ │ │ └── board.mk
│ │ │ │ └── nx_bpmp/
│ │ │ │ └── board.mk
│ │ │ └── qemu/
│ │ │ └── virt/
│ │ │ └── board.mk
│ │ ├── common.mk
│ │ ├── os/
│ │ │ ├── horizon/
│ │ │ │ └── os.mk
│ │ │ ├── linux/
│ │ │ │ └── os.mk
│ │ │ ├── macos/
│ │ │ │ └── os.mk
│ │ │ └── windows/
│ │ │ └── os.mk
│ │ └── templates/
│ │ ├── exosphere.mk
│ │ ├── mesosphere.mk
│ │ └── stratosphere.mk
│ ├── libexosphere/
│ │ ├── Makefile
│ │ ├── include/
│ │ │ ├── exosphere/
│ │ │ │ ├── actmon.hpp
│ │ │ │ ├── br/
│ │ │ │ │ ├── br_types.hpp
│ │ │ │ │ └── impl/
│ │ │ │ │ ├── br_common_types.hpp
│ │ │ │ │ ├── br_erista_types.hpp
│ │ │ │ │ └── br_mariko_types.hpp
│ │ │ │ ├── br.hpp
│ │ │ │ ├── charger.hpp
│ │ │ │ ├── clkrst.hpp
│ │ │ │ ├── common.hpp
│ │ │ │ ├── diag/
│ │ │ │ │ └── diag_detailed_assertion_impl.inc
│ │ │ │ ├── flow.hpp
│ │ │ │ ├── fuse.hpp
│ │ │ │ ├── gic.hpp
│ │ │ │ ├── hw/
│ │ │ │ │ ├── hw_arm.hpp
│ │ │ │ │ ├── hw_arm64.hpp
│ │ │ │ │ ├── hw_arm64_cache.hpp
│ │ │ │ │ └── hw_arm64_system_registers.hpp
│ │ │ │ ├── hw.hpp
│ │ │ │ ├── i2c.hpp
│ │ │ │ ├── log.hpp
│ │ │ │ ├── mmu/
│ │ │ │ │ ├── mmu_api.arch.arm.hpp
│ │ │ │ │ ├── mmu_api.arch.arm64.hpp
│ │ │ │ │ └── mmu_api.hpp
│ │ │ │ ├── mmu.hpp
│ │ │ │ ├── pinmux.hpp
│ │ │ │ ├── pkg1/
│ │ │ │ │ ├── pkg1_api.hpp
│ │ │ │ │ ├── pkg1_boot_config.hpp
│ │ │ │ │ ├── pkg1_bootloader_parameters.hpp
│ │ │ │ │ ├── pkg1_error_types.hpp
│ │ │ │ │ ├── pkg1_key_generation.hpp
│ │ │ │ │ └── pkg1_se_key_slots.hpp
│ │ │ │ ├── pkg1.hpp
│ │ │ │ ├── pkg2.hpp
│ │ │ │ ├── pmc.hpp
│ │ │ │ ├── pmic.hpp
│ │ │ │ ├── pmic_setup.hpp
│ │ │ │ ├── rtc.hpp
│ │ │ │ ├── se/
│ │ │ │ │ ├── se_aes.hpp
│ │ │ │ │ ├── se_common.hpp
│ │ │ │ │ ├── se_hash.hpp
│ │ │ │ │ ├── se_management.hpp
│ │ │ │ │ ├── se_oaep.hpp
│ │ │ │ │ ├── se_rng.hpp
│ │ │ │ │ ├── se_rsa.hpp
│ │ │ │ │ └── se_suspend.hpp
│ │ │ │ ├── se.hpp
│ │ │ │ ├── secmon/
│ │ │ │ │ ├── secmon_configuration_context.arch.arm64.hpp
│ │ │ │ │ ├── secmon_configuration_context.hpp
│ │ │ │ │ ├── secmon_emummc_context.hpp
│ │ │ │ │ ├── secmon_log.hpp
│ │ │ │ │ ├── secmon_memory_layout.hpp
│ │ │ │ │ ├── secmon_monitor_context.hpp
│ │ │ │ │ └── secmon_volatile_context.hpp
│ │ │ │ ├── secmon.hpp
│ │ │ │ ├── tsec.hpp
│ │ │ │ ├── uart.hpp
│ │ │ │ ├── util.hpp
│ │ │ │ └── wdt.hpp
│ │ │ └── exosphere.hpp
│ │ ├── libexosphere.mk
│ │ └── source/
│ │ ├── actmon/
│ │ │ ├── actmon_api.cpp
│ │ │ └── actmon_registers.hpp
│ │ ├── charger/
│ │ │ └── charger_api.cpp
│ │ ├── clkrst/
│ │ │ └── clkrst_api.cpp
│ │ ├── crypto/
│ │ │ └── crypto_aes_impl_security_engine.cpp
│ │ ├── flow/
│ │ │ └── flow_api.cpp
│ │ ├── fuse/
│ │ │ ├── fuse_api.cpp
│ │ │ └── fuse_registers.hpp
│ │ ├── gic/
│ │ │ └── gic_api.cpp
│ │ ├── hw/
│ │ │ ├── hw_cache.arch.arm.cpp
│ │ │ └── hw_cache.arch.arm64.cpp
│ │ ├── i2c/
│ │ │ └── i2c_api.cpp
│ │ ├── impl/
│ │ │ └── ams_impl_unexpected_default.cpp
│ │ ├── kfuse/
│ │ │ └── kfuse_registers.hpp
│ │ ├── libc/
│ │ │ ├── libc.c
│ │ │ └── libexo_cxx.cpp
│ │ ├── log/
│ │ │ └── log_api.cpp
│ │ ├── pinmux/
│ │ │ └── pinmux_api.cpp
│ │ ├── pkg1/
│ │ │ └── pkg1_api.cpp
│ │ ├── pmc/
│ │ │ ├── pmc_api.cpp
│ │ │ └── pmc_secure_scratch_test.inc
│ │ ├── pmic/
│ │ │ ├── max77620.h
│ │ │ ├── max7762x.h
│ │ │ └── pmic_api.cpp
│ │ ├── rtc/
│ │ │ ├── max77620-rtc.h
│ │ │ └── rtc_api.cpp
│ │ ├── se/
│ │ │ ├── se_aes.cpp
│ │ │ ├── se_execute.cpp
│ │ │ ├── se_execute.hpp
│ │ │ ├── se_hash.cpp
│ │ │ ├── se_management.cpp
│ │ │ ├── se_oaep.cpp
│ │ │ ├── se_registers.hpp
│ │ │ ├── se_rng.cpp
│ │ │ ├── se_rsa.cpp
│ │ │ └── se_suspend.cpp
│ │ ├── tsec/
│ │ │ ├── tsec_api.cpp
│ │ │ └── tsec_registers.hpp
│ │ ├── uart/
│ │ │ ├── uart_api.cpp
│ │ │ └── uart_registers.hpp
│ │ ├── util/
│ │ │ └── util_api.cpp
│ │ └── wdt/
│ │ └── wdt_api.cpp
│ ├── libmesosphere/
│ │ ├── Makefile
│ │ ├── README.md
│ │ ├── include/
│ │ │ ├── mesosphere/
│ │ │ │ ├── arch/
│ │ │ │ │ ├── arm/
│ │ │ │ │ │ ├── kern_generic_interrupt_controller.hpp
│ │ │ │ │ │ ├── kern_k_interrupt_controller.hpp
│ │ │ │ │ │ └── kern_k_memory_region_device_types.inc
│ │ │ │ │ └── arm64/
│ │ │ │ │ ├── init/
│ │ │ │ │ │ ├── kern_k_init_arguments.hpp
│ │ │ │ │ │ └── kern_k_init_page_table.hpp
│ │ │ │ │ ├── kern_assembly_macros.h
│ │ │ │ │ ├── kern_assembly_offsets.h
│ │ │ │ │ ├── kern_cpu.hpp
│ │ │ │ │ ├── kern_cpu_system_registers.hpp
│ │ │ │ │ ├── kern_k_debug.hpp
│ │ │ │ │ ├── kern_k_exception_context.hpp
│ │ │ │ │ ├── kern_k_hardware_timer.hpp
│ │ │ │ │ ├── kern_k_interrupt_controller.hpp
│ │ │ │ │ ├── kern_k_interrupt_manager.hpp
│ │ │ │ │ ├── kern_k_interrupt_name.hpp
│ │ │ │ │ ├── kern_k_memory_region_device_types.inc
│ │ │ │ │ ├── kern_k_page_table.hpp
│ │ │ │ │ ├── kern_k_page_table_entry.hpp
│ │ │ │ │ ├── kern_k_page_table_impl.hpp
│ │ │ │ │ ├── kern_k_process_page_table.hpp
│ │ │ │ │ ├── kern_k_slab_heap_impl.hpp
│ │ │ │ │ ├── kern_k_spin_lock.hpp
│ │ │ │ │ ├── kern_k_supervisor_page_table.hpp
│ │ │ │ │ ├── kern_k_thread_context.hpp
│ │ │ │ │ ├── kern_secure_monitor_base.hpp
│ │ │ │ │ └── kern_userspace_memory_access.hpp
│ │ │ │ ├── board/
│ │ │ │ │ ├── generic/
│ │ │ │ │ │ └── kern_k_device_page_table.hpp
│ │ │ │ │ ├── nintendo/
│ │ │ │ │ │ └── nx/
│ │ │ │ │ │ ├── kern_cpu_map.hpp
│ │ │ │ │ │ ├── kern_k_device_page_table.hpp
│ │ │ │ │ │ ├── kern_k_memory_layout.hpp
│ │ │ │ │ │ ├── kern_k_memory_region_device_types.inc
│ │ │ │ │ │ └── kern_k_system_control.hpp
│ │ │ │ │ └── qemu/
│ │ │ │ │ └── virt/
│ │ │ │ │ ├── kern_cpu_map.hpp
│ │ │ │ │ ├── kern_k_memory_layout.hpp
│ │ │ │ │ ├── kern_k_memory_region_device_types.inc
│ │ │ │ │ └── kern_k_system_control.hpp
│ │ │ │ ├── init/
│ │ │ │ │ ├── kern_init_arguments_select.hpp
│ │ │ │ │ ├── kern_init_elf.hpp
│ │ │ │ │ ├── kern_init_elf64.hpp
│ │ │ │ │ ├── kern_init_layout.hpp
│ │ │ │ │ ├── kern_init_page_table_select.hpp
│ │ │ │ │ └── kern_init_slab_setup.hpp
│ │ │ │ ├── kern_build_config.hpp
│ │ │ │ ├── kern_common.hpp
│ │ │ │ ├── kern_debug_log.hpp
│ │ │ │ ├── kern_initial_process.hpp
│ │ │ │ ├── kern_k_address_arbiter.hpp
│ │ │ │ ├── kern_k_address_space_info.hpp
│ │ │ │ ├── kern_k_affinity_mask.hpp
│ │ │ │ ├── kern_k_auto_object.hpp
│ │ │ │ ├── kern_k_auto_object_container.hpp
│ │ │ │ ├── kern_k_auto_object_impls.hpp
│ │ │ │ ├── kern_k_capabilities.hpp
│ │ │ │ ├── kern_k_class_token.hpp
│ │ │ │ ├── kern_k_client_port.hpp
│ │ │ │ ├── kern_k_client_session.hpp
│ │ │ │ ├── kern_k_code_memory.hpp
│ │ │ │ ├── kern_k_condition_variable.hpp
│ │ │ │ ├── kern_k_current_context.hpp
│ │ │ │ ├── kern_k_debug_base.hpp
│ │ │ │ ├── kern_k_device_address_space.hpp
│ │ │ │ ├── kern_k_dpc_manager.hpp
│ │ │ │ ├── kern_k_dump_object.hpp
│ │ │ │ ├── kern_k_dynamic_page_manager.hpp
│ │ │ │ ├── kern_k_dynamic_resource_manager.hpp
│ │ │ │ ├── kern_k_dynamic_slab_heap.hpp
│ │ │ │ ├── kern_k_event.hpp
│ │ │ │ ├── kern_k_event_info.hpp
│ │ │ │ ├── kern_k_exception_context.hpp
│ │ │ │ ├── kern_k_handle_table.hpp
│ │ │ │ ├── kern_k_hardware_timer_base.hpp
│ │ │ │ ├── kern_k_initial_process_reader.hpp
│ │ │ │ ├── kern_k_interrupt_event.hpp
│ │ │ │ ├── kern_k_interrupt_task.hpp
│ │ │ │ ├── kern_k_interrupt_task_manager.hpp
│ │ │ │ ├── kern_k_io_pool.hpp
│ │ │ │ ├── kern_k_io_region.hpp
│ │ │ │ ├── kern_k_light_client_session.hpp
│ │ │ │ ├── kern_k_light_condition_variable.hpp
│ │ │ │ ├── kern_k_light_lock.hpp
│ │ │ │ ├── kern_k_light_server_session.hpp
│ │ │ │ ├── kern_k_light_session.hpp
│ │ │ │ ├── kern_k_memory_block.hpp
│ │ │ │ ├── kern_k_memory_block_manager.hpp
│ │ │ │ ├── kern_k_memory_layout.hpp
│ │ │ │ ├── kern_k_memory_manager.hpp
│ │ │ │ ├── kern_k_memory_region.hpp
│ │ │ │ ├── kern_k_memory_region_type.hpp
│ │ │ │ ├── kern_k_object_name.hpp
│ │ │ │ ├── kern_k_page_bitmap.hpp
│ │ │ │ ├── kern_k_page_buffer.hpp
│ │ │ │ ├── kern_k_page_group.hpp
│ │ │ │ ├── kern_k_page_heap.hpp
│ │ │ │ ├── kern_k_page_table_base.hpp
│ │ │ │ ├── kern_k_page_table_manager.hpp
│ │ │ │ ├── kern_k_page_table_slab_heap.hpp
│ │ │ │ ├── kern_k_port.hpp
│ │ │ │ ├── kern_k_priority_queue.hpp
│ │ │ │ ├── kern_k_process.hpp
│ │ │ │ ├── kern_k_readable_event.hpp
│ │ │ │ ├── kern_k_resource_limit.hpp
│ │ │ │ ├── kern_k_scheduler.hpp
│ │ │ │ ├── kern_k_scheduler_impls.hpp
│ │ │ │ ├── kern_k_scheduler_lock.hpp
│ │ │ │ ├── kern_k_scoped_lock.hpp
│ │ │ │ ├── kern_k_scoped_resource_reservation.hpp
│ │ │ │ ├── kern_k_scoped_scheduler_lock_and_sleep.hpp
│ │ │ │ ├── kern_k_server_port.hpp
│ │ │ │ ├── kern_k_server_session.hpp
│ │ │ │ ├── kern_k_session.hpp
│ │ │ │ ├── kern_k_session_request.hpp
│ │ │ │ ├── kern_k_shared_memory.hpp
│ │ │ │ ├── kern_k_shared_memory_info.hpp
│ │ │ │ ├── kern_k_slab_heap.hpp
│ │ │ │ ├── kern_k_spin_lock.hpp
│ │ │ │ ├── kern_k_synchronization_object.hpp
│ │ │ │ ├── kern_k_system_control_base.hpp
│ │ │ │ ├── kern_k_system_resource.hpp
│ │ │ │ ├── kern_k_target_system.hpp
│ │ │ │ ├── kern_k_thread.hpp
│ │ │ │ ├── kern_k_thread_context.hpp
│ │ │ │ ├── kern_k_thread_local_page.hpp
│ │ │ │ ├── kern_k_thread_queue.hpp
│ │ │ │ ├── kern_k_timer_task.hpp
│ │ │ │ ├── kern_k_trace.hpp
│ │ │ │ ├── kern_k_transfer_memory.hpp
│ │ │ │ ├── kern_k_typed_address.hpp
│ │ │ │ ├── kern_k_unsafe_memory.hpp
│ │ │ │ ├── kern_k_unused_slab_memory.hpp
│ │ │ │ ├── kern_k_wait_object.hpp
│ │ │ │ ├── kern_k_worker_task.hpp
│ │ │ │ ├── kern_k_worker_task_manager.hpp
│ │ │ │ ├── kern_kernel.hpp
│ │ │ │ ├── kern_main.hpp
│ │ │ │ ├── kern_panic.hpp
│ │ │ │ ├── kern_select_assembly_macros.h
│ │ │ │ ├── kern_select_assembly_offsets.h
│ │ │ │ ├── kern_select_cpu.hpp
│ │ │ │ ├── kern_select_debug.hpp
│ │ │ │ ├── kern_select_device_page_table.hpp
│ │ │ │ ├── kern_select_hardware_timer.hpp
│ │ │ │ ├── kern_select_interrupt_controller.hpp
│ │ │ │ ├── kern_select_interrupt_manager.hpp
│ │ │ │ ├── kern_select_interrupt_name.hpp
│ │ │ │ ├── kern_select_page_table.hpp
│ │ │ │ ├── kern_select_page_table_impl.hpp
│ │ │ │ ├── kern_select_system_control.hpp
│ │ │ │ ├── kern_select_userspace_memory_access.hpp
│ │ │ │ ├── kern_slab_helpers.hpp
│ │ │ │ ├── kern_svc.hpp
│ │ │ │ └── svc/
│ │ │ │ ├── kern_svc_k_user_pointer.hpp
│ │ │ │ ├── kern_svc_prototypes.hpp
│ │ │ │ ├── kern_svc_results.hpp
│ │ │ │ └── kern_svc_tables.hpp
│ │ │ └── mesosphere.hpp
│ │ ├── libmesosphere.mk
│ │ └── source/
│ │ ├── arch/
│ │ │ ├── arm/
│ │ │ │ ├── kern_generic_interrupt_controller.inc
│ │ │ │ └── kern_k_interrupt_controller.board.generic.cpp
│ │ │ └── arm64/
│ │ │ ├── kern_cpu.cpp
│ │ │ ├── kern_cpu_asm.s
│ │ │ ├── kern_exception_handlers.cpp
│ │ │ ├── kern_k_debug.cpp
│ │ │ ├── kern_k_hardware_timer.cpp
│ │ │ ├── kern_k_interrupt_controller.board.generic.cpp
│ │ │ ├── kern_k_interrupt_manager.cpp
│ │ │ ├── kern_k_page_table.cpp
│ │ │ ├── kern_k_page_table_impl.cpp
│ │ │ ├── kern_k_supervisor_page_table.cpp
│ │ │ ├── kern_k_thread_context.cpp
│ │ │ ├── kern_panic_asm.s
│ │ │ ├── kern_userspace_memory_access_asm.s
│ │ │ └── svc/
│ │ │ ├── kern_svc_address_arbiter_asm.s
│ │ │ ├── kern_svc_call_secure_monitor_asm.s
│ │ │ ├── kern_svc_exception_asm.s
│ │ │ ├── kern_svc_handlers.cpp
│ │ │ ├── kern_svc_handlers_asm.s
│ │ │ ├── kern_svc_light_ipc_asm.s
│ │ │ └── kern_svc_tables.cpp
│ │ ├── board/
│ │ │ ├── nintendo/
│ │ │ │ └── nx/
│ │ │ │ ├── kern_atomics_registers.hpp
│ │ │ │ ├── kern_bpmp_api.hpp
│ │ │ │ ├── kern_ictlr_registers.hpp
│ │ │ │ ├── kern_k_device_page_table.cpp
│ │ │ │ ├── kern_k_io_pool.board.nintendo_nx.inc
│ │ │ │ ├── kern_k_sleep_manager.cpp
│ │ │ │ ├── kern_k_sleep_manager.hpp
│ │ │ │ ├── kern_k_sleep_manager_asm.s
│ │ │ │ ├── kern_k_system_control.cpp
│ │ │ │ ├── kern_lps_driver.cpp
│ │ │ │ ├── kern_lps_driver.hpp
│ │ │ │ ├── kern_secure_monitor.cpp
│ │ │ │ ├── kern_secure_monitor.hpp
│ │ │ │ └── kern_sema_registers.hpp
│ │ │ └── qemu/
│ │ │ └── virt/
│ │ │ ├── kern_k_system_control.cpp
│ │ │ ├── kern_secure_monitor.cpp
│ │ │ └── kern_secure_monitor.hpp
│ │ ├── init/
│ │ │ ├── kern_init_elf.cpp
│ │ │ └── kern_init_slab_setup.cpp
│ │ ├── kern_debug_log.cpp
│ │ ├── kern_debug_log_impl.arch.arm64.s
│ │ ├── kern_debug_log_impl.board.nintendo_nx.cpp
│ │ ├── kern_debug_log_impl.board.qemu_virt.cpp
│ │ ├── kern_debug_log_impl.hpp
│ │ ├── kern_initial_process.cpp
│ │ ├── kern_k_address_arbiter.cpp
│ │ ├── kern_k_address_space_info.cpp
│ │ ├── kern_k_capabilities.cpp
│ │ ├── kern_k_class_token.cpp
│ │ ├── kern_k_client_port.cpp
│ │ ├── kern_k_client_session.cpp
│ │ ├── kern_k_code_memory.cpp
│ │ ├── kern_k_condition_variable.cpp
│ │ ├── kern_k_debug_base.cpp
│ │ ├── kern_k_device_address_space.cpp
│ │ ├── kern_k_dpc_manager.cpp
│ │ ├── kern_k_dump_object.cpp
│ │ ├── kern_k_event.cpp
│ │ ├── kern_k_handle_table.cpp
│ │ ├── kern_k_initial_process_reader.cpp
│ │ ├── kern_k_interrupt_event.cpp
│ │ ├── kern_k_interrupt_task_manager.cpp
│ │ ├── kern_k_io_pool.cpp
│ │ ├── kern_k_io_pool.unsupported.inc
│ │ ├── kern_k_io_region.cpp
│ │ ├── kern_k_light_client_session.cpp
│ │ ├── kern_k_light_condition_variable.cpp
│ │ ├── kern_k_light_lock.cpp
│ │ ├── kern_k_light_server_session.cpp
│ │ ├── kern_k_light_session.cpp
│ │ ├── kern_k_memory_block_manager.cpp
│ │ ├── kern_k_memory_layout.board.nintendo_nx.cpp
│ │ ├── kern_k_memory_layout.board.qemu_virt.cpp
│ │ ├── kern_k_memory_layout.cpp
│ │ ├── kern_k_memory_manager.cpp
│ │ ├── kern_k_object_name.cpp
│ │ ├── kern_k_page_group.cpp
│ │ ├── kern_k_page_heap.cpp
│ │ ├── kern_k_page_table_base.cpp
│ │ ├── kern_k_port.cpp
│ │ ├── kern_k_process.cpp
│ │ ├── kern_k_readable_event.cpp
│ │ ├── kern_k_resource_limit.cpp
│ │ ├── kern_k_scheduler.cpp
│ │ ├── kern_k_scoped_disable_dispatch.cpp
│ │ ├── kern_k_server_port.cpp
│ │ ├── kern_k_server_session.cpp
│ │ ├── kern_k_session.cpp
│ │ ├── kern_k_session_request.cpp
│ │ ├── kern_k_shared_memory.cpp
│ │ ├── kern_k_synchronization_object.cpp
│ │ ├── kern_k_system_control_base.cpp
│ │ ├── kern_k_system_resource.cpp
│ │ ├── kern_k_thread.cpp
│ │ ├── kern_k_thread_local_page.cpp
│ │ ├── kern_k_thread_queue.cpp
│ │ ├── kern_k_trace.cpp
│ │ ├── kern_k_transfer_memory.cpp
│ │ ├── kern_k_unused_slab_memory.cpp
│ │ ├── kern_k_wait_object.cpp
│ │ ├── kern_k_worker_task_manager.cpp
│ │ ├── kern_kernel.cpp
│ │ ├── kern_main.cpp
│ │ ├── kern_panic.cpp
│ │ ├── libc/
│ │ │ └── kern_cxx.cpp
│ │ └── svc/
│ │ ├── kern_svc_activity.cpp
│ │ ├── kern_svc_address_arbiter.cpp
│ │ ├── kern_svc_address_translation.cpp
│ │ ├── kern_svc_cache.cpp
│ │ ├── kern_svc_code_memory.cpp
│ │ ├── kern_svc_condition_variable.cpp
│ │ ├── kern_svc_debug.cpp
│ │ ├── kern_svc_debug_string.cpp
│ │ ├── kern_svc_device_address_space.cpp
│ │ ├── kern_svc_event.cpp
│ │ ├── kern_svc_exception.cpp
│ │ ├── kern_svc_info.cpp
│ │ ├── kern_svc_insecure_memory.cpp
│ │ ├── kern_svc_interrupt_event.cpp
│ │ ├── kern_svc_io_pool.cpp
│ │ ├── kern_svc_ipc.cpp
│ │ ├── kern_svc_kernel_debug.cpp
│ │ ├── kern_svc_light_ipc.cpp
│ │ ├── kern_svc_lock.cpp
│ │ ├── kern_svc_memory.cpp
│ │ ├── kern_svc_physical_memory.cpp
│ │ ├── kern_svc_port.cpp
│ │ ├── kern_svc_power_management.cpp
│ │ ├── kern_svc_process.cpp
│ │ ├── kern_svc_process_memory.cpp
│ │ ├── kern_svc_processor.cpp
│ │ ├── kern_svc_query_memory.cpp
│ │ ├── kern_svc_register.cpp
│ │ ├── kern_svc_resource_limit.cpp
│ │ ├── kern_svc_secure_monitor_call.cpp
│ │ ├── kern_svc_session.cpp
│ │ ├── kern_svc_shared_memory.cpp
│ │ ├── kern_svc_synchronization.cpp
│ │ ├── kern_svc_thread.cpp
│ │ ├── kern_svc_thread_profiler.cpp
│ │ ├── kern_svc_tick.cpp
│ │ └── kern_svc_transfer_memory.cpp
│ ├── libstratosphere/
│ │ ├── Makefile
│ │ ├── README.md
│ │ ├── discard-ehframe.ld
│ │ ├── include/
│ │ │ ├── stratosphere/
│ │ │ │ ├── ams/
│ │ │ │ │ ├── ams_emummc_api.hpp
│ │ │ │ │ ├── ams_environment.hpp
│ │ │ │ │ ├── ams_exosphere_api.hpp
│ │ │ │ │ ├── ams_types.hpp
│ │ │ │ │ └── impl/
│ │ │ │ │ └── ams_system_thread_definitions.hpp
│ │ │ │ ├── ams.hpp
│ │ │ │ ├── boot2/
│ │ │ │ │ └── boot2_api.hpp
│ │ │ │ ├── boot2.hpp
│ │ │ │ ├── cal/
│ │ │ │ │ └── cal_battery_api.hpp
│ │ │ │ ├── cal.hpp
│ │ │ │ ├── capsrv/
│ │ │ │ │ ├── capsrv_screen_shot_control_api.hpp
│ │ │ │ │ ├── capsrv_screen_shot_decode_option.hpp
│ │ │ │ │ └── server/
│ │ │ │ │ ├── capsrv_server_config.hpp
│ │ │ │ │ └── capsrv_server_decoder_api.hpp
│ │ │ │ ├── capsrv.hpp
│ │ │ │ ├── cfg/
│ │ │ │ │ ├── cfg_api.hpp
│ │ │ │ │ ├── cfg_locale_types.hpp
│ │ │ │ │ └── cfg_types.hpp
│ │ │ │ ├── cfg.hpp
│ │ │ │ ├── clkrst/
│ │ │ │ │ ├── clkrst_api.hpp
│ │ │ │ │ ├── clkrst_session_api.hpp
│ │ │ │ │ └── clkrst_types.hpp
│ │ │ │ ├── clkrst.hpp
│ │ │ │ ├── cs/
│ │ │ │ │ ├── cs_audio_server.hpp
│ │ │ │ │ ├── cs_command_processor.hpp
│ │ │ │ │ ├── cs_hid_server.hpp
│ │ │ │ │ ├── cs_remote_video_server.hpp
│ │ │ │ │ └── cs_target_io_server.hpp
│ │ │ │ ├── cs.hpp
│ │ │ │ ├── dd/
│ │ │ │ │ ├── dd_device_address_space.hpp
│ │ │ │ │ ├── dd_device_address_space_api.hpp
│ │ │ │ │ ├── dd_device_address_space_common.hpp
│ │ │ │ │ ├── dd_device_address_space_types.hpp
│ │ │ │ │ ├── dd_io_mappings.hpp
│ │ │ │ │ ├── dd_process_handle.hpp
│ │ │ │ │ └── dd_types.hpp
│ │ │ │ ├── dd.hpp
│ │ │ │ ├── ddsf/
│ │ │ │ │ ├── ddsf_device_code_entry.hpp
│ │ │ │ │ ├── ddsf_device_code_entry_manager.hpp
│ │ │ │ │ ├── ddsf_event_handler_manager.hpp
│ │ │ │ │ ├── ddsf_i_castable.hpp
│ │ │ │ │ ├── ddsf_i_device.hpp
│ │ │ │ │ ├── ddsf_i_driver.hpp
│ │ │ │ │ ├── ddsf_i_event_handler.hpp
│ │ │ │ │ ├── ddsf_i_session.hpp
│ │ │ │ │ ├── ddsf_memory_api.hpp
│ │ │ │ │ ├── ddsf_types.hpp
│ │ │ │ │ └── impl/
│ │ │ │ │ ├── ddsf_for_each.hpp
│ │ │ │ │ └── ddsf_type_tag.hpp
│ │ │ │ ├── ddsf.hpp
│ │ │ │ ├── diag/
│ │ │ │ │ ├── diag_abort_observer.hpp
│ │ │ │ │ ├── diag_assertion_failure_handler.hpp
│ │ │ │ │ ├── diag_backtrace.hpp
│ │ │ │ │ ├── diag_log.hpp
│ │ │ │ │ ├── diag_log_observer.hpp
│ │ │ │ │ ├── diag_log_types.hpp
│ │ │ │ │ ├── diag_sdk_log.hpp
│ │ │ │ │ ├── diag_symbol.hpp
│ │ │ │ │ └── impl/
│ │ │ │ │ ├── diag_backtrace_impl.os.horizon.hpp
│ │ │ │ │ ├── diag_backtrace_impl.os.linux.hpp
│ │ │ │ │ ├── diag_backtrace_impl.os.macos.hpp
│ │ │ │ │ ├── diag_backtrace_impl.os.windows.hpp
│ │ │ │ │ ├── diag_impl_build_config.hpp
│ │ │ │ │ ├── diag_impl_log.hpp
│ │ │ │ │ ├── diag_impl_structured_log.hpp
│ │ │ │ │ ├── diag_impl_structured_sdk_log.hpp
│ │ │ │ │ └── diag_utf8_util.hpp
│ │ │ │ ├── diag.hpp
│ │ │ │ ├── dmnt/
│ │ │ │ │ └── dmnt_cheat_types.hpp
│ │ │ │ ├── dmnt.hpp
│ │ │ │ ├── erpt/
│ │ │ │ │ ├── erpt_ids.autogen.hpp
│ │ │ │ │ ├── erpt_multiple_category_context.hpp
│ │ │ │ │ ├── erpt_types.hpp
│ │ │ │ │ ├── sf/
│ │ │ │ │ │ ├── erpt_sf_i_attachment.hpp
│ │ │ │ │ │ ├── erpt_sf_i_context.hpp
│ │ │ │ │ │ ├── erpt_sf_i_manager.hpp
│ │ │ │ │ │ ├── erpt_sf_i_report.hpp
│ │ │ │ │ │ └── erpt_sf_i_session.hpp
│ │ │ │ │ └── srv/
│ │ │ │ │ ├── erpt_srv_api.hpp
│ │ │ │ │ └── erpt_srv_types.hpp
│ │ │ │ ├── erpt.hpp
│ │ │ │ ├── err/
│ │ │ │ │ ├── err_error_context.hpp
│ │ │ │ │ ├── err_system_api.hpp
│ │ │ │ │ └── err_types.hpp
│ │ │ │ ├── err.hpp
│ │ │ │ ├── fat/
│ │ │ │ │ └── fat_file_system.hpp
│ │ │ │ ├── fat.hpp
│ │ │ │ ├── fatal/
│ │ │ │ │ ├── fatal_types.hpp
│ │ │ │ │ └── impl/
│ │ │ │ │ ├── fatal_i_private_service.hpp
│ │ │ │ │ └── fatal_i_service.hpp
│ │ │ │ ├── fatal.hpp
│ │ │ │ ├── fs/
│ │ │ │ │ ├── common/
│ │ │ │ │ │ ├── fs_dbm_hierarchical_rom_file_table.hpp
│ │ │ │ │ │ ├── fs_dbm_rom_key_value_storage.hpp
│ │ │ │ │ │ ├── fs_dbm_rom_path_tool.hpp
│ │ │ │ │ │ ├── fs_dbm_rom_types.hpp
│ │ │ │ │ │ ├── fs_directory_path_parser.hpp
│ │ │ │ │ │ └── fs_file_storage.hpp
│ │ │ │ │ ├── fs_access_log.hpp
│ │ │ │ │ ├── fs_api.hpp
│ │ │ │ │ ├── fs_application.hpp
│ │ │ │ │ ├── fs_bis.hpp
│ │ │ │ │ ├── fs_code.hpp
│ │ │ │ │ ├── fs_code_verification_data.hpp
│ │ │ │ │ ├── fs_common.hpp
│ │ │ │ │ ├── fs_content.hpp
│ │ │ │ │ ├── fs_content_attributes.hpp
│ │ │ │ │ ├── fs_content_storage.hpp
│ │ │ │ │ ├── fs_content_storage_id.hpp
│ │ │ │ │ ├── fs_context.hpp
│ │ │ │ │ ├── fs_device_save_data.hpp
│ │ │ │ │ ├── fs_directory.hpp
│ │ │ │ │ ├── fs_error_info.hpp
│ │ │ │ │ ├── fs_file.hpp
│ │ │ │ │ ├── fs_filesystem.hpp
│ │ │ │ │ ├── fs_filesystem_for_debug.hpp
│ │ │ │ │ ├── fs_filesystem_utils.hpp
│ │ │ │ │ ├── fs_game_card.hpp
│ │ │ │ │ ├── fs_host.hpp
│ │ │ │ │ ├── fs_i_buffer_manager.hpp
│ │ │ │ │ ├── fs_i_event_notifier.hpp
│ │ │ │ │ ├── fs_image_directory.hpp
│ │ │ │ │ ├── fs_istorage.hpp
│ │ │ │ │ ├── fs_memory_management.hpp
│ │ │ │ │ ├── fs_memory_report_info.hpp
│ │ │ │ │ ├── fs_memory_storage.hpp
│ │ │ │ │ ├── fs_mmc.hpp
│ │ │ │ │ ├── fs_mount.hpp
│ │ │ │ │ ├── fs_operate_range.hpp
│ │ │ │ │ ├── fs_path.hpp
│ │ │ │ │ ├── fs_path_utility.hpp
│ │ │ │ │ ├── fs_priority.hpp
│ │ │ │ │ ├── fs_program_id.hpp
│ │ │ │ │ ├── fs_program_index_map_info.hpp
│ │ │ │ │ ├── fs_query_range.hpp
│ │ │ │ │ ├── fs_read_only_filesystem.hpp
│ │ │ │ │ ├── fs_remote_filesystem.hpp
│ │ │ │ │ ├── fs_remote_storage.hpp
│ │ │ │ │ ├── fs_result_config.hpp
│ │ │ │ │ ├── fs_rights_id.hpp
│ │ │ │ │ ├── fs_romfs_filesystem.hpp
│ │ │ │ │ ├── fs_save_data_management.hpp
│ │ │ │ │ ├── fs_save_data_transaction.hpp
│ │ │ │ │ ├── fs_save_data_types.hpp
│ │ │ │ │ ├── fs_sd_card.hpp
│ │ │ │ │ ├── fs_signed_system_partition.hpp
│ │ │ │ │ ├── fs_speed_emulation.hpp
│ │ │ │ │ ├── fs_storage_type.hpp
│ │ │ │ │ ├── fs_substorage.hpp
│ │ │ │ │ ├── fs_system_data.hpp
│ │ │ │ │ ├── fs_system_save_data.hpp
│ │ │ │ │ ├── fsa/
│ │ │ │ │ │ ├── fs_idirectory.hpp
│ │ │ │ │ │ ├── fs_ifile.hpp
│ │ │ │ │ │ ├── fs_ifilesystem.hpp
│ │ │ │ │ │ └── fs_registrar.hpp
│ │ │ │ │ └── impl/
│ │ │ │ │ ├── fs_access_log_impl.hpp
│ │ │ │ │ ├── fs_common_mount_name.hpp
│ │ │ │ │ ├── fs_data.hpp
│ │ │ │ │ ├── fs_filesystem_proxy_type.hpp
│ │ │ │ │ ├── fs_fs_inline_context_utils.hpp
│ │ │ │ │ ├── fs_hash_generator_factory_selector.hpp
│ │ │ │ │ ├── fs_newable.hpp
│ │ │ │ │ ├── fs_priority_utils.hpp
│ │ │ │ │ ├── fs_result_utils.hpp
│ │ │ │ │ ├── fs_service_name.hpp
│ │ │ │ │ └── fs_storage_service_object_adapter.hpp
│ │ │ │ ├── fs.hpp
│ │ │ │ ├── fssrv/
│ │ │ │ │ ├── fscreator/
│ │ │ │ │ │ ├── fssrv_local_file_system_creator.hpp
│ │ │ │ │ │ ├── fssrv_partition_file_system_creator.hpp
│ │ │ │ │ │ ├── fssrv_rom_file_system_creator.hpp
│ │ │ │ │ │ ├── fssrv_storage_on_nca_creator.hpp
│ │ │ │ │ │ └── fssrv_subdirectory_file_system_creator.hpp
│ │ │ │ │ ├── fssrv_file_system_proxy_api.hpp
│ │ │ │ │ ├── fssrv_file_system_proxy_impl.hpp
│ │ │ │ │ ├── fssrv_file_system_proxy_server_session_resource_manager.hpp
│ │ │ │ │ ├── fssrv_i_file_system_creator.hpp
│ │ │ │ │ ├── fssrv_interface_adapters.hpp
│ │ │ │ │ ├── fssrv_memory_resource_from_exp_heap.hpp
│ │ │ │ │ ├── fssrv_memory_resource_from_standard_allocator.hpp
│ │ │ │ │ ├── fssrv_nca_crypto_configuration.hpp
│ │ │ │ │ ├── fssrv_nca_file_system_service_impl.hpp
│ │ │ │ │ ├── fssrv_program_registry_impl.hpp
│ │ │ │ │ ├── fssrv_program_registry_service.hpp
│ │ │ │ │ ├── impl/
│ │ │ │ │ │ ├── fssrv_access_control.hpp
│ │ │ │ │ │ ├── fssrv_access_control_bits.hpp
│ │ │ │ │ │ ├── fssrv_external_key_manager.hpp
│ │ │ │ │ │ ├── fssrv_file_system_proxy_service_object.hpp
│ │ │ │ │ │ └── fssrv_impl_program_index_map_info_manager.hpp
│ │ │ │ │ ├── interface_adapters/
│ │ │ │ │ │ ├── fssrv_filesystem_interface_adapter.hpp
│ │ │ │ │ │ └── fssrv_storage_interface_adapter.hpp
│ │ │ │ │ └── sf/
│ │ │ │ │ ├── fssrv_sf_i_device_operator.hpp
│ │ │ │ │ ├── fssrv_sf_i_event_notifier.hpp
│ │ │ │ │ ├── fssrv_sf_i_file_system_proxy.hpp
│ │ │ │ │ ├── fssrv_sf_i_file_system_proxy_for_loader.hpp
│ │ │ │ │ ├── fssrv_sf_i_program_registry.hpp
│ │ │ │ │ ├── fssrv_sf_idirectory.hpp
│ │ │ │ │ ├── fssrv_sf_ifile.hpp
│ │ │ │ │ ├── fssrv_sf_ifilesystem.hpp
│ │ │ │ │ ├── fssrv_sf_istorage.hpp
│ │ │ │ │ └── fssrv_sf_path.hpp
│ │ │ │ ├── fssrv.hpp
│ │ │ │ ├── fssystem/
│ │ │ │ │ ├── buffers/
│ │ │ │ │ │ ├── fssystem_buffer_manager_utils.hpp
│ │ │ │ │ │ ├── fssystem_file_system_buddy_heap.hpp
│ │ │ │ │ │ └── fssystem_file_system_buffer_manager.hpp
│ │ │ │ │ ├── fssystem_aes_ctr_counter_extended_storage.hpp
│ │ │ │ │ ├── fssystem_aes_ctr_storage.hpp
│ │ │ │ │ ├── fssystem_aes_ctr_storage_external.hpp
│ │ │ │ │ ├── fssystem_aes_xts_storage.hpp
│ │ │ │ │ ├── fssystem_aes_xts_storage_external.hpp
│ │ │ │ │ ├── fssystem_alignment_matching_storage.hpp
│ │ │ │ │ ├── fssystem_alignment_matching_storage_impl.hpp
│ │ │ │ │ ├── fssystem_allocator_utility.hpp
│ │ │ │ │ ├── fssystem_asynchronous_access.hpp
│ │ │ │ │ ├── fssystem_bitmap_utils.hpp
│ │ │ │ │ ├── fssystem_block_cache_buffered_storage.hpp
│ │ │ │ │ ├── fssystem_bucket_tree.hpp
│ │ │ │ │ ├── fssystem_bucket_tree_template_impl.hpp
│ │ │ │ │ ├── fssystem_bucket_tree_utils.hpp
│ │ │ │ │ ├── fssystem_buffered_storage.hpp
│ │ │ │ │ ├── fssystem_compressed_storage.hpp
│ │ │ │ │ ├── fssystem_compression_common.hpp
│ │ │ │ │ ├── fssystem_compression_configuration.hpp
│ │ │ │ │ ├── fssystem_crypto_configuration.hpp
│ │ │ │ │ ├── fssystem_directory_redirection_filesystem.hpp
│ │ │ │ │ ├── fssystem_directory_savedata_filesystem.hpp
│ │ │ │ │ ├── fssystem_external_code.hpp
│ │ │ │ │ ├── fssystem_file_system_proxy_api.hpp
│ │ │ │ │ ├── fssystem_forwarding_file_system.hpp
│ │ │ │ │ ├── fssystem_hierarchical_integrity_verification_storage.hpp
│ │ │ │ │ ├── fssystem_i_hash_256_generator.hpp
│ │ │ │ │ ├── fssystem_indirect_storage.hpp
│ │ │ │ │ ├── fssystem_indirect_storage_template_impl.hpp
│ │ │ │ │ ├── fssystem_integrity_romfs_storage.hpp
│ │ │ │ │ ├── fssystem_integrity_verification_storage.hpp
│ │ │ │ │ ├── fssystem_local_file_system.hpp
│ │ │ │ │ ├── fssystem_nca_file_system_driver.hpp
│ │ │ │ │ ├── fssystem_nca_header.hpp
│ │ │ │ │ ├── fssystem_partition_file_system.hpp
│ │ │ │ │ ├── fssystem_partition_file_system_meta.hpp
│ │ │ │ │ ├── fssystem_pimpl.hpp
│ │ │ │ │ ├── fssystem_pooled_buffer.hpp
│ │ │ │ │ ├── fssystem_romfs_file_system.hpp
│ │ │ │ │ ├── fssystem_service_context.hpp
│ │ │ │ │ ├── fssystem_sha_hash_generator.hpp
│ │ │ │ │ ├── fssystem_sparse_storage.hpp
│ │ │ │ │ ├── fssystem_speed_emulation_configuration.hpp
│ │ │ │ │ ├── fssystem_subdirectory_filesystem.hpp
│ │ │ │ │ ├── fssystem_switch_storage.hpp
│ │ │ │ │ ├── fssystem_thread_priority_changer.hpp
│ │ │ │ │ ├── fssystem_utility.hpp
│ │ │ │ │ ├── impl/
│ │ │ │ │ │ └── fssystem_block_cache_manager.hpp
│ │ │ │ │ └── save/
│ │ │ │ │ ├── fssystem_i_save_file.hpp
│ │ │ │ │ └── fssystem_i_save_file_system_driver.hpp
│ │ │ │ ├── fssystem.hpp
│ │ │ │ ├── gc/
│ │ │ │ │ ├── gc.hpp
│ │ │ │ │ └── impl/
│ │ │ │ │ ├── gc_embedded_data_holder.hpp
│ │ │ │ │ ├── gc_gc_crypto.hpp
│ │ │ │ │ └── gc_types.hpp
│ │ │ │ ├── gc.hpp
│ │ │ │ ├── gpio/
│ │ │ │ │ ├── driver/
│ │ │ │ │ │ ├── board/
│ │ │ │ │ │ │ └── nintendo/
│ │ │ │ │ │ │ └── nx/
│ │ │ │ │ │ │ └── gpio_driver_api.hpp
│ │ │ │ │ │ ├── gpio_driver_client_api.hpp
│ │ │ │ │ │ ├── gpio_driver_service_api.hpp
│ │ │ │ │ │ ├── gpio_i_gpio_driver.hpp
│ │ │ │ │ │ ├── gpio_pad.hpp
│ │ │ │ │ │ ├── gpio_pad_accessor.hpp
│ │ │ │ │ │ ├── gpio_select_driver_api.hpp
│ │ │ │ │ │ └── impl/
│ │ │ │ │ │ ├── gpio_event_holder.hpp
│ │ │ │ │ │ └── gpio_pad_session_impl.hpp
│ │ │ │ │ ├── gpio_api.hpp
│ │ │ │ │ ├── gpio_pad_api.hpp
│ │ │ │ │ ├── gpio_pad_name.board.nintendo_nx.hpp
│ │ │ │ │ ├── gpio_pad_name.generic.hpp
│ │ │ │ │ ├── gpio_select_pad_name.hpp
│ │ │ │ │ ├── gpio_types.hpp
│ │ │ │ │ ├── server/
│ │ │ │ │ │ └── gpio_server_api.hpp
│ │ │ │ │ └── sf/
│ │ │ │ │ ├── gpio_sf_i_manager.hpp
│ │ │ │ │ └── gpio_sf_i_pad_session.hpp
│ │ │ │ ├── gpio.hpp
│ │ │ │ ├── hid/
│ │ │ │ │ └── hid_api.hpp
│ │ │ │ ├── hid.hpp
│ │ │ │ ├── hos/
│ │ │ │ │ ├── hos_stratosphere_api.hpp
│ │ │ │ │ ├── hos_types.hpp
│ │ │ │ │ └── hos_version_api.hpp
│ │ │ │ ├── hos.hpp
│ │ │ │ ├── htc/
│ │ │ │ │ ├── server/
│ │ │ │ │ │ ├── htc_htcmisc_channel_ids.hpp
│ │ │ │ │ │ └── htc_htcmisc_hipc_server.hpp
│ │ │ │ │ └── tenv/
│ │ │ │ │ ├── htc_tenv.hpp
│ │ │ │ │ ├── htc_tenv_i_service.hpp
│ │ │ │ │ ├── htc_tenv_i_service_manager.hpp
│ │ │ │ │ ├── htc_tenv_service_manager.hpp
│ │ │ │ │ └── htc_tenv_types.hpp
│ │ │ │ ├── htc.hpp
│ │ │ │ ├── htcfs/
│ │ │ │ │ └── htcfs_hipc_server.hpp
│ │ │ │ ├── htcfs.hpp
│ │ │ │ ├── htclow/
│ │ │ │ │ ├── htclow_channel_types.hpp
│ │ │ │ │ ├── htclow_manager_holder.hpp
│ │ │ │ │ ├── htclow_module_types.hpp
│ │ │ │ │ ├── htclow_types.hpp
│ │ │ │ │ └── impl/
│ │ │ │ │ └── htclow_internal_types.hpp
│ │ │ │ ├── htclow.hpp
│ │ │ │ ├── htcs/
│ │ │ │ │ ├── htcs_api.hpp
│ │ │ │ │ ├── htcs_socket.hpp
│ │ │ │ │ ├── htcs_types.hpp
│ │ │ │ │ ├── impl/
│ │ │ │ │ │ ├── htcs_channel_ids.hpp
│ │ │ │ │ │ └── htcs_manager_holder.hpp
│ │ │ │ │ └── server/
│ │ │ │ │ └── htcs_hipc_server.hpp
│ │ │ │ ├── htcs.hpp
│ │ │ │ ├── i2c/
│ │ │ │ │ ├── driver/
│ │ │ │ │ │ ├── board/
│ │ │ │ │ │ │ └── nintendo/
│ │ │ │ │ │ │ └── nx/
│ │ │ │ │ │ │ └── i2c_driver_api.hpp
│ │ │ │ │ │ ├── i2c_bus_api.hpp
│ │ │ │ │ │ ├── i2c_driver_client_api.hpp
│ │ │ │ │ │ ├── i2c_driver_service_api.hpp
│ │ │ │ │ │ ├── i2c_i2c_device_property.hpp
│ │ │ │ │ │ ├── i2c_i_i2c_driver.hpp
│ │ │ │ │ │ ├── i2c_select_driver_api.hpp
│ │ │ │ │ │ └── impl/
│ │ │ │ │ │ └── i2c_i2c_session_impl.hpp
│ │ │ │ │ ├── i2c_api.hpp
│ │ │ │ │ ├── i2c_bus_api.hpp
│ │ │ │ │ ├── i2c_command_list_formatter.hpp
│ │ │ │ │ ├── i2c_device_name.board.nintendo_nx.hpp
│ │ │ │ │ ├── i2c_device_name.generic.hpp
│ │ │ │ │ ├── i2c_register_accessor.hpp
│ │ │ │ │ ├── i2c_select_device_name.hpp
│ │ │ │ │ ├── i2c_types.hpp
│ │ │ │ │ ├── server/
│ │ │ │ │ │ └── i2c_server_api.hpp
│ │ │ │ │ └── sf/
│ │ │ │ │ ├── i2c_sf_i_manager.hpp
│ │ │ │ │ └── i2c_sf_i_session.hpp
│ │ │ │ ├── i2c.hpp
│ │ │ │ ├── init/
│ │ │ │ │ └── init_malloc.hpp
│ │ │ │ ├── init.hpp
│ │ │ │ ├── kvdb/
│ │ │ │ │ ├── kvdb_archive.hpp
│ │ │ │ │ ├── kvdb_auto_buffer.hpp
│ │ │ │ │ ├── kvdb_bounded_string.hpp
│ │ │ │ │ ├── kvdb_file_key_value_cache.hpp
│ │ │ │ │ ├── kvdb_file_key_value_store.hpp
│ │ │ │ │ └── kvdb_memory_key_value_store.hpp
│ │ │ │ ├── kvdb.hpp
│ │ │ │ ├── ldr/
│ │ │ │ │ ├── impl/
│ │ │ │ │ │ ├── ldr_debug_monitor_interface.hpp
│ │ │ │ │ │ ├── ldr_process_manager_interface.hpp
│ │ │ │ │ │ └── ldr_shell_interface.hpp
│ │ │ │ │ ├── ldr_pm_api.hpp
│ │ │ │ │ ├── ldr_shell_api.hpp
│ │ │ │ │ └── ldr_types.hpp
│ │ │ │ ├── ldr.hpp
│ │ │ │ ├── lm/
│ │ │ │ │ ├── lm_api.hpp
│ │ │ │ │ ├── lm_log_getter.hpp
│ │ │ │ │ └── lm_types.hpp
│ │ │ │ ├── lm.hpp
│ │ │ │ ├── lmem/
│ │ │ │ │ ├── impl/
│ │ │ │ │ │ └── lmem_impl_common.hpp
│ │ │ │ │ ├── lmem_common.hpp
│ │ │ │ │ ├── lmem_exp_heap.hpp
│ │ │ │ │ └── lmem_unit_heap.hpp
│ │ │ │ ├── lmem.hpp
│ │ │ │ ├── lr/
│ │ │ │ │ ├── lr_add_on_content_location_resolver.hpp
│ │ │ │ │ ├── lr_api.hpp
│ │ │ │ │ ├── lr_i_add_on_content_location_resolver.hpp
│ │ │ │ │ ├── lr_i_location_resolver.hpp
│ │ │ │ │ ├── lr_i_location_resolver_manager.hpp
│ │ │ │ │ ├── lr_i_registered_location_resolver.hpp
│ │ │ │ │ ├── lr_location_resolver.hpp
│ │ │ │ │ ├── lr_location_resolver_manager_impl.hpp
│ │ │ │ │ ├── lr_registered_location_resolver.hpp
│ │ │ │ │ └── lr_types.hpp
│ │ │ │ ├── lr.hpp
│ │ │ │ ├── mem/
│ │ │ │ │ ├── impl/
│ │ │ │ │ │ ├── heap/
│ │ │ │ │ │ │ ├── mem_impl_heap_cached_heap.hpp
│ │ │ │ │ │ │ └── mem_impl_heap_central_heap.hpp
│ │ │ │ │ │ ├── mem_impl_common.hpp
│ │ │ │ │ │ ├── mem_impl_declarations.hpp
│ │ │ │ │ │ └── mem_impl_heap.hpp
│ │ │ │ │ └── mem_standard_allocator.hpp
│ │ │ │ ├── mem.hpp
│ │ │ │ ├── mitm/
│ │ │ │ │ ├── impl/
│ │ │ │ │ │ └── mitm_pm_interface.hpp
│ │ │ │ │ └── mitm_pm_api.hpp
│ │ │ │ ├── mitm.hpp
│ │ │ │ ├── ncm/
│ │ │ │ │ ├── ncm_api.hpp
│ │ │ │ │ ├── ncm_auto_buffer.hpp
│ │ │ │ │ ├── ncm_bounded_map.hpp
│ │ │ │ │ ├── ncm_content_id.hpp
│ │ │ │ │ ├── ncm_content_id_utils.hpp
│ │ │ │ │ ├── ncm_content_info.hpp
│ │ │ │ │ ├── ncm_content_info_data.hpp
│ │ │ │ │ ├── ncm_content_info_utils.hpp
│ │ │ │ │ ├── ncm_content_management_utils.hpp
│ │ │ │ │ ├── ncm_content_manager_config.hpp
│ │ │ │ │ ├── ncm_content_manager_impl.hpp
│ │ │ │ │ ├── ncm_content_meta.hpp
│ │ │ │ │ ├── ncm_content_meta_database.hpp
│ │ │ │ │ ├── ncm_content_meta_extended_data.hpp
│ │ │ │ │ ├── ncm_content_meta_id.hpp
│ │ │ │ │ ├── ncm_content_meta_key.hpp
│ │ │ │ │ ├── ncm_content_meta_platform.hpp
│ │ │ │ │ ├── ncm_content_meta_type.hpp
│ │ │ │ │ ├── ncm_content_meta_utils.hpp
│ │ │ │ │ ├── ncm_content_storage.hpp
│ │ │ │ │ ├── ncm_content_type.hpp
│ │ │ │ │ ├── ncm_data_id.hpp
│ │ │ │ │ ├── ncm_firmware_variation.hpp
│ │ │ │ │ ├── ncm_i_content_manager.hpp
│ │ │ │ │ ├── ncm_i_content_meta_database.hpp
│ │ │ │ │ ├── ncm_i_content_storage.hpp
│ │ │ │ │ ├── ncm_ids.hpp
│ │ │ │ │ ├── ncm_install_progress.hpp
│ │ │ │ │ ├── ncm_install_task_base.hpp
│ │ │ │ │ ├── ncm_install_task_data.hpp
│ │ │ │ │ ├── ncm_install_task_occupied_size.hpp
│ │ │ │ │ ├── ncm_integrated_content_meta_database_impl.hpp
│ │ │ │ │ ├── ncm_integrated_content_storage_impl.hpp
│ │ │ │ │ ├── ncm_integrated_list.hpp
│ │ │ │ │ ├── ncm_make_path.hpp
│ │ │ │ │ ├── ncm_mapped_memory.hpp
│ │ │ │ │ ├── ncm_max_count.hpp
│ │ │ │ │ ├── ncm_memory_report.hpp
│ │ │ │ │ ├── ncm_package_install_task.hpp
│ │ │ │ │ ├── ncm_package_install_task_base.hpp
│ │ │ │ │ ├── ncm_package_system_downgrade_task.hpp
│ │ │ │ │ ├── ncm_package_system_update_task.hpp
│ │ │ │ │ ├── ncm_path.hpp
│ │ │ │ │ ├── ncm_path_string.hpp
│ │ │ │ │ ├── ncm_placeholder_id.hpp
│ │ │ │ │ ├── ncm_program_id.hpp
│ │ │ │ │ ├── ncm_program_location.hpp
│ │ │ │ │ ├── ncm_registered_host_content.hpp
│ │ │ │ │ ├── ncm_rights_id.hpp
│ │ │ │ │ ├── ncm_rights_id_cache.hpp
│ │ │ │ │ ├── ncm_storage_id.hpp
│ │ │ │ │ ├── ncm_storage_utils.hpp
│ │ │ │ │ ├── ncm_submission_package_install_task.hpp
│ │ │ │ │ ├── ncm_system_content_meta_id.hpp
│ │ │ │ │ └── ncm_system_update_task_apply_info.hpp
│ │ │ │ ├── ncm.hpp
│ │ │ │ ├── nim/
│ │ │ │ │ ├── nim_network_install_manager_api.hpp
│ │ │ │ │ ├── nim_system_update_task_id.hpp
│ │ │ │ │ └── nim_task_id_common.hpp
│ │ │ │ ├── nim.hpp
│ │ │ │ ├── ns/
│ │ │ │ │ └── impl/
│ │ │ │ │ └── ns_i_async.hpp
│ │ │ │ ├── ns.hpp
│ │ │ │ ├── nsd/
│ │ │ │ │ ├── impl/
│ │ │ │ │ │ └── device/
│ │ │ │ │ │ └── nsd_device.hpp
│ │ │ │ │ └── nsd_types.hpp
│ │ │ │ ├── nsd.hpp
│ │ │ │ ├── os/
│ │ │ │ │ ├── impl/
│ │ │ │ │ │ ├── os_internal_busy_mutex.hpp
│ │ │ │ │ │ ├── os_internal_busy_mutex_impl.os.generic.hpp
│ │ │ │ │ │ ├── os_internal_busy_mutex_impl.os.horizon.hpp
│ │ │ │ │ │ ├── os_internal_condition_variable.hpp
│ │ │ │ │ │ ├── os_internal_condition_variable_impl.os.horizon.hpp
│ │ │ │ │ │ ├── os_internal_condition_variable_impl.os.windows.hpp
│ │ │ │ │ │ ├── os_internal_condition_variable_impl.pthread.hpp
│ │ │ │ │ │ ├── os_internal_critical_section.hpp
│ │ │ │ │ │ ├── os_internal_critical_section_impl.os.horizon.hpp
│ │ │ │ │ │ ├── os_internal_critical_section_impl.os.windows.hpp
│ │ │ │ │ │ ├── os_internal_critical_section_impl.pthread.hpp
│ │ │ │ │ │ ├── os_internal_light_event.hpp
│ │ │ │ │ │ ├── os_internal_light_event_impl.os.generic.hpp
│ │ │ │ │ │ ├── os_internal_light_event_impl.os.horizon.hpp
│ │ │ │ │ │ ├── os_internal_rw_busy_mutex.hpp
│ │ │ │ │ │ ├── os_internal_rw_busy_mutex_impl.os.horizon.hpp
│ │ │ │ │ │ ├── os_internal_rw_busy_mutex_impl.os.linux.hpp
│ │ │ │ │ │ ├── os_internal_rw_busy_mutex_impl.os.macos.hpp
│ │ │ │ │ │ ├── os_internal_rw_busy_mutex_impl.os.windows.hpp
│ │ │ │ │ │ ├── os_internal_rw_busy_mutex_value.hpp
│ │ │ │ │ │ ├── os_memory_fence_api.os.generic.hpp
│ │ │ │ │ │ └── os_memory_fence_api.os.horizon.hpp
│ │ │ │ │ ├── os_argument.hpp
│ │ │ │ │ ├── os_barrier.hpp
│ │ │ │ │ ├── os_barrier_api.hpp
│ │ │ │ │ ├── os_barrier_types.hpp
│ │ │ │ │ ├── os_busy_mutex.hpp
│ │ │ │ │ ├── os_busy_mutex_api.hpp
│ │ │ │ │ ├── os_busy_mutex_types.hpp
│ │ │ │ │ ├── os_cache.hpp
│ │ │ │ │ ├── os_common_config.hpp
│ │ │ │ │ ├── os_common_types.hpp
│ │ │ │ │ ├── os_condition_variable.hpp
│ │ │ │ │ ├── os_condition_variable_api.hpp
│ │ │ │ │ ├── os_condition_variable_common.hpp
│ │ │ │ │ ├── os_condition_variable_types.hpp
│ │ │ │ │ ├── os_debug.hpp
│ │ │ │ │ ├── os_debug_api.hpp
│ │ │ │ │ ├── os_debug_types.hpp
│ │ │ │ │ ├── os_event.hpp
│ │ │ │ │ ├── os_event_api.hpp
│ │ │ │ │ ├── os_event_common.hpp
│ │ │ │ │ ├── os_event_types.hpp
│ │ │ │ │ ├── os_insecure_memory_api.hpp
│ │ │ │ │ ├── os_interrupt_event.hpp
│ │ │ │ │ ├── os_interrupt_event_api.hpp
│ │ │ │ │ ├── os_interrupt_event_common.hpp
│ │ │ │ │ ├── os_interrupt_event_types.hpp
│ │ │ │ │ ├── os_io_region.hpp
│ │ │ │ │ ├── os_io_region_api.hpp
│ │ │ │ │ ├── os_io_region_types.hpp
│ │ │ │ │ ├── os_light_event.hpp
│ │ │ │ │ ├── os_light_event_api.hpp
│ │ │ │ │ ├── os_light_event_types.hpp
│ │ │ │ │ ├── os_light_message_queue.hpp
│ │ │ │ │ ├── os_light_message_queue_api.hpp
│ │ │ │ │ ├── os_light_message_queue_types.hpp
│ │ │ │ │ ├── os_light_semaphore.hpp
│ │ │ │ │ ├── os_light_semaphore_api.hpp
│ │ │ │ │ ├── os_light_semaphore_types.hpp
│ │ │ │ │ ├── os_memory_attribute.hpp
│ │ │ │ │ ├── os_memory_common.hpp
│ │ │ │ │ ├── os_memory_fence.hpp
│ │ │ │ │ ├── os_memory_fence_api.hpp
│ │ │ │ │ ├── os_memory_heap.hpp
│ │ │ │ │ ├── os_memory_heap_api.hpp
│ │ │ │ │ ├── os_memory_heap_common.hpp
│ │ │ │ │ ├── os_memory_permission.hpp
│ │ │ │ │ ├── os_message_queue.hpp
│ │ │ │ │ ├── os_message_queue_api.hpp
│ │ │ │ │ ├── os_message_queue_common.hpp
│ │ │ │ │ ├── os_message_queue_types.hpp
│ │ │ │ │ ├── os_multiple_wait.hpp
│ │ │ │ │ ├── os_multiple_wait_api.hpp
│ │ │ │ │ ├── os_multiple_wait_types.hpp
│ │ │ │ │ ├── os_multiple_wait_utils.hpp
│ │ │ │ │ ├── os_mutex.hpp
│ │ │ │ │ ├── os_mutex_api.hpp
│ │ │ │ │ ├── os_mutex_common.hpp
│ │ │ │ │ ├── os_mutex_types.hpp
│ │ │ │ │ ├── os_native_handle.hpp
│ │ │ │ │ ├── os_native_handle_api.hpp
│ │ │ │ │ ├── os_native_handle_types.hpp
│ │ │ │ │ ├── os_process_code_memory_api.hpp
│ │ │ │ │ ├── os_process_handle_api.hpp
│ │ │ │ │ ├── os_process_memory_api.hpp
│ │ │ │ │ ├── os_random.hpp
│ │ │ │ │ ├── os_rw_busy_mutex.hpp
│ │ │ │ │ ├── os_rw_busy_mutex_api.hpp
│ │ │ │ │ ├── os_rw_busy_mutex_types.hpp
│ │ │ │ │ ├── os_rw_lock.hpp
│ │ │ │ │ ├── os_rw_lock_api.hpp
│ │ │ │ │ ├── os_rw_lock_common.hpp
│ │ │ │ │ ├── os_rw_lock_types.hpp
│ │ │ │ │ ├── os_sdk_condition_variable.hpp
│ │ │ │ │ ├── os_sdk_mutex.hpp
│ │ │ │ │ ├── os_sdk_recursive_mutex.hpp
│ │ │ │ │ ├── os_sdk_reply_and_receive.hpp
│ │ │ │ │ ├── os_sdk_thread_api.hpp
│ │ │ │ │ ├── os_sdk_thread_info.hpp
│ │ │ │ │ ├── os_sdk_thread_info_api.hpp
│ │ │ │ │ ├── os_sdk_thread_info_types.hpp
│ │ │ │ │ ├── os_sdk_thread_local_storage.hpp
│ │ │ │ │ ├── os_sdk_thread_local_storage_api.hpp
│ │ │ │ │ ├── os_sdk_thread_types.hpp
│ │ │ │ │ ├── os_semaphore.hpp
│ │ │ │ │ ├── os_semaphore_api.hpp
│ │ │ │ │ ├── os_semaphore_types.hpp
│ │ │ │ │ ├── os_shared_memory.hpp
│ │ │ │ │ ├── os_shared_memory_api.hpp
│ │ │ │ │ ├── os_shared_memory_types.hpp
│ │ │ │ │ ├── os_system_event.hpp
│ │ │ │ │ ├── os_system_event_api.hpp
│ │ │ │ │ ├── os_system_event_types.hpp
│ │ │ │ │ ├── os_thread.hpp
│ │ │ │ │ ├── os_thread_api.hpp
│ │ │ │ │ ├── os_thread_common.hpp
│ │ │ │ │ ├── os_thread_local_storage.hpp
│ │ │ │ │ ├── os_thread_local_storage_api.hpp
│ │ │ │ │ ├── os_thread_local_storage_common.hpp
│ │ │ │ │ ├── os_thread_types.hpp
│ │ │ │ │ ├── os_tick.hpp
│ │ │ │ │ ├── os_timer_event.hpp
│ │ │ │ │ ├── os_timer_event_api.hpp
│ │ │ │ │ ├── os_timer_event_types.hpp
│ │ │ │ │ ├── os_transfer_memory.hpp
│ │ │ │ │ ├── os_transfer_memory_api.hpp
│ │ │ │ │ ├── os_transfer_memory_types.hpp
│ │ │ │ │ ├── os_unsafe_memory_api.hpp
│ │ │ │ │ ├── os_virtual_address_memory.hpp
│ │ │ │ │ ├── os_virtual_address_memory_api.hpp
│ │ │ │ │ ├── os_virtual_address_memory_common.hpp
│ │ │ │ │ └── os_virtual_address_memory_types.hpp
│ │ │ │ ├── os.hpp
│ │ │ │ ├── osdbg/
│ │ │ │ │ ├── osdbg_thread.hpp
│ │ │ │ │ ├── osdbg_thread_api.hpp
│ │ │ │ │ ├── osdbg_thread_api_impl.hpp
│ │ │ │ │ └── osdbg_thread_types.hpp
│ │ │ │ ├── osdbg.hpp
│ │ │ │ ├── patcher/
│ │ │ │ │ └── patcher_api.hpp
│ │ │ │ ├── patcher.hpp
│ │ │ │ ├── pcv/
│ │ │ │ │ ├── pcv_api.hpp
│ │ │ │ │ └── pcv_types.hpp
│ │ │ │ ├── pcv.hpp
│ │ │ │ ├── pgl/
│ │ │ │ │ ├── pgl_event_observer.hpp
│ │ │ │ │ ├── pgl_shell_api.hpp
│ │ │ │ │ ├── pgl_types.hpp
│ │ │ │ │ ├── sf/
│ │ │ │ │ │ ├── pgl_sf_i_event_observer.hpp
│ │ │ │ │ │ └── pgl_sf_i_shell_interface.hpp
│ │ │ │ │ ├── srv/
│ │ │ │ │ │ ├── pgl_srv_api.hpp
│ │ │ │ │ │ └── pgl_srv_shell_interface.hpp
│ │ │ │ │ └── tipc/
│ │ │ │ │ ├── pgl_tipc_i_event_observer.hpp
│ │ │ │ │ └── pgl_tipc_i_shell_interface.hpp
│ │ │ │ ├── pgl.hpp
│ │ │ │ ├── pinmux/
│ │ │ │ │ ├── driver/
│ │ │ │ │ │ └── pinmux_driver_api.hpp
│ │ │ │ │ └── pinmux_api.hpp
│ │ │ │ ├── pinmux.hpp
│ │ │ │ ├── pm/
│ │ │ │ │ ├── impl/
│ │ │ │ │ │ ├── pm_boot_mode_interface.hpp
│ │ │ │ │ │ ├── pm_debug_monitor_interface.hpp
│ │ │ │ │ │ ├── pm_information_interface.hpp
│ │ │ │ │ │ └── pm_shell_interface.hpp
│ │ │ │ │ ├── pm_boot_mode_api.hpp
│ │ │ │ │ ├── pm_dmnt_api.hpp
│ │ │ │ │ ├── pm_info_api.hpp
│ │ │ │ │ ├── pm_shell_api.hpp
│ │ │ │ │ └── pm_types.hpp
│ │ │ │ ├── pm.hpp
│ │ │ │ ├── powctl/
│ │ │ │ │ ├── driver/
│ │ │ │ │ │ ├── impl/
│ │ │ │ │ │ │ ├── powctl_charge_arbiter.hpp
│ │ │ │ │ │ │ ├── powctl_charger_parameters.board.nintendo_nx.hpp
│ │ │ │ │ │ │ ├── powctl_charger_parameters.generic.hpp
│ │ │ │ │ │ │ └── powctl_select_charger_parameters.hpp
│ │ │ │ │ │ └── powctl_driver_api.hpp
│ │ │ │ │ ├── impl/
│ │ │ │ │ │ └── powctl_battery_charge_percentage.hpp
│ │ │ │ │ ├── powctl_battery_api.hpp
│ │ │ │ │ ├── powctl_charger_api.hpp
│ │ │ │ │ ├── powctl_devices.board.nintendo_nx.hpp
│ │ │ │ │ ├── powctl_select_devices.hpp
│ │ │ │ │ ├── powctl_session_api.hpp
│ │ │ │ │ └── powctl_types.hpp
│ │ │ │ ├── powctl.hpp
│ │ │ │ ├── psc/
│ │ │ │ │ ├── psc_pm_module.hpp
│ │ │ │ │ ├── psc_pm_module.os.generic.hpp
│ │ │ │ │ ├── psc_pm_module.os.horizon.hpp
│ │ │ │ │ ├── psc_pm_module_id.hpp
│ │ │ │ │ ├── psc_types.hpp
│ │ │ │ │ └── sf/
│ │ │ │ │ ├── psc_sf_i_pm_module.hpp
│ │ │ │ │ └── psc_sf_i_pm_service.hpp
│ │ │ │ ├── psc.hpp
│ │ │ │ ├── pwm/
│ │ │ │ │ ├── driver/
│ │ │ │ │ │ ├── board/
│ │ │ │ │ │ │ └── nintendo/
│ │ │ │ │ │ │ └── nx/
│ │ │ │ │ │ │ └── pwm_driver_api.hpp
│ │ │ │ │ │ ├── pwm_channel_api.hpp
│ │ │ │ │ │ ├── pwm_driver_client_api.hpp
│ │ │ │ │ │ ├── pwm_driver_service_api.hpp
│ │ │ │ │ │ ├── pwm_i_pwm_device.hpp
│ │ │ │ │ │ ├── pwm_i_pwm_driver.hpp
│ │ │ │ │ │ └── pwm_select_driver_api.hpp
│ │ │ │ │ ├── pwm_api.hpp
│ │ │ │ │ ├── pwm_channel_api.hpp
│ │ │ │ │ ├── pwm_channel_name.board.nintendo_nx.hpp
│ │ │ │ │ ├── pwm_channel_name.generic.hpp
│ │ │ │ │ ├── pwm_select_channel_name.hpp
│ │ │ │ │ ├── pwm_types.hpp
│ │ │ │ │ ├── server/
│ │ │ │ │ │ └── pwm_server_api.hpp
│ │ │ │ │ └── sf/
│ │ │ │ │ ├── pwm_sf_i_channel_session.hpp
│ │ │ │ │ └── pwm_sf_i_manager.hpp
│ │ │ │ ├── pwm.hpp
│ │ │ │ ├── rapidjson/
│ │ │ │ │ ├── allocators.h
│ │ │ │ │ ├── cursorstreamwrapper.h
│ │ │ │ │ ├── document.h
│ │ │ │ │ ├── encodedstream.h
│ │ │ │ │ ├── encodings.h
│ │ │ │ │ ├── error/
│ │ │ │ │ │ ├── en.h
│ │ │ │ │ │ └── error.h
│ │ │ │ │ ├── filereadstream.h
│ │ │ │ │ ├── filewritestream.h
│ │ │ │ │ ├── fwd.h
│ │ │ │ │ ├── internal/
│ │ │ │ │ │ ├── biginteger.h
│ │ │ │ │ │ ├── clzll.h
│ │ │ │ │ │ ├── diyfp.h
│ │ │ │ │ │ ├── dtoa.h
│ │ │ │ │ │ ├── ieee754.h
│ │ │ │ │ │ ├── itoa.h
│ │ │ │ │ │ ├── meta.h
│ │ │ │ │ │ ├── pow10.h
│ │ │ │ │ │ ├── regex.h
│ │ │ │ │ │ ├── stack.h
│ │ │ │ │ │ ├── strfunc.h
│ │ │ │ │ │ ├── strtod.h
│ │ │ │ │ │ └── swap.h
│ │ │ │ │ ├── istreamwrapper.h
│ │ │ │ │ ├── memorybuffer.h
│ │ │ │ │ ├── memorystream.h
│ │ │ │ │ ├── msinttypes/
│ │ │ │ │ │ ├── inttypes.h
│ │ │ │ │ │ └── stdint.h
│ │ │ │ │ ├── ostreamwrapper.h
│ │ │ │ │ ├── pointer.h
│ │ │ │ │ ├── prettywriter.h
│ │ │ │ │ ├── rapidjson.h
│ │ │ │ │ ├── reader.h
│ │ │ │ │ ├── schema.h
│ │ │ │ │ ├── stream.h
│ │ │ │ │ ├── stringbuffer.h
│ │ │ │ │ └── writer.h
│ │ │ │ ├── rapidjson.hpp
│ │ │ │ ├── regulator/
│ │ │ │ │ ├── regulator_api.hpp
│ │ │ │ │ ├── regulator_session_api.hpp
│ │ │ │ │ └── regulator_types.hpp
│ │ │ │ ├── regulator.hpp
│ │ │ │ ├── ro/
│ │ │ │ │ ├── impl/
│ │ │ │ │ │ ├── ro_debug_monitor_interface.hpp
│ │ │ │ │ │ ├── ro_ro_exception_info.hpp
│ │ │ │ │ │ └── ro_ro_interface.hpp
│ │ │ │ │ └── ro_types.hpp
│ │ │ │ ├── ro.hpp
│ │ │ │ ├── rocrt/
│ │ │ │ │ └── rocrt.hpp
│ │ │ │ ├── scs/
│ │ │ │ │ ├── scs_command_processor.hpp
│ │ │ │ │ ├── scs_server_manager.hpp
│ │ │ │ │ ├── scs_shell.hpp
│ │ │ │ │ ├── scs_shell_server.hpp
│ │ │ │ │ └── scs_tenv.hpp
│ │ │ │ ├── scs.hpp
│ │ │ │ ├── settings/
│ │ │ │ │ ├── factory/
│ │ │ │ │ │ ├── settings_configuration_id.hpp
│ │ │ │ │ │ ├── settings_device_certificate.hpp
│ │ │ │ │ │ └── settings_serial_number.hpp
│ │ │ │ │ ├── settings_fwdbg_api.hpp
│ │ │ │ │ ├── settings_fwdbg_types.hpp
│ │ │ │ │ ├── settings_types.hpp
│ │ │ │ │ └── system/
│ │ │ │ │ ├── settings_error_report.hpp
│ │ │ │ │ ├── settings_firmware_version.hpp
│ │ │ │ │ ├── settings_platform_region.hpp
│ │ │ │ │ ├── settings_product_model.hpp
│ │ │ │ │ ├── settings_region.hpp
│ │ │ │ │ └── settings_serial_number.hpp
│ │ │ │ ├── settings.hpp
│ │ │ │ ├── sf/
│ │ │ │ │ ├── cmif/
│ │ │ │ │ │ ├── sf_cmif_domain_api.hpp
│ │ │ │ │ │ ├── sf_cmif_domain_manager.hpp
│ │ │ │ │ │ ├── sf_cmif_domain_service_object.hpp
│ │ │ │ │ │ ├── sf_cmif_inline_context.hpp
│ │ │ │ │ │ ├── sf_cmif_pointer_and_size.hpp
│ │ │ │ │ │ ├── sf_cmif_server_message_processor.hpp
│ │ │ │ │ │ ├── sf_cmif_service_dispatch.hpp
│ │ │ │ │ │ └── sf_cmif_service_object_holder.hpp
│ │ │ │ │ ├── hipc/
│ │ │ │ │ │ ├── sf_hipc_api.hpp
│ │ │ │ │ │ ├── sf_hipc_server_domain_session_manager.hpp
│ │ │ │ │ │ ├── sf_hipc_server_manager.hpp
│ │ │ │ │ │ └── sf_hipc_server_session_manager.hpp
│ │ │ │ │ ├── impl/
│ │ │ │ │ │ ├── sf_impl_autogen_impl_macros.hpp
│ │ │ │ │ │ ├── sf_impl_autogen_interface_macros.hpp
│ │ │ │ │ │ ├── sf_impl_command_serialization.hpp
│ │ │ │ │ │ ├── sf_impl_template_base.hpp
│ │ │ │ │ │ └── sf_service_object_impl.hpp
│ │ │ │ │ ├── sf_allocation_policies.hpp
│ │ │ │ │ ├── sf_buffer_tags.hpp
│ │ │ │ │ ├── sf_buffers.hpp
│ │ │ │ │ ├── sf_common.hpp
│ │ │ │ │ ├── sf_default_allocation_policy.hpp
│ │ │ │ │ ├── sf_exp_heap_allocator.hpp
│ │ │ │ │ ├── sf_fs_inline_context.hpp
│ │ │ │ │ ├── sf_lmem_utility.hpp
│ │ │ │ │ ├── sf_mem_utility.hpp
│ │ │ │ │ ├── sf_memory_resource.hpp
│ │ │ │ │ ├── sf_mitm_config.hpp
│ │ │ │ │ ├── sf_mitm_dispatch.h
│ │ │ │ │ ├── sf_native_handle.hpp
│ │ │ │ │ ├── sf_object_factory.hpp
│ │ │ │ │ ├── sf_object_impl_factory.hpp
│ │ │ │ │ ├── sf_out.hpp
│ │ │ │ │ ├── sf_service_object.hpp
│ │ │ │ │ ├── sf_shared_object.hpp
│ │ │ │ │ ├── sf_standard_allocation_policy.hpp
│ │ │ │ │ ├── sf_std_allocation_policy.hpp
│ │ │ │ │ └── sf_types.hpp
│ │ │ │ ├── sf.hpp
│ │ │ │ ├── sm/
│ │ │ │ │ ├── impl/
│ │ │ │ │ │ ├── sm_manager_interface.hpp
│ │ │ │ │ │ └── sm_user_interface.hpp
│ │ │ │ │ ├── sm_api.hpp
│ │ │ │ │ ├── sm_manager_api.hpp
│ │ │ │ │ ├── sm_mitm_api.hpp
│ │ │ │ │ └── sm_types.hpp
│ │ │ │ ├── sm.hpp
│ │ │ │ ├── socket/
│ │ │ │ │ ├── impl/
│ │ │ │ │ │ └── socket_platform_types_translation.hpp
│ │ │ │ │ ├── socket_api.hpp
│ │ │ │ │ ├── socket_config.hpp
│ │ │ │ │ ├── socket_constants.hpp
│ │ │ │ │ ├── socket_errno.hpp
│ │ │ │ │ ├── socket_options.hpp
│ │ │ │ │ ├── socket_system_config.hpp
│ │ │ │ │ └── socket_types.hpp
│ │ │ │ ├── socket.hpp
│ │ │ │ ├── spl/
│ │ │ │ │ ├── impl/
│ │ │ │ │ │ ├── spl_api_impl.hpp
│ │ │ │ │ │ ├── spl_crypto_interface.hpp
│ │ │ │ │ │ ├── spl_deprecated_general_interface.hpp
│ │ │ │ │ │ ├── spl_device_unique_data_interface.hpp
│ │ │ │ │ │ ├── spl_es_interface.hpp
│ │ │ │ │ │ ├── spl_fs_interface.hpp
│ │ │ │ │ │ ├── spl_general_interface.hpp
│ │ │ │ │ │ ├── spl_manu_interface.hpp
│ │ │ │ │ │ ├── spl_random_interface.hpp
│ │ │ │ │ │ └── spl_ssl_interface.hpp
│ │ │ │ │ ├── smc/
│ │ │ │ │ │ └── spl_secure_monitor_api.hpp
│ │ │ │ │ ├── spl_api.hpp
│ │ │ │ │ └── spl_types.hpp
│ │ │ │ ├── spl.hpp
│ │ │ │ ├── sprofile/
│ │ │ │ │ ├── sprofile_types.hpp
│ │ │ │ │ └── srv/
│ │ │ │ │ └── sprofile_srv_api.hpp
│ │ │ │ ├── sprofile.hpp
│ │ │ │ ├── svc/
│ │ │ │ │ └── svc_stratosphere_shims.hpp
│ │ │ │ ├── time/
│ │ │ │ │ ├── impl/
│ │ │ │ │ │ └── util/
│ │ │ │ │ │ └── time_impl_util_api.hpp
│ │ │ │ │ ├── time_api.hpp
│ │ │ │ │ ├── time_calendar_time.hpp
│ │ │ │ │ ├── time_common.hpp
│ │ │ │ │ ├── time_posix_time.hpp
│ │ │ │ │ ├── time_standard_network_system_clock.hpp
│ │ │ │ │ ├── time_standard_steady_clock.hpp
│ │ │ │ │ ├── time_standard_user_system_clock.hpp
│ │ │ │ │ ├── time_steady_clock_time_point.hpp
│ │ │ │ │ ├── time_system_clock_common.hpp
│ │ │ │ │ └── time_timezone_api.hpp
│ │ │ │ ├── time.hpp
│ │ │ │ ├── tipc/
│ │ │ │ │ ├── impl/
│ │ │ │ │ │ ├── tipc_autogen_interface_macros.hpp
│ │ │ │ │ │ ├── tipc_impl_command_serialization.hpp
│ │ │ │ │ │ ├── tipc_impl_message_api.hpp
│ │ │ │ │ │ ├── tipc_impl_message_api.os.horizon.hpp
│ │ │ │ │ │ ├── tipc_impl_message_api.os.linux.hpp
│ │ │ │ │ │ ├── tipc_impl_message_api.os.macos.hpp
│ │ │ │ │ │ ├── tipc_impl_message_api.os.windows.hpp
│ │ │ │ │ │ └── tipc_impl_template_base.hpp
│ │ │ │ │ ├── tipc_allocators.hpp
│ │ │ │ │ ├── tipc_buffers.hpp
│ │ │ │ │ ├── tipc_common.hpp
│ │ │ │ │ ├── tipc_deferral_manager.hpp
│ │ │ │ │ ├── tipc_handles.hpp
│ │ │ │ │ ├── tipc_message_types.hpp
│ │ │ │ │ ├── tipc_object_holder.hpp
│ │ │ │ │ ├── tipc_object_manager.hpp
│ │ │ │ │ ├── tipc_out.hpp
│ │ │ │ │ ├── tipc_pointer_and_size.hpp
│ │ │ │ │ ├── tipc_server_manager.hpp
│ │ │ │ │ ├── tipc_service_object.hpp
│ │ │ │ │ └── tipc_service_object_base.hpp
│ │ │ │ ├── tipc.hpp
│ │ │ │ ├── tma/
│ │ │ │ │ ├── tma_i_directory_accessor.hpp
│ │ │ │ │ ├── tma_i_file_accessor.hpp
│ │ │ │ │ ├── tma_i_file_manager.hpp
│ │ │ │ │ ├── tma_i_htc_manager.hpp
│ │ │ │ │ ├── tma_i_htcs_manager.hpp
│ │ │ │ │ ├── tma_i_socket.hpp
│ │ │ │ │ └── tma_path.hpp
│ │ │ │ ├── tma.hpp
│ │ │ │ ├── updater/
│ │ │ │ │ ├── updater_api.hpp
│ │ │ │ │ └── updater_types.hpp
│ │ │ │ ├── updater.hpp
│ │ │ │ ├── usb/
│ │ │ │ │ ├── ds/
│ │ │ │ │ │ ├── usb_i_ds_endpoint.hpp
│ │ │ │ │ │ ├── usb_i_ds_interface.hpp
│ │ │ │ │ │ └── usb_i_ds_service.hpp
│ │ │ │ │ ├── usb_device.hpp
│ │ │ │ │ ├── usb_device_types.hpp
│ │ │ │ │ ├── usb_limits.hpp
│ │ │ │ │ └── usb_types.hpp
│ │ │ │ ├── usb.hpp
│ │ │ │ ├── util/
│ │ │ │ │ ├── util_compression.hpp
│ │ │ │ │ ├── util_ini.hpp
│ │ │ │ │ ├── util_lock_free_atomic_type.hpp
│ │ │ │ │ ├── util_singleton_traits.hpp
│ │ │ │ │ └── util_uuid_api.hpp
│ │ │ │ ├── util.hpp
│ │ │ │ ├── vi/
│ │ │ │ │ └── vi_layer_stack.hpp
│ │ │ │ ├── vi.hpp
│ │ │ │ ├── wec/
│ │ │ │ │ ├── wec_api.hpp
│ │ │ │ │ ├── wec_types.hpp
│ │ │ │ │ ├── wec_wake_event.board.nintendo_nx.hpp
│ │ │ │ │ └── wec_wake_event.generic.hpp
│ │ │ │ ├── wec.hpp
│ │ │ │ └── windows.hpp
│ │ │ └── stratosphere.hpp
│ │ ├── libstratosphere.mk
│ │ ├── source/
│ │ │ ├── ams/
│ │ │ │ ├── ams_bpc.os.horizon.c
│ │ │ │ ├── ams_bpc.os.horizon.h
│ │ │ │ ├── ams_emummc_api.cpp
│ │ │ │ ├── ams_environment.os.horizon.cpp
│ │ │ │ ├── ams_environment_weak.os.horizon.cpp
│ │ │ │ ├── ams_environment_weak.os.linux.cpp
│ │ │ │ ├── ams_environment_weak.os.macos.cpp
│ │ │ │ ├── ams_environment_weak.os.windows.cpp
│ │ │ │ └── ams_exosphere_api.cpp
│ │ │ ├── boot2/
│ │ │ │ └── boot2_api.board.nintendo_nx.cpp
│ │ │ ├── cal/
│ │ │ │ ├── cal_battery_api.cpp
│ │ │ │ ├── cal_crc_utils.cpp
│ │ │ │ ├── cal_crc_utils.hpp
│ │ │ │ ├── cal_fs_utils.cpp
│ │ │ │ └── cal_fs_utils.hpp
│ │ │ ├── capsrv/
│ │ │ │ ├── capsrv_screen_shot_control_api.cpp
│ │ │ │ └── server/
│ │ │ │ ├── capsrv_server_decoder_api.cpp
│ │ │ │ ├── decodersrv/
│ │ │ │ │ ├── decodersrv_decoder_control_server_manager.cpp
│ │ │ │ │ ├── decodersrv_decoder_control_server_manager.hpp
│ │ │ │ │ ├── decodersrv_decoder_control_service.cpp
│ │ │ │ │ ├── decodersrv_decoder_control_service.hpp
│ │ │ │ │ ├── decodersrv_decoder_server_object.cpp
│ │ │ │ │ ├── decodersrv_decoder_server_object.hpp
│ │ │ │ │ └── decodersrv_decoder_work_memory.hpp
│ │ │ │ └── jpeg/
│ │ │ │ ├── capsrv_server_jpeg_error_handler.hpp
│ │ │ │ ├── capsrv_server_jpeg_library_types.hpp
│ │ │ │ ├── decodersrv_software_jpeg_decoder.cpp
│ │ │ │ ├── decodersrv_software_jpeg_decoder.hpp
│ │ │ │ ├── decodersrv_software_jpeg_shrinker.cpp
│ │ │ │ └── decodersrv_software_jpeg_shrinker.hpp
│ │ │ ├── cfg/
│ │ │ │ ├── cfg_flags.board.nintendo_nx.inc
│ │ │ │ ├── cfg_flags.cpp
│ │ │ │ ├── cfg_flags.generic.inc
│ │ │ │ ├── cfg_override.board.nintendo_nx.inc
│ │ │ │ ├── cfg_override.cpp
│ │ │ │ ├── cfg_override.generic.inc
│ │ │ │ ├── cfg_sd_card.board.nintendo_nx.inc
│ │ │ │ ├── cfg_sd_card.cpp
│ │ │ │ └── cfg_sd_card.generic.inc
│ │ │ ├── crypto/
│ │ │ │ ├── crypto_csrng.os.generic.cpp
│ │ │ │ ├── crypto_csrng.os.horizon.cpp
│ │ │ │ └── crypto_csrng.os.windows.cpp
│ │ │ ├── cs/
│ │ │ │ ├── cs_audio_server.cpp
│ │ │ │ ├── cs_command_impl.hpp
│ │ │ │ ├── cs_command_impl.inc
│ │ │ │ ├── cs_command_processor.cpp
│ │ │ │ ├── cs_hid_server.cpp
│ │ │ │ ├── cs_remote_video_server.cpp
│ │ │ │ └── cs_target_io_server.cpp
│ │ │ ├── dd/
│ │ │ │ ├── dd_device_address_space.cpp
│ │ │ │ └── impl/
│ │ │ │ ├── dd_device_address_space_impl.generic.hpp
│ │ │ │ ├── dd_device_address_space_impl.hpp
│ │ │ │ ├── dd_device_address_space_impl.os.horizon.cpp
│ │ │ │ └── dd_device_address_space_impl.os.horizon.hpp
│ │ │ ├── ddsf/
│ │ │ │ ├── ddsf_device_code_entry_manager.cpp
│ │ │ │ ├── ddsf_event_handler.cpp
│ │ │ │ ├── ddsf_memory_api.cpp
│ │ │ │ └── ddsf_session_api.cpp
│ │ │ ├── diag/
│ │ │ │ ├── diag_abort_observer.cpp
│ │ │ │ ├── diag_assertion_impl.cpp
│ │ │ │ ├── diag_assertion_impl_for_nx_asm.board.nintendo_nx.s
│ │ │ │ ├── diag_backtrace.cpp
│ │ │ │ ├── diag_log.cpp
│ │ │ │ ├── diag_log_impl.hpp
│ │ │ │ ├── diag_log_observer.cpp
│ │ │ │ ├── diag_symbol.cpp
│ │ │ │ └── impl/
│ │ │ │ ├── diag_abort_observer_manager.cpp
│ │ │ │ ├── diag_abort_observer_manager.hpp
│ │ │ │ ├── diag_backtrace_impl.os.generic.cpp
│ │ │ │ ├── diag_backtrace_impl.os.horizon.cpp
│ │ │ │ ├── diag_default_abort_observer.cpp
│ │ │ │ ├── diag_dump_stack_trace.hpp
│ │ │ │ ├── diag_dump_stack_trace.os.generic.cpp
│ │ │ │ ├── diag_dump_stack_trace.os.horizon.cpp
│ │ │ │ ├── diag_get_all_backtrace.cpp
│ │ │ │ ├── diag_get_all_backtrace.hpp
│ │ │ │ ├── diag_invoke_abort.hpp
│ │ │ │ ├── diag_invoke_abort.os.generic.cpp
│ │ │ │ ├── diag_invoke_abort.os.horizon.cpp
│ │ │ │ ├── diag_module_impl.os.horizon.cpp
│ │ │ │ ├── diag_observer_manager.hpp
│ │ │ │ ├── diag_print_debug_string.hpp
│ │ │ │ ├── diag_print_debug_string.os.horizon.cpp
│ │ │ │ ├── diag_print_debug_string.os.linux.cpp
│ │ │ │ ├── diag_print_debug_string.os.macos.cpp
│ │ │ │ ├── diag_print_debug_string.os.windows.cpp
│ │ │ │ ├── diag_process.os.horizon.cpp
│ │ │ │ ├── diag_symbol_impl.hpp
│ │ │ │ ├── diag_symbol_impl.os.generic.cpp
│ │ │ │ ├── diag_symbol_impl.os.horizon.cpp
│ │ │ │ ├── diag_symbol_impl.os.macos.cpp
│ │ │ │ ├── diag_symbol_impl.os.windows.cpp
│ │ │ │ └── diag_utf8_util.cpp
│ │ │ ├── dmnt/
│ │ │ │ ├── dmntcht.h
│ │ │ │ └── dmntcht.os.horizon.c
│ │ │ ├── erpt/
│ │ │ │ └── srv/
│ │ │ │ ├── erpt_srv_allocator.hpp
│ │ │ │ ├── erpt_srv_attachment.cpp
│ │ │ │ ├── erpt_srv_attachment.hpp
│ │ │ │ ├── erpt_srv_attachment_impl.cpp
│ │ │ │ ├── erpt_srv_attachment_impl.hpp
│ │ │ │ ├── erpt_srv_cipher.cpp
│ │ │ │ ├── erpt_srv_cipher.hpp
│ │ │ │ ├── erpt_srv_context.cpp
│ │ │ │ ├── erpt_srv_context.hpp
│ │ │ │ ├── erpt_srv_context_impl.cpp
│ │ │ │ ├── erpt_srv_context_impl.hpp
│ │ │ │ ├── erpt_srv_context_record.cpp
│ │ │ │ ├── erpt_srv_context_record.hpp
│ │ │ │ ├── erpt_srv_forced_shutdown.cpp
│ │ │ │ ├── erpt_srv_forced_shutdown.hpp
│ │ │ │ ├── erpt_srv_formatter.hpp
│ │ │ │ ├── erpt_srv_fs_info.hpp
│ │ │ │ ├── erpt_srv_fs_info.os.horizon.cpp
│ │ │ │ ├── erpt_srv_journal.cpp
│ │ │ │ ├── erpt_srv_journal.hpp
│ │ │ │ ├── erpt_srv_journal_for_attachments.cpp
│ │ │ │ ├── erpt_srv_journal_for_meta.cpp
│ │ │ │ ├── erpt_srv_journal_for_reports.cpp
│ │ │ │ ├── erpt_srv_journal_record.hpp
│ │ │ │ ├── erpt_srv_keys.cpp
│ │ │ │ ├── erpt_srv_keys.hpp
│ │ │ │ ├── erpt_srv_main.cpp
│ │ │ │ ├── erpt_srv_manager_impl.cpp
│ │ │ │ ├── erpt_srv_manager_impl.hpp
│ │ │ │ ├── erpt_srv_ref_count.hpp
│ │ │ │ ├── erpt_srv_report.cpp
│ │ │ │ ├── erpt_srv_report.hpp
│ │ │ │ ├── erpt_srv_report_impl.cpp
│ │ │ │ ├── erpt_srv_report_impl.hpp
│ │ │ │ ├── erpt_srv_reporter.cpp
│ │ │ │ ├── erpt_srv_reporter.hpp
│ │ │ │ ├── erpt_srv_service.cpp
│ │ │ │ ├── erpt_srv_service.hpp
│ │ │ │ ├── erpt_srv_session_impl.cpp
│ │ │ │ ├── erpt_srv_session_impl.hpp
│ │ │ │ ├── erpt_srv_stream.cpp
│ │ │ │ └── erpt_srv_stream.hpp
│ │ │ ├── err/
│ │ │ │ ├── err_api.cpp
│ │ │ │ └── impl/
│ │ │ │ ├── err_string_util.cpp
│ │ │ │ └── err_string_util.hpp
│ │ │ ├── fs/
│ │ │ │ ├── common/
│ │ │ │ │ ├── fs_dbm_hierarchical_rom_file_table.cpp
│ │ │ │ │ ├── fs_dbm_rom_path_tool.cpp
│ │ │ │ │ └── fs_file_storage.cpp
│ │ │ │ ├── fs_access_log.cpp
│ │ │ │ ├── fs_api.cpp
│ │ │ │ ├── fs_application.cpp
│ │ │ │ ├── fs_bis.cpp
│ │ │ │ ├── fs_code.cpp
│ │ │ │ ├── fs_content.cpp
│ │ │ │ ├── fs_content_storage.cpp
│ │ │ │ ├── fs_context.cpp
│ │ │ │ ├── fs_data.cpp
│ │ │ │ ├── fs_device_save_data.cpp
│ │ │ │ ├── fs_error_info.cpp
│ │ │ │ ├── fs_file_path_hash.hpp
│ │ │ │ ├── fs_filesystem_utils.cpp
│ │ │ │ ├── fs_game_card.cpp
│ │ │ │ ├── fs_host.cpp
│ │ │ │ ├── fs_image_directory.cpp
│ │ │ │ ├── fs_memory_management.cpp
│ │ │ │ ├── fs_memory_report_info.cpp
│ │ │ │ ├── fs_mmc.cpp
│ │ │ │ ├── fs_priority.cpp
│ │ │ │ ├── fs_program_id.cpp
│ │ │ │ ├── fs_remote_file_system_proxy.cpp
│ │ │ │ ├── fs_remote_file_system_proxy.hpp
│ │ │ │ ├── fs_remote_file_system_proxy_for_loader.hpp
│ │ │ │ ├── fs_result_utils.cpp
│ │ │ │ ├── fs_rights_id.cpp
│ │ │ │ ├── fs_romfs_filesystem.cpp
│ │ │ │ ├── fs_save_data_management.cpp
│ │ │ │ ├── fs_scoped_setter.hpp
│ │ │ │ ├── fs_sd_card.cpp
│ │ │ │ ├── fs_signed_system_partition.cpp
│ │ │ │ ├── fs_system_data.cpp
│ │ │ │ ├── fs_system_save_data.cpp
│ │ │ │ ├── fsa/
│ │ │ │ │ ├── fs_directory_accessor.cpp
│ │ │ │ │ ├── fs_directory_accessor.hpp
│ │ │ │ │ ├── fs_file_accessor.cpp
│ │ │ │ │ ├── fs_file_accessor.hpp
│ │ │ │ │ ├── fs_filesystem_accessor.cpp
│ │ │ │ │ ├── fs_filesystem_accessor.hpp
│ │ │ │ │ ├── fs_mount_name.hpp
│ │ │ │ │ ├── fs_mount_table.cpp
│ │ │ │ │ ├── fs_mount_table.hpp
│ │ │ │ │ ├── fs_mount_utils.cpp
│ │ │ │ │ ├── fs_mount_utils.hpp
│ │ │ │ │ ├── fs_registrar.cpp
│ │ │ │ │ ├── fs_user_directory.cpp
│ │ │ │ │ ├── fs_user_file.cpp
│ │ │ │ │ ├── fs_user_filesystem.cpp
│ │ │ │ │ ├── fs_user_filesystem_for_debug.cpp
│ │ │ │ │ ├── fs_user_mount_table.cpp
│ │ │ │ │ └── fs_user_mount_table.hpp
│ │ │ │ ├── impl/
│ │ │ │ │ ├── fs_event_notifier_service_object_adapter.hpp
│ │ │ │ │ ├── fs_file_system_proxy_service_object.hpp
│ │ │ │ │ ├── fs_file_system_service_object_adapter.hpp
│ │ │ │ │ ├── fs_hash_generator_factory_selector.cpp
│ │ │ │ │ ├── fs_id_string_impl.os.generic.cpp
│ │ │ │ │ ├── fs_library.cpp
│ │ │ │ │ ├── fs_library.hpp
│ │ │ │ │ ├── fs_remote_device_operator.hpp
│ │ │ │ │ └── fs_remote_event_notifier.hpp
│ │ │ │ └── tests/
│ │ │ │ ├── fs_path_formatter_tests.cpp
│ │ │ │ ├── fs_path_normalizer_tests.cpp
│ │ │ │ └── fs_path_utility_tests.cpp
│ │ │ ├── fssrv/
│ │ │ │ ├── fscreator/
│ │ │ │ │ ├── fssrv_local_file_system_creator.cpp
│ │ │ │ │ ├── fssrv_partition_file_system_creator.cpp
│ │ │ │ │ ├── fssrv_rom_file_system_creator.cpp
│ │ │ │ │ ├── fssrv_storage_on_nca_creator.cpp
│ │ │ │ │ └── fssrv_subdirectory_file_system_creator.cpp
│ │ │ │ ├── fssrv_access_control.cpp
│ │ │ │ ├── fssrv_deferred_process_manager.hpp
│ │ │ │ ├── fssrv_file_system_proxy_api.cpp
│ │ │ │ ├── fssrv_file_system_proxy_impl.cpp
│ │ │ │ ├── fssrv_filesystem_interface_adapter.cpp
│ │ │ │ ├── fssrv_memory_resource_from_exp_heap.cpp
│ │ │ │ ├── fssrv_memory_resource_from_standard_allocator.cpp
│ │ │ │ ├── fssrv_nca_crypto_configuration.cpp
│ │ │ │ ├── fssrv_program_registry_impl.cpp
│ │ │ │ ├── fssrv_program_registry_service.cpp
│ │ │ │ ├── fssrv_retry_utility.hpp
│ │ │ │ ├── fssrv_storage_interface_adapter.cpp
│ │ │ │ └── impl/
│ │ │ │ ├── fssrv_allocator_for_service_framework.hpp
│ │ │ │ ├── fssrv_file_system_proxy_service_object.cpp
│ │ │ │ ├── fssrv_program_info.cpp
│ │ │ │ ├── fssrv_program_info.hpp
│ │ │ │ ├── fssrv_program_registry_manager.cpp
│ │ │ │ ├── fssrv_program_registry_manager.hpp
│ │ │ │ ├── fssrv_utility.cpp
│ │ │ │ └── fssrv_utility.hpp
│ │ │ ├── fssystem/
│ │ │ │ ├── buffers/
│ │ │ │ │ ├── fssystem_buffer_manager_utils.cpp
│ │ │ │ │ ├── fssystem_file_system_buddy_heap.cpp
│ │ │ │ │ └── fssystem_file_system_buffer_manager.cpp
│ │ │ │ ├── fssystem_aes_ctr_counter_extended_storage.cpp
│ │ │ │ ├── fssystem_aes_ctr_storage.cpp
│ │ │ │ ├── fssystem_aes_ctr_storage_external.cpp
│ │ │ │ ├── fssystem_aes_xts_storage.cpp
│ │ │ │ ├── fssystem_aes_xts_storage_external.cpp
│ │ │ │ ├── fssystem_alignment_matching_storage_impl.cpp
│ │ │ │ ├── fssystem_allocator_utility.cpp
│ │ │ │ ├── fssystem_block_cache_buffered_storage.cpp
│ │ │ │ ├── fssystem_bucket_tree.cpp
│ │ │ │ ├── fssystem_buffered_storage.cpp
│ │ │ │ ├── fssystem_compression_configuration.cpp
│ │ │ │ ├── fssystem_crypto_configuration.cpp
│ │ │ │ ├── fssystem_directory_savedata_filesystem.cpp
│ │ │ │ ├── fssystem_external_code.cpp
│ │ │ │ ├── fssystem_file_system_proxy_api.cpp
│ │ │ │ ├── fssystem_hierarchical_integrity_verification_storage.cpp
│ │ │ │ ├── fssystem_hierarchical_sha256_storage.cpp
│ │ │ │ ├── fssystem_hierarchical_sha256_storage.hpp
│ │ │ │ ├── fssystem_indirect_storage.cpp
│ │ │ │ ├── fssystem_integrity_romfs_storage.cpp
│ │ │ │ ├── fssystem_integrity_verification_storage.cpp
│ │ │ │ ├── fssystem_key_slot_cache.hpp
│ │ │ │ ├── fssystem_local_file_system.cpp
│ │ │ │ ├── fssystem_lru_list_cache.hpp
│ │ │ │ ├── fssystem_memory_resource_buffer_hold_storage.hpp
│ │ │ │ ├── fssystem_nca_file_system_driver.cpp
│ │ │ │ ├── fssystem_nca_header.cpp
│ │ │ │ ├── fssystem_nca_reader.cpp
│ │ │ │ ├── fssystem_partition_file_system.cpp
│ │ │ │ ├── fssystem_partition_file_system_meta.cpp
│ │ │ │ ├── fssystem_pooled_buffer.cpp
│ │ │ │ ├── fssystem_read_only_block_cache_storage.hpp
│ │ │ │ ├── fssystem_romfs_filesystem.cpp
│ │ │ │ ├── fssystem_service_context.cpp
│ │ │ │ ├── fssystem_sparse_storage.cpp
│ │ │ │ ├── fssystem_speed_emulation_configuration.cpp
│ │ │ │ ├── fssystem_thread_priority_changer.cpp
│ │ │ │ └── fssystem_utility.cpp
│ │ │ ├── gc/
│ │ │ │ └── impl/
│ │ │ │ ├── gc_embedded_data_holder.cpp
│ │ │ │ └── gc_gc_crypto.cpp
│ │ │ ├── gpio/
│ │ │ │ ├── driver/
│ │ │ │ │ ├── board/
│ │ │ │ │ │ └── nintendo/
│ │ │ │ │ │ └── nx/
│ │ │ │ │ │ ├── gpio_driver_api.cpp
│ │ │ │ │ │ └── impl/
│ │ │ │ │ │ ├── gpio_driver_impl.cpp
│ │ │ │ │ │ ├── gpio_driver_impl.hpp
│ │ │ │ │ │ ├── gpio_initial_config.cpp
│ │ │ │ │ │ ├── gpio_initial_config.hpp
│ │ │ │ │ │ ├── gpio_initial_config_aula.inc
│ │ │ │ │ │ ├── gpio_initial_config_calcio.inc
│ │ │ │ │ │ ├── gpio_initial_config_hoag.inc
│ │ │ │ │ │ ├── gpio_initial_config_icosa.inc
│ │ │ │ │ │ ├── gpio_initial_config_iowa.inc
│ │ │ │ │ │ ├── gpio_initial_wake_pin_config_aula.inc
│ │ │ │ │ │ ├── gpio_initial_wake_pin_config_calcio.inc
│ │ │ │ │ │ ├── gpio_initial_wake_pin_config_hoag.inc
│ │ │ │ │ │ ├── gpio_initial_wake_pin_config_icosa.inc
│ │ │ │ │ │ ├── gpio_initial_wake_pin_config_iowa.inc
│ │ │ │ │ │ ├── gpio_internal_pad_map_combination.inc
│ │ │ │ │ │ ├── gpio_register_accessor.hpp
│ │ │ │ │ │ ├── gpio_suspend_handler.cpp
│ │ │ │ │ │ ├── gpio_suspend_handler.hpp
│ │ │ │ │ │ ├── gpio_tegra_pad.hpp
│ │ │ │ │ │ └── gpio_wake_pin_config.hpp
│ │ │ │ │ ├── gpio_driver_client_api.cpp
│ │ │ │ │ ├── gpio_driver_service_api.cpp
│ │ │ │ │ ├── gpio_pad.cpp
│ │ │ │ │ ├── gpio_pad_api.cpp
│ │ │ │ │ └── impl/
│ │ │ │ │ ├── gpio_driver_core.cpp
│ │ │ │ │ ├── gpio_driver_core.hpp
│ │ │ │ │ └── gpio_pad_session_impl.cpp
│ │ │ │ ├── gpio_client_api.cpp
│ │ │ │ ├── gpio_remote_manager_impl.cpp
│ │ │ │ ├── gpio_remote_manager_impl.hpp
│ │ │ │ ├── gpio_remote_pad_session_impl.hpp
│ │ │ │ └── server/
│ │ │ │ ├── gpio_server_api.cpp
│ │ │ │ ├── gpio_server_manager_impl.cpp
│ │ │ │ ├── gpio_server_manager_impl.hpp
│ │ │ │ └── gpio_server_pad_session_impl.hpp
│ │ │ ├── hid/
│ │ │ │ └── hid_api.cpp
│ │ │ ├── hos/
│ │ │ │ ├── hos_stratosphere_api.cpp
│ │ │ │ ├── hos_version_api.cpp
│ │ │ │ ├── hos_version_api_private.cpp
│ │ │ │ └── hos_version_api_weak_for_unit_test.cpp
│ │ │ ├── htc/
│ │ │ │ ├── server/
│ │ │ │ │ ├── driver/
│ │ │ │ │ │ ├── htc_driver_manager.hpp
│ │ │ │ │ │ ├── htc_htclow_driver.cpp
│ │ │ │ │ │ ├── htc_htclow_driver.hpp
│ │ │ │ │ │ └── htc_i_driver.hpp
│ │ │ │ │ ├── htc_htc_service_object.cpp
│ │ │ │ │ ├── htc_htc_service_object.hpp
│ │ │ │ │ ├── htc_htcmisc_hipc_server.cpp
│ │ │ │ │ ├── htc_htcmisc_impl.cpp
│ │ │ │ │ ├── htc_htcmisc_impl.hpp
│ │ │ │ │ ├── htc_htcmisc_manager.cpp
│ │ │ │ │ ├── htc_htcmisc_manager.hpp
│ │ │ │ │ ├── htc_observer.cpp
│ │ │ │ │ ├── htc_observer.hpp
│ │ │ │ │ ├── htc_power_state_control.cpp
│ │ │ │ │ └── rpc/
│ │ │ │ │ ├── htc_htcmisc_rpc_server.cpp
│ │ │ │ │ ├── htc_htcmisc_rpc_server.hpp
│ │ │ │ │ ├── htc_htcmisc_rpc_tasks.cpp
│ │ │ │ │ ├── htc_htcmisc_rpc_tasks.hpp
│ │ │ │ │ ├── htc_rpc_client.cpp
│ │ │ │ │ ├── htc_rpc_client.hpp
│ │ │ │ │ ├── htc_rpc_task_id_free_list.hpp
│ │ │ │ │ ├── htc_rpc_task_queue.hpp
│ │ │ │ │ ├── htc_rpc_task_table.hpp
│ │ │ │ │ └── htc_rpc_tasks.hpp
│ │ │ │ └── tenv/
│ │ │ │ ├── htc_tenv.cpp
│ │ │ │ ├── htc_tenv_service.cpp
│ │ │ │ ├── htc_tenv_service.hpp
│ │ │ │ ├── htc_tenv_service_manager.cpp
│ │ │ │ └── impl/
│ │ │ │ ├── htc_tenv_allocator.cpp
│ │ │ │ ├── htc_tenv_allocator.hpp
│ │ │ │ ├── htc_tenv_definition_file_info.hpp
│ │ │ │ ├── htc_tenv_impl.cpp
│ │ │ │ └── htc_tenv_impl.hpp
│ │ │ ├── htcfs/
│ │ │ │ ├── htcfs_cache_manager.hpp
│ │ │ │ ├── htcfs_client.cpp
│ │ │ │ ├── htcfs_client.hpp
│ │ │ │ ├── htcfs_client_impl.cpp
│ │ │ │ ├── htcfs_client_impl.hpp
│ │ │ │ ├── htcfs_directory_service_object.cpp
│ │ │ │ ├── htcfs_directory_service_object.hpp
│ │ │ │ ├── htcfs_file_service_object.cpp
│ │ │ │ ├── htcfs_file_service_object.hpp
│ │ │ │ ├── htcfs_file_system_service_object.cpp
│ │ │ │ ├── htcfs_file_system_service_object.hpp
│ │ │ │ ├── htcfs_header_factory.hpp
│ │ │ │ ├── htcfs_hipc_server.cpp
│ │ │ │ ├── htcfs_result.hpp
│ │ │ │ ├── htcfs_result_utils.hpp
│ │ │ │ ├── htcfs_working_directory.cpp
│ │ │ │ └── htcfs_working_directory.hpp
│ │ │ ├── htclow/
│ │ │ │ ├── ctrl/
│ │ │ │ │ ├── htclow_ctrl_packet.hpp
│ │ │ │ │ ├── htclow_ctrl_packet_factory.cpp
│ │ │ │ │ ├── htclow_ctrl_packet_factory.hpp
│ │ │ │ │ ├── htclow_ctrl_send_buffer.cpp
│ │ │ │ │ ├── htclow_ctrl_send_buffer.hpp
│ │ │ │ │ ├── htclow_ctrl_service.cpp
│ │ │ │ │ ├── htclow_ctrl_service.hpp
│ │ │ │ │ ├── htclow_ctrl_service_channels.hpp
│ │ │ │ │ ├── htclow_ctrl_settings_holder.cpp
│ │ │ │ │ ├── htclow_ctrl_settings_holder.hpp
│ │ │ │ │ ├── htclow_ctrl_state.hpp
│ │ │ │ │ ├── htclow_ctrl_state_machine.cpp
│ │ │ │ │ ├── htclow_ctrl_state_machine.hpp
│ │ │ │ │ ├── htclow_json.cpp
│ │ │ │ │ ├── htclow_json.hpp
│ │ │ │ │ ├── htclow_service_channel_parser.cpp
│ │ │ │ │ └── htclow_service_channel_parser.hpp
│ │ │ │ ├── driver/
│ │ │ │ │ ├── htclow_driver_manager.cpp
│ │ │ │ │ ├── htclow_driver_manager.hpp
│ │ │ │ │ ├── htclow_driver_memory_management.cpp
│ │ │ │ │ ├── htclow_driver_memory_management.hpp
│ │ │ │ │ ├── htclow_i_driver.hpp
│ │ │ │ │ ├── htclow_socket_discovery_manager.cpp
│ │ │ │ │ ├── htclow_socket_discovery_manager.hpp
│ │ │ │ │ ├── htclow_socket_discovery_util.cpp
│ │ │ │ │ ├── htclow_socket_discovery_util.hpp
│ │ │ │ │ ├── htclow_socket_driver.cpp
│ │ │ │ │ ├── htclow_socket_driver.hpp
│ │ │ │ │ ├── htclow_usb_driver.cpp
│ │ │ │ │ ├── htclow_usb_driver.hpp
│ │ │ │ │ ├── htclow_usb_impl.cpp
│ │ │ │ │ └── htclow_usb_impl.hpp
│ │ │ │ ├── htclow_channel.cpp
│ │ │ │ ├── htclow_channel.hpp
│ │ │ │ ├── htclow_default_channel_config.hpp
│ │ │ │ ├── htclow_listener.cpp
│ │ │ │ ├── htclow_listener.hpp
│ │ │ │ ├── htclow_manager.cpp
│ │ │ │ ├── htclow_manager.hpp
│ │ │ │ ├── htclow_manager_holder.cpp
│ │ │ │ ├── htclow_manager_impl.cpp
│ │ │ │ ├── htclow_manager_impl.hpp
│ │ │ │ ├── htclow_packet.hpp
│ │ │ │ ├── htclow_packet_factory.cpp
│ │ │ │ ├── htclow_packet_factory.hpp
│ │ │ │ ├── htclow_worker.cpp
│ │ │ │ ├── htclow_worker.hpp
│ │ │ │ └── mux/
│ │ │ │ ├── htclow_mux.cpp
│ │ │ │ ├── htclow_mux.hpp
│ │ │ │ ├── htclow_mux_channel_impl.cpp
│ │ │ │ ├── htclow_mux_channel_impl.hpp
│ │ │ │ ├── htclow_mux_channel_impl_map.cpp
│ │ │ │ ├── htclow_mux_channel_impl_map.hpp
│ │ │ │ ├── htclow_mux_global_send_buffer.cpp
│ │ │ │ ├── htclow_mux_global_send_buffer.hpp
│ │ │ │ ├── htclow_mux_ring_buffer.cpp
│ │ │ │ ├── htclow_mux_ring_buffer.hpp
│ │ │ │ ├── htclow_mux_send_buffer.cpp
│ │ │ │ ├── htclow_mux_send_buffer.hpp
│ │ │ │ ├── htclow_mux_task_manager.cpp
│ │ │ │ └── htclow_mux_task_manager.hpp
│ │ │ ├── htcs/
│ │ │ │ ├── client/
│ │ │ │ │ ├── htcs_session.hpp
│ │ │ │ │ ├── htcs_session.os.horizon.cpp
│ │ │ │ │ ├── htcs_session.os.windows.cpp
│ │ │ │ │ ├── htcs_virtual_socket_collection.cpp
│ │ │ │ │ └── htcs_virtual_socket_collection.hpp
│ │ │ │ ├── htcs_socket.cpp
│ │ │ │ ├── impl/
│ │ │ │ │ ├── htcs_impl.cpp
│ │ │ │ │ ├── htcs_impl.hpp
│ │ │ │ │ ├── htcs_manager.cpp
│ │ │ │ │ ├── htcs_manager.hpp
│ │ │ │ │ ├── htcs_manager_holder.cpp
│ │ │ │ │ ├── htcs_manager_impl.cpp
│ │ │ │ │ ├── htcs_manager_impl.hpp
│ │ │ │ │ ├── htcs_monitor.cpp
│ │ │ │ │ ├── htcs_monitor.hpp
│ │ │ │ │ ├── htcs_service.cpp
│ │ │ │ │ ├── htcs_service.hpp
│ │ │ │ │ ├── htcs_util.cpp
│ │ │ │ │ ├── htcs_util.hpp
│ │ │ │ │ └── rpc/
│ │ │ │ │ ├── htcs_data_channel_manager.cpp
│ │ │ │ │ ├── htcs_data_channel_manager.hpp
│ │ │ │ │ ├── htcs_rpc_accept_task.cpp
│ │ │ │ │ ├── htcs_rpc_bind_task.cpp
│ │ │ │ │ ├── htcs_rpc_close_task.cpp
│ │ │ │ │ ├── htcs_rpc_connect_task.cpp
│ │ │ │ │ ├── htcs_rpc_fcntl_task.cpp
│ │ │ │ │ ├── htcs_rpc_listen_task.cpp
│ │ │ │ │ ├── htcs_rpc_receive_small_task.cpp
│ │ │ │ │ ├── htcs_rpc_receive_task.cpp
│ │ │ │ │ ├── htcs_rpc_select_task.cpp
│ │ │ │ │ ├── htcs_rpc_send_small_task.cpp
│ │ │ │ │ ├── htcs_rpc_send_task.cpp
│ │ │ │ │ ├── htcs_rpc_shutdown_task.cpp
│ │ │ │ │ ├── htcs_rpc_signaling_task.cpp
│ │ │ │ │ ├── htcs_rpc_socket_task.cpp
│ │ │ │ │ └── htcs_rpc_tasks.hpp
│ │ │ │ └── server/
│ │ │ │ ├── htcs_hipc_server.cpp
│ │ │ │ ├── htcs_manager_service_object.cpp
│ │ │ │ ├── htcs_manager_service_object.hpp
│ │ │ │ ├── htcs_manager_service_object_deprecated.cpp
│ │ │ │ ├── htcs_service_object_allocator.hpp
│ │ │ │ ├── htcs_socket_service_object.cpp
│ │ │ │ ├── htcs_socket_service_object.hpp
│ │ │ │ └── htcs_socket_service_object_deprecated.cpp
│ │ │ ├── i2c/
│ │ │ │ ├── driver/
│ │ │ │ │ ├── board/
│ │ │ │ │ │ └── nintendo/
│ │ │ │ │ │ └── nx/
│ │ │ │ │ │ ├── i2c_bus_device_map.inc
│ │ │ │ │ │ ├── i2c_driver_api.cpp
│ │ │ │ │ │ └── impl/
│ │ │ │ │ │ ├── i2c_bus_accessor.cpp
│ │ │ │ │ │ ├── i2c_bus_accessor.hpp
│ │ │ │ │ │ ├── i2c_bus_manager.hpp
│ │ │ │ │ │ ├── i2c_device_property_manager.hpp
│ │ │ │ │ │ ├── i2c_i2c_registers.hpp
│ │ │ │ │ │ └── i2c_i_allocator.hpp
│ │ │ │ │ ├── i2c_driver_bus_api.cpp
│ │ │ │ │ ├── i2c_driver_client_api.cpp
│ │ │ │ │ ├── i2c_driver_service_api.cpp
│ │ │ │ │ └── impl/
│ │ │ │ │ ├── i2c_driver_core.cpp
│ │ │ │ │ ├── i2c_driver_core.hpp
│ │ │ │ │ └── i2c_i2c_session_impl.cpp
│ │ │ │ ├── i2c_client_api.cpp
│ │ │ │ ├── i2c_command_list_formatter.cpp
│ │ │ │ ├── impl/
│ │ │ │ │ └── i2c_command_list_format.hpp
│ │ │ │ └── server/
│ │ │ │ ├── i2c_server_api.cpp
│ │ │ │ ├── i2c_server_manager_impl.cpp
│ │ │ │ ├── i2c_server_manager_impl.hpp
│ │ │ │ └── i2c_server_session_impl.hpp
│ │ │ ├── init/
│ │ │ │ ├── init_libnx_shim.os.horizon.cpp
│ │ │ │ ├── init_malloc.cpp
│ │ │ │ ├── init_operator_new.cpp
│ │ │ │ └── init_system_module.cpp
│ │ │ ├── kvdb/
│ │ │ │ ├── kvdb_archive.cpp
│ │ │ │ └── kvdb_file_key_value_store.cpp
│ │ │ ├── ldr/
│ │ │ │ ├── ldr_ams.os.horizon.c
│ │ │ │ ├── ldr_ams.os.horizon.h
│ │ │ │ ├── ldr_pm_api.os.horizon.cpp
│ │ │ │ └── ldr_shell_api.os.horizon.cpp
│ │ │ ├── lm/
│ │ │ │ ├── impl/
│ │ │ │ │ ├── lm_log_data_chunk.hpp
│ │ │ │ │ ├── lm_log_packet_header.hpp
│ │ │ │ │ ├── lm_log_packet_transmitter.hpp
│ │ │ │ │ ├── lm_log_packet_transmitter_base.cpp
│ │ │ │ │ └── lm_log_packet_transmitter_base.hpp
│ │ │ │ ├── lm_api.cpp
│ │ │ │ ├── lm_remote_log_service.cpp
│ │ │ │ ├── lm_remote_log_service.hpp
│ │ │ │ ├── lm_service_name.hpp
│ │ │ │ ├── sf/
│ │ │ │ │ ├── lm_i_log_getter.hpp
│ │ │ │ │ └── lm_i_log_service.hpp
│ │ │ │ └── srv/
│ │ │ │ ├── lm_custom_sink_buffer.cpp
│ │ │ │ ├── lm_custom_sink_buffer.hpp
│ │ │ │ ├── lm_event_log_transmitter.cpp
│ │ │ │ ├── lm_event_log_transmitter.hpp
│ │ │ │ ├── lm_flush_thread.cpp
│ │ │ │ ├── lm_ipc_server.cpp
│ │ │ │ ├── lm_log_buffer.cpp
│ │ │ │ ├── lm_log_buffer.hpp
│ │ │ │ ├── lm_log_getter.cpp
│ │ │ │ ├── lm_log_getter.hpp
│ │ │ │ ├── lm_log_getter_impl.cpp
│ │ │ │ ├── lm_log_getter_impl.hpp
│ │ │ │ ├── lm_log_packet_parser.cpp
│ │ │ │ ├── lm_log_packet_parser.hpp
│ │ │ │ ├── lm_log_server_proxy.cpp
│ │ │ │ ├── lm_log_server_proxy.hpp
│ │ │ │ ├── lm_log_service_impl.cpp
│ │ │ │ ├── lm_log_service_impl.hpp
│ │ │ │ ├── lm_logger_impl.cpp
│ │ │ │ ├── lm_logger_impl.hpp
│ │ │ │ ├── lm_sd_card_logger.cpp
│ │ │ │ ├── lm_sd_card_logger.hpp
│ │ │ │ ├── lm_time_util.cpp
│ │ │ │ └── lm_time_util.hpp
│ │ │ ├── lmem/
│ │ │ │ ├── impl/
│ │ │ │ │ ├── lmem_impl_common_heap.cpp
│ │ │ │ │ ├── lmem_impl_common_heap.hpp
│ │ │ │ │ ├── lmem_impl_exp_heap.cpp
│ │ │ │ │ ├── lmem_impl_exp_heap.hpp
│ │ │ │ │ ├── lmem_impl_unit_heap.cpp
│ │ │ │ │ └── lmem_impl_unit_heap.hpp
│ │ │ │ ├── lmem_common.cpp
│ │ │ │ ├── lmem_exp_heap.cpp
│ │ │ │ └── lmem_unit_heap.cpp
│ │ │ ├── lr/
│ │ │ │ ├── lr_add_on_content_location_resolver_impl.cpp
│ │ │ │ ├── lr_add_on_content_location_resolver_impl.hpp
│ │ │ │ ├── lr_api.cpp
│ │ │ │ ├── lr_content_location_resolver_impl.cpp
│ │ │ │ ├── lr_content_location_resolver_impl.hpp
│ │ │ │ ├── lr_location_redirector.cpp
│ │ │ │ ├── lr_location_redirector.hpp
│ │ │ │ ├── lr_location_resolver_impl_base.hpp
│ │ │ │ ├── lr_location_resolver_manager_factory.cpp
│ │ │ │ ├── lr_location_resolver_manager_factory.hpp
│ │ │ │ ├── lr_location_resolver_manager_impl.cpp
│ │ │ │ ├── lr_redirect_only_location_resolver_impl.cpp
│ │ │ │ ├── lr_redirect_only_location_resolver_impl.hpp
│ │ │ │ ├── lr_registered_data.hpp
│ │ │ │ ├── lr_registered_location_resolver_impl.cpp
│ │ │ │ ├── lr_registered_location_resolver_impl.hpp
│ │ │ │ ├── lr_remote_location_resolver_impl.hpp
│ │ │ │ ├── lr_remote_location_resolver_manager_impl.hpp
│ │ │ │ └── lr_remote_registered_location_resolver_impl.hpp
│ │ │ ├── mem/
│ │ │ │ ├── impl/
│ │ │ │ │ ├── heap/
│ │ │ │ │ │ ├── mem_impl_heap_cached_heap.cpp
│ │ │ │ │ │ ├── mem_impl_heap_central_heap.cpp
│ │ │ │ │ │ ├── mem_impl_heap_platform.hpp
│ │ │ │ │ │ ├── mem_impl_heap_tls_heap_cache.cpp
│ │ │ │ │ │ ├── mem_impl_heap_tls_heap_cache.hpp
│ │ │ │ │ │ ├── mem_impl_heap_tls_heap_central.cpp
│ │ │ │ │ │ ├── mem_impl_heap_tls_heap_central.hpp
│ │ │ │ │ │ └── mem_impl_heap_tls_heap_static.hpp
│ │ │ │ │ ├── mem_impl_platform.hpp
│ │ │ │ │ ├── mem_impl_platform.os.horizon.cpp
│ │ │ │ │ ├── mem_impl_platform.os.linux.cpp
│ │ │ │ │ ├── mem_impl_platform.os.macos.cpp
│ │ │ │ │ └── mem_impl_platform.os.windows.cpp
│ │ │ │ └── mem_standard_allocator.cpp
│ │ │ ├── mitm/
│ │ │ │ ├── mitm_pm.os.horizon.c
│ │ │ │ ├── mitm_pm.os.horizon.h
│ │ │ │ └── mitm_pm_api.cpp
│ │ │ ├── ncm/
│ │ │ │ ├── ncm_api.cpp
│ │ │ │ ├── ncm_content_id_utils.cpp
│ │ │ │ ├── ncm_content_info_utils.cpp
│ │ │ │ ├── ncm_content_management_utils.cpp
│ │ │ │ ├── ncm_content_manager_factory.cpp
│ │ │ │ ├── ncm_content_manager_factory.hpp
│ │ │ │ ├── ncm_content_manager_impl.cpp
│ │ │ │ ├── ncm_content_meta.cpp
│ │ │ │ ├── ncm_content_meta_database_impl.cpp
│ │ │ │ ├── ncm_content_meta_database_impl.hpp
│ │ │ │ ├── ncm_content_meta_database_impl_base.hpp
│ │ │ │ ├── ncm_content_meta_type.cpp
│ │ │ │ ├── ncm_content_meta_utils.cpp
│ │ │ │ ├── ncm_content_storage_impl.cpp
│ │ │ │ ├── ncm_content_storage_impl.hpp
│ │ │ │ ├── ncm_content_storage_impl_base.hpp
│ │ │ │ ├── ncm_extended_data_mapper.hpp
│ │ │ │ ├── ncm_file_mapper_file.hpp
│ │ │ │ ├── ncm_fs_utils.cpp
│ │ │ │ ├── ncm_fs_utils.hpp
│ │ │ │ ├── ncm_host_content_storage_impl.cpp
│ │ │ │ ├── ncm_host_content_storage_impl.hpp
│ │ │ │ ├── ncm_install_task_base.cpp
│ │ │ │ ├── ncm_install_task_data.cpp
│ │ │ │ ├── ncm_integrated_content_meta_database_impl.cpp
│ │ │ │ ├── ncm_integrated_content_storage_impl.cpp
│ │ │ │ ├── ncm_make_path.cpp
│ │ │ │ ├── ncm_memory_report.cpp
│ │ │ │ ├── ncm_on_memory_content_meta_database_impl.cpp
│ │ │ │ ├── ncm_on_memory_content_meta_database_impl.hpp
│ │ │ │ ├── ncm_package_install_task.cpp
│ │ │ │ ├── ncm_package_install_task_base.cpp
│ │ │ │ ├── ncm_package_system_downgrade_task.cpp
│ │ │ │ ├── ncm_package_system_update_task.cpp
│ │ │ │ ├── ncm_placeholder_accessor.cpp
│ │ │ │ ├── ncm_placeholder_accessor.hpp
│ │ │ │ ├── ncm_read_only_content_storage_impl.cpp
│ │ │ │ ├── ncm_read_only_content_storage_impl.hpp
│ │ │ │ ├── ncm_registered_host_content.cpp
│ │ │ │ ├── ncm_remote_content_manager_impl.hpp
│ │ │ │ ├── ncm_remote_content_meta_database_impl.hpp
│ │ │ │ ├── ncm_remote_content_storage_impl.hpp
│ │ │ │ ├── ncm_storage_utils.cpp
│ │ │ │ └── ncm_submission_package_install_task.cpp
│ │ │ ├── nim/
│ │ │ │ └── nim_network_install_manager_api.cpp
│ │ │ ├── nsd/
│ │ │ │ └── impl/
│ │ │ │ └── device/
│ │ │ │ └── nsd_device.cpp
│ │ │ ├── os/
│ │ │ │ ├── impl/
│ │ │ │ │ ├── os_address_space_allocator.cpp
│ │ │ │ │ ├── os_address_space_allocator.hpp
│ │ │ │ │ ├── os_address_space_allocator_forbidden_region.hpp
│ │ │ │ │ ├── os_address_space_allocator_impl.generic.hpp
│ │ │ │ │ ├── os_address_space_allocator_impl.os.horizon.hpp
│ │ │ │ │ ├── os_aslr_space_manager.hpp
│ │ │ │ │ ├── os_aslr_space_manager_impl.os.horizon.hpp
│ │ │ │ │ ├── os_aslr_space_manager_impl.os.linux.hpp
│ │ │ │ │ ├── os_aslr_space_manager_impl.os.macos.hpp
│ │ │ │ │ ├── os_aslr_space_manager_impl.os.windows.hpp
│ │ │ │ │ ├── os_aslr_space_manager_types.hpp
│ │ │ │ │ ├── os_cache_impl.hpp
│ │ │ │ │ ├── os_cache_impl.os.horizon.hpp
│ │ │ │ │ ├── os_cache_impl.os.linux.hpp
│ │ │ │ │ ├── os_cache_impl.os.macos.hpp
│ │ │ │ │ ├── os_cache_impl.os.windows.hpp
│ │ │ │ │ ├── os_debug_impl.hpp
│ │ │ │ │ ├── os_debug_impl.os.horizon.hpp
│ │ │ │ │ ├── os_debug_impl.os.linux.hpp
│ │ │ │ │ ├── os_debug_impl.os.macos.hpp
│ │ │ │ │ ├── os_debug_impl.os.windows.hpp
│ │ │ │ │ ├── os_disable_counter.os.horizon.hpp
│ │ │ │ │ ├── os_giant_lock.hpp
│ │ │ │ │ ├── os_giant_lock.os.horizon.hpp
│ │ │ │ │ ├── os_giant_lock.os.linux.cpp
│ │ │ │ │ ├── os_giant_lock.os.linux.hpp
│ │ │ │ │ ├── os_giant_lock.os.macos.cpp
│ │ │ │ │ ├── os_giant_lock.os.macos.hpp
│ │ │ │ │ ├── os_giant_lock.os.windows.cpp
│ │ │ │ │ ├── os_giant_lock.os.windows.hpp
│ │ │ │ │ ├── os_giant_lock_types.hpp
│ │ │ │ │ ├── os_initialize.os.horizon.cpp
│ │ │ │ │ ├── os_initialize.os.linux.cpp
│ │ │ │ │ ├── os_initialize.os.macos.cpp
│ │ │ │ │ ├── os_initialize.os.windows.cpp
│ │ │ │ │ ├── os_insecure_memory_impl.hpp
│ │ │ │ │ ├── os_insecure_memory_impl.os.horizon.cpp
│ │ │ │ │ ├── os_inter_process_event.cpp
│ │ │ │ │ ├── os_inter_process_event.hpp
│ │ │ │ │ ├── os_inter_process_event_impl.hpp
│ │ │ │ │ ├── os_inter_process_event_impl.os.horizon.cpp
│ │ │ │ │ ├── os_inter_process_event_impl.os.horizon.hpp
│ │ │ │ │ ├── os_inter_process_event_impl.os.linux.cpp
│ │ │ │ │ ├── os_inter_process_event_impl.os.linux.hpp
│ │ │ │ │ ├── os_inter_process_event_impl.os.macos.cpp
│ │ │ │ │ ├── os_inter_process_event_impl.os.macos.hpp
│ │ │ │ │ ├── os_inter_process_event_impl.os.windows.cpp
│ │ │ │ │ ├── os_inter_process_event_impl.os.windows.hpp
│ │ │ │ │ ├── os_internal_busy_mutex_impl.os.horizon.hpp
│ │ │ │ │ ├── os_internal_condition_variable_impl.os.horizon.cpp
│ │ │ │ │ ├── os_internal_condition_variable_impl.os.windows.cpp
│ │ │ │ │ ├── os_internal_condition_variable_impl.pthread.cpp
│ │ │ │ │ ├── os_internal_critical_section_impl.os.horizon.cpp
│ │ │ │ │ ├── os_internal_critical_section_impl.os.windows.cpp
│ │ │ │ │ ├── os_internal_critical_section_impl.os.windows.hpp
│ │ │ │ │ ├── os_internal_critical_section_impl.pthread.cpp
│ │ │ │ │ ├── os_internal_light_event_impl.os.generic.hpp
│ │ │ │ │ ├── os_internal_light_event_impl.os.horizon.hpp
│ │ │ │ │ ├── os_internal_rw_busy_mutex_impl.os.horizon.hpp
│ │ │ │ │ ├── os_internal_rw_busy_mutex_impl.os.linux.hpp
│ │ │ │ │ ├── os_internal_rw_busy_mutex_impl.os.macos.hpp
│ │ │ │ │ ├── os_internal_rw_busy_mutex_impl.os.windows.hpp
│ │ │ │ │ ├── os_interrupt_event_impl.hpp
│ │ │ │ │ ├── os_interrupt_event_target_impl.os.horizon.cpp
│ │ │ │ │ ├── os_interrupt_event_target_impl.os.horizon.hpp
│ │ │ │ │ ├── os_interrupt_event_target_impl.os.linux.hpp
│ │ │ │ │ ├── os_interrupt_event_target_impl.os.macos.hpp
│ │ │ │ │ ├── os_interrupt_event_target_impl.os.windows.cpp
│ │ │ │ │ ├── os_interrupt_event_target_impl.os.windows.hpp
│ │ │ │ │ ├── os_io_region_impl.hpp
│ │ │ │ │ ├── os_io_region_impl.os.horizon.cpp
│ │ │ │ │ ├── os_io_region_impl.os.windows.cpp
│ │ │ │ │ ├── os_memory_attribute_impl.hpp
│ │ │ │ │ ├── os_memory_attribute_impl.os.horizon.cpp
│ │ │ │ │ ├── os_memory_attribute_impl.os.linux.cpp
│ │ │ │ │ ├── os_memory_attribute_impl.os.macos.cpp
│ │ │ │ │ ├── os_memory_attribute_impl.os.windows.cpp
│ │ │ │ │ ├── os_memory_heap_manager.cpp
│ │ │ │ │ ├── os_memory_heap_manager.hpp
│ │ │ │ │ ├── os_memory_heap_manager_impl.os.horizon.hpp
│ │ │ │ │ ├── os_memory_heap_manager_impl.os.linux.hpp
│ │ │ │ │ ├── os_memory_heap_manager_impl.os.macos.hpp
│ │ │ │ │ ├── os_memory_heap_manager_impl.os.windows.hpp
│ │ │ │ │ ├── os_memory_heap_manager_types.hpp
│ │ │ │ │ ├── os_memory_permission_impl.hpp
│ │ │ │ │ ├── os_memory_permission_impl.os.horizon.cpp
│ │ │ │ │ ├── os_memory_permission_impl.os.linux.cpp
│ │ │ │ │ ├── os_memory_permission_impl.os.macos.cpp
│ │ │ │ │ ├── os_memory_permission_impl.os.windows.cpp
│ │ │ │ │ ├── os_message_queue_helper.hpp
│ │ │ │ │ ├── os_multiple_wait_holder_base.hpp
│ │ │ │ │ ├── os_multiple_wait_holder_impl.hpp
│ │ │ │ │ ├── os_multiple_wait_holder_of_event.hpp
│ │ │ │ │ ├── os_multiple_wait_holder_of_inter_process_event.hpp
│ │ │ │ │ ├── os_multiple_wait_holder_of_interrupt_event.cpp
│ │ │ │ │ ├── os_multiple_wait_holder_of_interrupt_event.hpp
│ │ │ │ │ ├── os_multiple_wait_holder_of_message_queue.hpp
│ │ │ │ │ ├── os_multiple_wait_holder_of_native_handle.hpp
│ │ │ │ │ ├── os_multiple_wait_holder_of_semaphore.hpp
│ │ │ │ │ ├── os_multiple_wait_holder_of_thread.hpp
│ │ │ │ │ ├── os_multiple_wait_holder_of_timer_event.hpp
│ │ │ │ │ ├── os_multiple_wait_impl.cpp
│ │ │ │ │ ├── os_multiple_wait_impl.hpp
│ │ │ │ │ ├── os_multiple_wait_object_list.hpp
│ │ │ │ │ ├── os_multiple_wait_target_impl.os.horizon.cpp
│ │ │ │ │ ├── os_multiple_wait_target_impl.os.horizon.hpp
│ │ │ │ │ ├── os_multiple_wait_target_impl.os.linux.cpp
│ │ │ │ │ ├── os_multiple_wait_target_impl.os.linux.hpp
│ │ │ │ │ ├── os_multiple_wait_target_impl.os.macos.cpp
│ │ │ │ │ ├── os_multiple_wait_target_impl.os.macos.hpp
│ │ │ │ │ ├── os_multiple_wait_target_impl.os.windows.cpp
│ │ │ │ │ ├── os_multiple_wait_target_impl.os.windows.hpp
│ │ │ │ │ ├── os_mutex_impl.hpp
│ │ │ │ │ ├── os_native_handle_impl.hpp
│ │ │ │ │ ├── os_native_handle_impl.os.horizon.hpp
│ │ │ │ │ ├── os_native_handle_impl.os.linux.hpp
│ │ │ │ │ ├── os_native_handle_impl.os.macos.hpp
│ │ │ │ │ ├── os_native_handle_impl.os.windows.hpp
│ │ │ │ │ ├── os_process_code_memory_impl.hpp
│ │ │ │ │ ├── os_process_code_memory_impl.os.horizon.cpp
│ │ │ │ │ ├── os_process_handle_impl.hpp
│ │ │ │ │ ├── os_process_handle_impl.os.horizon.hpp
│ │ │ │ │ ├── os_process_handle_impl.os.linux.hpp
│ │ │ │ │ ├── os_process_handle_impl.os.macos.hpp
│ │ │ │ │ ├── os_process_handle_impl.os.windows.hpp
│ │ │ │ │ ├── os_process_memory_impl.hpp
│ │ │ │ │ ├── os_process_memory_impl.os.horizon.cpp
│ │ │ │ │ ├── os_random_impl.hpp
│ │ │ │ │ ├── os_random_impl.os.horizon.cpp
│ │ │ │ │ ├── os_random_impl.os.linux.cpp
│ │ │ │ │ ├── os_random_impl.os.macos.cpp
│ │ │ │ │ ├── os_random_impl.os.windows.cpp
│ │ │ │ │ ├── os_resource_manager.cpp
│ │ │ │ │ ├── os_resource_manager.hpp
│ │ │ │ │ ├── os_rng_manager.hpp
│ │ │ │ │ ├── os_rng_manager_impl.cpp
│ │ │ │ │ ├── os_rng_manager_impl.hpp
│ │ │ │ │ ├── os_rng_manager_impl.os.horizon.cpp
│ │ │ │ │ ├── os_rng_manager_impl.os.linux.cpp
│ │ │ │ │ ├── os_rng_manager_impl.os.macos.cpp
│ │ │ │ │ ├── os_rng_manager_impl.os.windows.cpp
│ │ │ │ │ ├── os_rw_lock_impl.hpp
│ │ │ │ │ ├── os_rw_lock_target_impl.os.generic.cpp
│ │ │ │ │ ├── os_rw_lock_target_impl.os.generic.hpp
│ │ │ │ │ ├── os_rw_lock_target_impl.os.horizon.cpp
│ │ │ │ │ ├── os_rw_lock_target_impl.os.horizon.hpp
│ │ │ │ │ ├── os_shared_memory_impl.hpp
│ │ │ │ │ ├── os_shared_memory_impl.os.horizon.cpp
│ │ │ │ │ ├── os_stack_guard_manager.hpp
│ │ │ │ │ ├── os_stack_guard_manager_impl.os.horizon.hpp
│ │ │ │ │ ├── os_stack_guard_manager_impl.os.linux.hpp
│ │ │ │ │ ├── os_stack_guard_manager_impl.os.macos.hpp
│ │ │ │ │ ├── os_stack_guard_manager_impl.os.windows.hpp
│ │ │ │ │ ├── os_stack_guard_manager_types.hpp
│ │ │ │ │ ├── os_thread_manager.cpp
│ │ │ │ │ ├── os_thread_manager.hpp
│ │ │ │ │ ├── os_thread_manager_impl.os.horizon.cpp
│ │ │ │ │ ├── os_thread_manager_impl.os.horizon.hpp
│ │ │ │ │ ├── os_thread_manager_impl.os.windows.cpp
│ │ │ │ │ ├── os_thread_manager_impl.os.windows.hpp
│ │ │ │ │ ├── os_thread_manager_impl.pthread.cpp
│ │ │ │ │ ├── os_thread_manager_impl.pthread.hpp
│ │ │ │ │ ├── os_thread_manager_impl.pthread.inc
│ │ │ │ │ ├── os_thread_manager_types.hpp
│ │ │ │ │ ├── os_tick_manager.hpp
│ │ │ │ │ ├── os_tick_manager_impl.cpp
│ │ │ │ │ ├── os_tick_manager_impl.hpp
│ │ │ │ │ ├── os_tick_manager_impl.os.horizon.hpp
│ │ │ │ │ ├── os_tick_manager_impl.os.windows.hpp
│ │ │ │ │ ├── os_tick_manager_impl.std_chrono.hpp
│ │ │ │ │ ├── os_timeout_helper.cpp
│ │ │ │ │ ├── os_timeout_helper.hpp
│ │ │ │ │ ├── os_timeout_helper_impl.os.horizon.cpp
│ │ │ │ │ ├── os_timeout_helper_impl.os.horizon.hpp
│ │ │ │ │ ├── os_timeout_helper_impl.os.linux.cpp
│ │ │ │ │ ├── os_timeout_helper_impl.os.linux.hpp
│ │ │ │ │ ├── os_timeout_helper_impl.os.macos.cpp
│ │ │ │ │ ├── os_timeout_helper_impl.os.macos.hpp
│ │ │ │ │ ├── os_timeout_helper_impl.os.windows.cpp
│ │ │ │ │ ├── os_timeout_helper_impl.os.windows.hpp
│ │ │ │ │ ├── os_timer_event_helper.cpp
│ │ │ │ │ ├── os_timer_event_helper.hpp
│ │ │ │ │ ├── os_tls_manager.cpp
│ │ │ │ │ ├── os_tls_manager.hpp
│ │ │ │ │ ├── os_tls_manager_types.hpp
│ │ │ │ │ ├── os_transfer_memory_impl.hpp
│ │ │ │ │ ├── os_transfer_memory_impl.os.horizon.cpp
│ │ │ │ │ ├── os_unsafe_memory_impl.hpp
│ │ │ │ │ ├── os_unsafe_memory_impl.os.horizon.cpp
│ │ │ │ │ ├── os_utility.cpp
│ │ │ │ │ ├── os_utility.hpp
│ │ │ │ │ ├── os_vamm_manager.cpp
│ │ │ │ │ ├── os_vamm_manager.hpp
│ │ │ │ │ ├── os_vamm_manager_impl.os.horizon.hpp
│ │ │ │ │ ├── os_vamm_manager_impl.os.linux.hpp
│ │ │ │ │ ├── os_vamm_manager_impl.os.macos.hpp
│ │ │ │ │ ├── os_vamm_manager_impl.os.windows.hpp
│ │ │ │ │ └── os_vamm_manager_types.hpp
│ │ │ │ ├── os_argument.cpp
│ │ │ │ ├── os_barrier.cpp
│ │ │ │ ├── os_busy_mutex.cpp
│ │ │ │ ├── os_cache.cpp
│ │ │ │ ├── os_condition_variable.cpp
│ │ │ │ ├── os_debug.cpp
│ │ │ │ ├── os_event.cpp
│ │ │ │ ├── os_insecure_memory.cpp
│ │ │ │ ├── os_interrupt_event.cpp
│ │ │ │ ├── os_io_region.cpp
│ │ │ │ ├── os_light_event.cpp
│ │ │ │ ├── os_light_message_queue.cpp
│ │ │ │ ├── os_light_semaphore.cpp
│ │ │ │ ├── os_memory_attribute.cpp
│ │ │ │ ├── os_memory_heap.cpp
│ │ │ │ ├── os_memory_permission.cpp
│ │ │ │ ├── os_message_queue.cpp
│ │ │ │ ├── os_multiple_wait.cpp
│ │ │ │ ├── os_mutex.cpp
│ │ │ │ ├── os_native_handle_api.cpp
│ │ │ │ ├── os_process_code_memory.cpp
│ │ │ │ ├── os_process_handle_api.cpp
│ │ │ │ ├── os_process_memory.cpp
│ │ │ │ ├── os_random.cpp
│ │ │ │ ├── os_rw_busy_mutex.cpp
│ │ │ │ ├── os_rw_lock.cpp
│ │ │ │ ├── os_sdk_condition_variable.cpp
│ │ │ │ ├── os_sdk_mutex.cpp
│ │ │ │ ├── os_sdk_recursive_mutex.cpp
│ │ │ │ ├── os_sdk_reply_and_receive.cpp
│ │ │ │ ├── os_sdk_thread_local_storage_api.cpp
│ │ │ │ ├── os_semaphore.cpp
│ │ │ │ ├── os_shared_memory.cpp
│ │ │ │ ├── os_system_event.cpp
│ │ │ │ ├── os_thread.cpp
│ │ │ │ ├── os_thread_local_storage_api.cpp
│ │ │ │ ├── os_tick.cpp
│ │ │ │ ├── os_timer_event.cpp
│ │ │ │ ├── os_transfer_memory.cpp
│ │ │ │ ├── os_unsafe_memory.cpp
│ │ │ │ └── os_virtual_address_memory.cpp
│ │ │ ├── osdbg/
│ │ │ │ ├── impl/
│ │ │ │ │ ├── osdbg_thread_info.generic.hpp
│ │ │ │ │ ├── osdbg_thread_info.os.horizon.cpp
│ │ │ │ │ ├── osdbg_thread_info.os.horizon.hpp
│ │ │ │ │ ├── osdbg_thread_local_region.os.horizon.cpp
│ │ │ │ │ ├── osdbg_thread_local_region.os.horizon.hpp
│ │ │ │ │ ├── osdbg_thread_type.os.horizon.hpp
│ │ │ │ │ └── osdbg_types.hpp
│ │ │ │ └── osdbg_thread.cpp
│ │ │ ├── patcher/
│ │ │ │ └── patcher_api.cpp
│ │ │ ├── pgl/
│ │ │ │ ├── pgl_remote_event_observer.hpp
│ │ │ │ ├── pgl_shell_api.cpp
│ │ │ │ └── srv/
│ │ │ │ ├── pgl_srv_api.cpp
│ │ │ │ ├── pgl_srv_shell.cpp
│ │ │ │ ├── pgl_srv_shell.hpp
│ │ │ │ ├── pgl_srv_shell_event_observer.cpp
│ │ │ │ ├── pgl_srv_shell_event_observer.hpp
│ │ │ │ ├── pgl_srv_shell_host_utils.cpp
│ │ │ │ ├── pgl_srv_shell_host_utils.hpp
│ │ │ │ ├── pgl_srv_shell_interface.cpp
│ │ │ │ └── pgl_srv_tipc_utils.hpp
│ │ │ ├── pinmux/
│ │ │ │ └── driver/
│ │ │ │ ├── board/
│ │ │ │ │ └── nintendo/
│ │ │ │ │ └── nx/
│ │ │ │ │ ├── pinmux_board_driver_api.cpp
│ │ │ │ │ ├── pinmux_board_driver_api.hpp
│ │ │ │ │ ├── pinmux_drive_pad_characters.inc
│ │ │ │ │ ├── pinmux_initial_drive_pad_config.inc
│ │ │ │ │ ├── pinmux_initial_drive_pad_config_hoag.inc
│ │ │ │ │ ├── pinmux_initial_pad_config_aula.inc
│ │ │ │ │ ├── pinmux_initial_pad_config_calcio.inc
│ │ │ │ │ ├── pinmux_initial_pad_config_hoag.inc
│ │ │ │ │ ├── pinmux_initial_pad_config_icosa.inc
│ │ │ │ │ ├── pinmux_initial_pad_config_iowa.inc
│ │ │ │ │ ├── pinmux_pad_characters.inc
│ │ │ │ │ ├── pinmux_pad_index.hpp
│ │ │ │ │ ├── pinmux_platform_pads.cpp
│ │ │ │ │ └── pinmux_platform_pads.hpp
│ │ │ │ ├── pinmux_driver_api.cpp
│ │ │ │ └── pinmux_select_board_impl.hpp
│ │ │ ├── pm/
│ │ │ │ ├── pm_ams.os.horizon.c
│ │ │ │ ├── pm_ams.os.horizon.h
│ │ │ │ ├── pm_boot_mode_api.cpp
│ │ │ │ ├── pm_dmnt_api.cpp
│ │ │ │ ├── pm_info_api.cpp
│ │ │ │ ├── pm_info_api_weak.cpp
│ │ │ │ └── pm_shell_api.cpp
│ │ │ ├── powctl/
│ │ │ │ ├── driver/
│ │ │ │ │ └── impl/
│ │ │ │ │ ├── powctl_charger_parameters.board.nintendo_nx.cpp
│ │ │ │ │ └── powctl_charger_parameters.board.nintendo_nx.inc
│ │ │ │ ├── impl/
│ │ │ │ │ ├── board/
│ │ │ │ │ │ └── nintendo/
│ │ │ │ │ │ └── nx/
│ │ │ │ │ │ ├── powctl_battery_driver.cpp
│ │ │ │ │ │ ├── powctl_battery_driver.hpp
│ │ │ │ │ │ ├── powctl_board_impl.cpp
│ │ │ │ │ │ ├── powctl_board_impl.hpp
│ │ │ │ │ │ ├── powctl_bq24193_driver.cpp
│ │ │ │ │ │ ├── powctl_bq24193_driver.hpp
│ │ │ │ │ │ ├── powctl_charger_driver.cpp
│ │ │ │ │ │ ├── powctl_charger_driver.hpp
│ │ │ │ │ │ ├── powctl_interrupt_event_handler.cpp
│ │ │ │ │ │ ├── powctl_interrupt_event_handler.hpp
│ │ │ │ │ │ ├── powctl_max17050_custom_parameters.inc
│ │ │ │ │ │ ├── powctl_max17050_driver.cpp
│ │ │ │ │ │ ├── powctl_max17050_driver.hpp
│ │ │ │ │ │ └── powctl_retry_helper.hpp
│ │ │ │ │ ├── powctl_device_management.cpp
│ │ │ │ │ ├── powctl_device_management.hpp
│ │ │ │ │ ├── powctl_i_power_control_driver.hpp
│ │ │ │ │ └── powctl_select_board_driver.hpp
│ │ │ │ ├── powctl_battery_api.cpp
│ │ │ │ ├── powctl_charger_api.cpp
│ │ │ │ ├── powctl_driver_api.cpp
│ │ │ │ └── powctl_session_api.cpp
│ │ │ ├── psc/
│ │ │ │ ├── psc_pm_module.os.horizon.cpp
│ │ │ │ └── psc_remote_pm_module.hpp
│ │ │ ├── pwm/
│ │ │ │ ├── driver/
│ │ │ │ │ ├── board/
│ │ │ │ │ │ └── nintendo/
│ │ │ │ │ │ └── nx/
│ │ │ │ │ │ ├── impl/
│ │ │ │ │ │ │ ├── pwm_impl_pwm_driver_api.cpp
│ │ │ │ │ │ │ ├── pwm_impl_pwm_driver_api.hpp
│ │ │ │ │ │ │ ├── pwm_pwm_driver_impl.cpp
│ │ │ │ │ │ │ └── pwm_pwm_driver_impl.hpp
│ │ │ │ │ │ └── pwm_driver_api.cpp
│ │ │ │ │ ├── impl/
│ │ │ │ │ │ ├── pwm_channel_session_impl.cpp
│ │ │ │ │ │ ├── pwm_channel_session_impl.hpp
│ │ │ │ │ │ ├── pwm_driver_core.cpp
│ │ │ │ │ │ └── pwm_driver_core.hpp
│ │ │ │ │ ├── pwm_driver_channel_api.cpp
│ │ │ │ │ ├── pwm_driver_client_api.cpp
│ │ │ │ │ └── pwm_driver_service_api.cpp
│ │ │ │ ├── pwm_api.cpp
│ │ │ │ └── server/
│ │ │ │ ├── pwm_server_api.cpp
│ │ │ │ ├── pwm_server_channel_session_impl.hpp
│ │ │ │ ├── pwm_server_manager_impl.cpp
│ │ │ │ └── pwm_server_manager_impl.hpp
│ │ │ ├── ro/
│ │ │ │ └── impl/
│ │ │ │ └── ro_ro_exception_info.os.horizon.cpp
│ │ │ ├── scs/
│ │ │ │ ├── scs_command_processor.cpp
│ │ │ │ ├── scs_server_manager.cpp
│ │ │ │ ├── scs_shell.cpp
│ │ │ │ ├── scs_shell_server.cpp
│ │ │ │ └── scs_tenv.cpp
│ │ │ ├── service_guard.h
│ │ │ ├── settings/
│ │ │ │ ├── impl/
│ │ │ │ │ ├── settings_configuration_id_impl.cpp
│ │ │ │ │ ├── settings_configuration_id_impl.hpp
│ │ │ │ │ ├── settings_error_report_impl.cpp
│ │ │ │ │ ├── settings_error_report_impl.hpp
│ │ │ │ │ ├── settings_firmware_version_impl.cpp
│ │ │ │ │ ├── settings_firmware_version_impl.hpp
│ │ │ │ │ ├── settings_key_value_store.cpp
│ │ │ │ │ ├── settings_key_value_store.hpp
│ │ │ │ │ ├── settings_platform_region_impl.cpp
│ │ │ │ │ ├── settings_platform_region_impl.hpp
│ │ │ │ │ ├── settings_product_model_impl.cpp
│ │ │ │ │ ├── settings_product_model_impl.hpp
│ │ │ │ │ ├── settings_region_impl.cpp
│ │ │ │ │ ├── settings_region_impl.hpp
│ │ │ │ │ ├── settings_serial_number_impl.cpp
│ │ │ │ │ ├── settings_serial_number_impl.hpp
│ │ │ │ │ ├── settings_spl.cpp
│ │ │ │ │ ├── settings_spl.hpp
│ │ │ │ │ ├── settings_static_object.hpp
│ │ │ │ │ ├── settings_system_data.cpp
│ │ │ │ │ ├── settings_system_data.hpp
│ │ │ │ │ ├── settings_system_save_data.cpp
│ │ │ │ │ └── settings_system_save_data.hpp
│ │ │ │ ├── settings_configuration_id.cpp
│ │ │ │ ├── settings_error_report.cpp
│ │ │ │ ├── settings_firmware_version.cpp
│ │ │ │ ├── settings_fwdbg_api.cpp
│ │ │ │ ├── settings_platform_region.cpp
│ │ │ │ ├── settings_product_model.cpp
│ │ │ │ ├── settings_region.cpp
│ │ │ │ └── settings_serial_number.cpp
│ │ │ ├── sf/
│ │ │ │ ├── cmif/
│ │ │ │ │ ├── sf_cmif_domain_manager.cpp
│ │ │ │ │ ├── sf_cmif_domain_service_object.cpp
│ │ │ │ │ ├── sf_cmif_inline_context.cpp
│ │ │ │ │ ├── sf_cmif_service_dispatch.cpp
│ │ │ │ │ └── sf_cmif_service_object_holder.cpp
│ │ │ │ ├── hipc/
│ │ │ │ │ ├── sf_hipc_api.os.generic.cpp
│ │ │ │ │ ├── sf_hipc_api.os.horizon.cpp
│ │ │ │ │ ├── sf_hipc_mitm_query_api.cpp
│ │ │ │ │ ├── sf_hipc_mitm_query_api.hpp
│ │ │ │ │ ├── sf_hipc_server_domain_session_manager.cpp
│ │ │ │ │ ├── sf_hipc_server_manager.cpp
│ │ │ │ │ ├── sf_hipc_server_session_manager.cpp
│ │ │ │ │ └── sf_i_hipc_manager.hpp
│ │ │ │ ├── sf_default_allocation_policy.cpp
│ │ │ │ └── sf_interface_id_for_debug_enforcement.os.horizon.cpp
│ │ │ ├── sm/
│ │ │ │ ├── sm_ams.os.horizon.c
│ │ │ │ ├── sm_ams.os.horizon.h
│ │ │ │ ├── sm_api.cpp
│ │ │ │ ├── sm_manager_api.cpp
│ │ │ │ ├── sm_mitm_api.cpp
│ │ │ │ ├── sm_utils.cpp
│ │ │ │ ├── sm_utils.hpp
│ │ │ │ ├── smm_ams.os.horizon.c
│ │ │ │ └── smm_ams.os.horizon.h
│ │ │ ├── socket/
│ │ │ │ ├── impl/
│ │ │ │ │ ├── socket_allocator.hpp
│ │ │ │ │ ├── socket_api.hpp
│ │ │ │ │ ├── socket_api.os.horizon.cpp
│ │ │ │ │ ├── socket_api.os.windows.cpp
│ │ │ │ │ └── socket_platform_types_translation.os.windows.cpp
│ │ │ │ └── socket_api.cpp
│ │ │ ├── spl/
│ │ │ │ ├── impl/
│ │ │ │ │ ├── spl_api_impl.cpp
│ │ │ │ │ ├── spl_ctr_drbg.hpp
│ │ │ │ │ ├── spl_device_address_mapper.hpp
│ │ │ │ │ └── spl_key_slot_cache.hpp
│ │ │ │ ├── smc/
│ │ │ │ │ ├── spl_secure_monitor_api.os.generic.cpp
│ │ │ │ │ └── spl_secure_monitor_api.os.horizon.cpp
│ │ │ │ ├── spl_api.os.generic.cpp
│ │ │ │ └── spl_api.os.horizon.cpp
│ │ │ ├── sprofile/
│ │ │ │ └── srv/
│ │ │ │ ├── sprofile_srv_api.cpp
│ │ │ │ ├── sprofile_srv_fs_utils.cpp
│ │ │ │ ├── sprofile_srv_fs_utils.hpp
│ │ │ │ ├── sprofile_srv_i_profile_controller_for_debug.hpp
│ │ │ │ ├── sprofile_srv_i_profile_importer.hpp
│ │ │ │ ├── sprofile_srv_i_profile_reader.hpp
│ │ │ │ ├── sprofile_srv_i_profile_update_observer.hpp
│ │ │ │ ├── sprofile_srv_i_service_for_bg_agent.hpp
│ │ │ │ ├── sprofile_srv_i_service_for_system_process.hpp
│ │ │ │ ├── sprofile_srv_i_service_getter.hpp
│ │ │ │ ├── sprofile_srv_profile_controller_for_debug_impl.cpp
│ │ │ │ ├── sprofile_srv_profile_controller_for_debug_impl.hpp
│ │ │ │ ├── sprofile_srv_profile_importer.hpp
│ │ │ │ ├── sprofile_srv_profile_importer_impl.cpp
│ │ │ │ ├── sprofile_srv_profile_importer_impl.hpp
│ │ │ │ ├── sprofile_srv_profile_manager.cpp
│ │ │ │ ├── sprofile_srv_profile_manager.hpp
│ │ │ │ ├── sprofile_srv_profile_reader_impl.cpp
│ │ │ │ ├── sprofile_srv_profile_reader_impl.hpp
│ │ │ │ ├── sprofile_srv_profile_update_observer_impl.cpp
│ │ │ │ ├── sprofile_srv_profile_update_observer_impl.hpp
│ │ │ │ ├── sprofile_srv_service_for_bg_agent.cpp
│ │ │ │ ├── sprofile_srv_service_for_bg_agent.hpp
│ │ │ │ ├── sprofile_srv_service_for_system_process.cpp
│ │ │ │ ├── sprofile_srv_service_for_system_process.hpp
│ │ │ │ ├── sprofile_srv_service_getter.cpp
│ │ │ │ ├── sprofile_srv_service_getter.hpp
│ │ │ │ └── sprofile_srv_types.hpp
│ │ │ ├── time/
│ │ │ │ ├── impl/
│ │ │ │ │ └── util/
│ │ │ │ │ └── time_impl_util_api.cpp
│ │ │ │ ├── time_api.cpp
│ │ │ │ ├── time_calendar_time.cpp
│ │ │ │ ├── time_standard_network_system_clock.cpp
│ │ │ │ ├── time_standard_steady_clock.cpp
│ │ │ │ ├── time_standard_user_system_clock.cpp
│ │ │ │ └── time_timezone_api.cpp
│ │ │ ├── updater/
│ │ │ │ ├── updater_api.cpp
│ │ │ │ ├── updater_bis_management.cpp
│ │ │ │ ├── updater_bis_management.hpp
│ │ │ │ ├── updater_bis_save.cpp
│ │ │ │ ├── updater_bis_save.hpp
│ │ │ │ ├── updater_files.cpp
│ │ │ │ ├── updater_files.hpp
│ │ │ │ ├── updater_paths.cpp
│ │ │ │ └── updater_paths.hpp
│ │ │ ├── usb/
│ │ │ │ ├── impl/
│ │ │ │ │ └── usb_util.hpp
│ │ │ │ ├── usb_device.cpp
│ │ │ │ ├── usb_remote_ds_endpoint.cpp
│ │ │ │ ├── usb_remote_ds_endpoint.hpp
│ │ │ │ ├── usb_remote_ds_interface.cpp
│ │ │ │ ├── usb_remote_ds_interface.hpp
│ │ │ │ ├── usb_remote_ds_root_session.cpp
│ │ │ │ ├── usb_remote_ds_root_session.hpp
│ │ │ │ ├── usb_remote_ds_service.cpp
│ │ │ │ └── usb_remote_ds_service.hpp
│ │ │ ├── util/
│ │ │ │ ├── ini.c
│ │ │ │ ├── ini.h
│ │ │ │ ├── lz4.c
│ │ │ │ ├── lz4.h
│ │ │ │ ├── util_compression.cpp
│ │ │ │ ├── util_ini.cpp
│ │ │ │ └── util_uuid_api.cpp
│ │ │ └── wec/
│ │ │ └── wec_api.cpp
│ │ └── stratosphere.specs
│ └── libvapours/
│ ├── include/
│ │ ├── vapours/
│ │ │ ├── allocator.hpp
│ │ │ ├── ams/
│ │ │ │ ├── ams_api_version.h
│ │ │ │ ├── ams_fatal_error_context.hpp
│ │ │ │ └── ams_target_firmware.h
│ │ │ ├── ams_version.h
│ │ │ ├── assert.hpp
│ │ │ ├── common.hpp
│ │ │ ├── compiler.hpp
│ │ │ ├── crypto/
│ │ │ │ ├── crypto_aes_128_cmac_generator.hpp
│ │ │ │ ├── crypto_aes_cbc_encryptor_decryptor.hpp
│ │ │ │ ├── crypto_aes_ccm_encryptor_decryptor.hpp
│ │ │ │ ├── crypto_aes_ctr_encryptor_decryptor.hpp
│ │ │ │ ├── crypto_aes_decryptor.hpp
│ │ │ │ ├── crypto_aes_encryptor.hpp
│ │ │ │ ├── crypto_aes_gcm_encryptor.hpp
│ │ │ │ ├── crypto_aes_xts_encryptor_decryptor.hpp
│ │ │ │ ├── crypto_cbc_decryptor.hpp
│ │ │ │ ├── crypto_cbc_encryptor.hpp
│ │ │ │ ├── crypto_ccm_decryptor.hpp
│ │ │ │ ├── crypto_ccm_encryptor.hpp
│ │ │ │ ├── crypto_cmac_generator.hpp
│ │ │ │ ├── crypto_csrng.hpp
│ │ │ │ ├── crypto_ctr_decryptor.hpp
│ │ │ │ ├── crypto_ctr_encryptor.hpp
│ │ │ │ ├── crypto_gcm_encryptor.hpp
│ │ │ │ ├── crypto_hmac_generator.hpp
│ │ │ │ ├── crypto_hmac_sha1_generator.hpp
│ │ │ │ ├── crypto_hmac_sha256_generator.hpp
│ │ │ │ ├── crypto_md5_generator.hpp
│ │ │ │ ├── crypto_memory_clear.hpp
│ │ │ │ ├── crypto_memory_compare.hpp
│ │ │ │ ├── crypto_rsa_calculator.hpp
│ │ │ │ ├── crypto_rsa_oaep_decryptor.hpp
│ │ │ │ ├── crypto_rsa_oaep_encryptor.hpp
│ │ │ │ ├── crypto_rsa_oaep_sha256_decoder.hpp
│ │ │ │ ├── crypto_rsa_oaep_sha256_decryptor.hpp
│ │ │ │ ├── crypto_rsa_oaep_sha256_encryptor.hpp
│ │ │ │ ├── crypto_rsa_pkcs1_sha256_verifier.hpp
│ │ │ │ ├── crypto_rsa_pkcs1_verifier.hpp
│ │ │ │ ├── crypto_rsa_pss_sha256_verifier.hpp
│ │ │ │ ├── crypto_rsa_pss_verifier.hpp
│ │ │ │ ├── crypto_sha1_generator.hpp
│ │ │ │ ├── crypto_sha256_generator.hpp
│ │ │ │ ├── crypto_sha3_generator.hpp
│ │ │ │ ├── crypto_xts_decryptor.hpp
│ │ │ │ ├── crypto_xts_encryptor.hpp
│ │ │ │ └── impl/
│ │ │ │ ├── crypto_aes_impl.hpp
│ │ │ │ ├── crypto_bignum.hpp
│ │ │ │ ├── crypto_block_cipher.hpp
│ │ │ │ ├── crypto_cbc_mac_impl.hpp
│ │ │ │ ├── crypto_cbc_mode_impl.hpp
│ │ │ │ ├── crypto_ccm_mode_impl.hpp
│ │ │ │ ├── crypto_cmac_impl.hpp
│ │ │ │ ├── crypto_ctr_mode_impl.hpp
│ │ │ │ ├── crypto_gcm_mode_impl.hpp
│ │ │ │ ├── crypto_hash_function.hpp
│ │ │ │ ├── crypto_hmac_impl.hpp
│ │ │ │ ├── crypto_md5_impl.hpp
│ │ │ │ ├── crypto_rsa_oaep_impl.hpp
│ │ │ │ ├── crypto_rsa_pkcs1_impl.hpp
│ │ │ │ ├── crypto_rsa_pss_impl.hpp
│ │ │ │ ├── crypto_sha1_impl.hpp
│ │ │ │ ├── crypto_sha256_impl.hpp
│ │ │ │ ├── crypto_sha256_impl_constexpr.hpp
│ │ │ │ ├── crypto_sha3_impl.hpp
│ │ │ │ └── crypto_xts_mode_impl.hpp
│ │ │ ├── crypto.hpp
│ │ │ ├── dd/
│ │ │ │ ├── dd_cache.hpp
│ │ │ │ ├── dd_common_types.hpp
│ │ │ │ └── dd_io_mapping.hpp
│ │ │ ├── dd.hpp
│ │ │ ├── defines.hpp
│ │ │ ├── device_code.hpp
│ │ │ ├── freebsd/
│ │ │ │ └── tree.hpp
│ │ │ ├── impl/
│ │ │ │ ├── compiler_impl.clang.hpp
│ │ │ │ └── compiler_impl.gcc.hpp
│ │ │ ├── includes.hpp
│ │ │ ├── literals.hpp
│ │ │ ├── reg.hpp
│ │ │ ├── results/
│ │ │ │ ├── cal_results.hpp
│ │ │ │ ├── capsrv_results.hpp
│ │ │ │ ├── creport_results.hpp
│ │ │ │ ├── cs_results.hpp
│ │ │ │ ├── dd_results.hpp
│ │ │ │ ├── ddsf_results.hpp
│ │ │ │ ├── debug_results.hpp
│ │ │ │ ├── dmnt_results.hpp
│ │ │ │ ├── erpt_results.hpp
│ │ │ │ ├── err_results.hpp
│ │ │ │ ├── exosphere_results.hpp
│ │ │ │ ├── fatal_results.hpp
│ │ │ │ ├── fs_results.hpp
│ │ │ │ ├── gpio_results.hpp
│ │ │ │ ├── hipc_results.hpp
│ │ │ │ ├── htc_results.hpp
│ │ │ │ ├── htcfs_results.hpp
│ │ │ │ ├── htclow_results.hpp
│ │ │ │ ├── htcs_results.hpp
│ │ │ │ ├── i2c_results.hpp
│ │ │ │ ├── kvdb_results.hpp
│ │ │ │ ├── loader_results.hpp
│ │ │ │ ├── lr_results.hpp
│ │ │ │ ├── ncm_results.hpp
│ │ │ │ ├── nim_results.hpp
│ │ │ │ ├── ns_results.hpp
│ │ │ │ ├── os_results.hpp
│ │ │ │ ├── osdbg_results.hpp
│ │ │ │ ├── pcv_results.hpp
│ │ │ │ ├── pgl_results.hpp
│ │ │ │ ├── pm_results.hpp
│ │ │ │ ├── powctl_results.hpp
│ │ │ │ ├── psc_results.hpp
│ │ │ │ ├── pwm_results.hpp
│ │ │ │ ├── results_common.hpp
│ │ │ │ ├── ro_results.hpp
│ │ │ │ ├── scs_results.hpp
│ │ │ │ ├── sdmmc_results.hpp
│ │ │ │ ├── settings_results.hpp
│ │ │ │ ├── sf_results.hpp
│ │ │ │ ├── sm_results.hpp
│ │ │ │ ├── socket_results.hpp
│ │ │ │ ├── spl_results.hpp
│ │ │ │ ├── sprofile_results.hpp
│ │ │ │ ├── svc_results.hpp
│ │ │ │ ├── time_results.hpp
│ │ │ │ ├── tipc_results.hpp
│ │ │ │ ├── tma_results.hpp
│ │ │ │ ├── updater_results.hpp
│ │ │ │ ├── usb_results.hpp
│ │ │ │ └── vi_results.hpp
│ │ │ ├── results.hpp
│ │ │ ├── sdmmc/
│ │ │ │ ├── sdmmc_build_config.hpp
│ │ │ │ ├── sdmmc_common.hpp
│ │ │ │ ├── sdmmc_gc_asic.hpp
│ │ │ │ ├── sdmmc_mmc.hpp
│ │ │ │ └── sdmmc_sd_card.hpp
│ │ │ ├── sdmmc.hpp
│ │ │ ├── span.hpp
│ │ │ ├── svc/
│ │ │ │ ├── arch/
│ │ │ │ │ ├── arm/
│ │ │ │ │ │ └── svc_thread_local_region.hpp
│ │ │ │ │ └── arm64/
│ │ │ │ │ └── svc_thread_local_region.hpp
│ │ │ │ ├── board/
│ │ │ │ │ ├── generic/
│ │ │ │ │ │ └── svc_device_name.hpp
│ │ │ │ │ ├── nintendo/
│ │ │ │ │ │ └── nx/
│ │ │ │ │ │ ├── svc_device_name.hpp
│ │ │ │ │ │ ├── svc_hardware_constants.hpp
│ │ │ │ │ │ └── svc_io_pool_type.hpp
│ │ │ │ │ └── qemu/
│ │ │ │ │ └── virt/
│ │ │ │ │ └── svc_hardware_constants.hpp
│ │ │ │ ├── codegen/
│ │ │ │ │ ├── impl/
│ │ │ │ │ │ ├── svc_codegen_impl_code_generator.hpp
│ │ │ │ │ │ ├── svc_codegen_impl_common.hpp
│ │ │ │ │ │ ├── svc_codegen_impl_kernel_svc_wrapper.hpp
│ │ │ │ │ │ ├── svc_codegen_impl_layout.hpp
│ │ │ │ │ │ ├── svc_codegen_impl_layout_conversion.hpp
│ │ │ │ │ │ ├── svc_codegen_impl_meta_code.hpp
│ │ │ │ │ │ └── svc_codegen_impl_parameter.hpp
│ │ │ │ │ └── svc_codegen_kernel_svc_wrapper.hpp
│ │ │ │ ├── ipc/
│ │ │ │ │ └── svc_message_buffer.hpp
│ │ │ │ ├── svc_codegen.hpp
│ │ │ │ ├── svc_common.hpp
│ │ │ │ ├── svc_definition_macro.hpp
│ │ │ │ ├── svc_definitions.hpp
│ │ │ │ ├── svc_memory_map.hpp
│ │ │ │ ├── svc_select_device_name.hpp
│ │ │ │ ├── svc_select_hardware_constants.hpp
│ │ │ │ ├── svc_select_io_pool_type.hpp
│ │ │ │ ├── svc_select_thread_local_region.hpp
│ │ │ │ ├── svc_tick.hpp
│ │ │ │ ├── svc_types.hpp
│ │ │ │ ├── svc_types_base.hpp
│ │ │ │ ├── svc_types_common.hpp
│ │ │ │ ├── svc_types_dd.hpp
│ │ │ │ ├── svc_types_dmnt.hpp
│ │ │ │ ├── svc_types_priv.hpp
│ │ │ │ └── svc_version.hpp
│ │ │ ├── svc.hpp
│ │ │ ├── tegra/
│ │ │ │ ├── tegra_ahb_arbc.hpp
│ │ │ │ ├── tegra_apb_misc.hpp
│ │ │ │ ├── tegra_avp_cache.hpp
│ │ │ │ ├── tegra_clkrst.hpp
│ │ │ │ ├── tegra_emc.hpp
│ │ │ │ ├── tegra_evp.hpp
│ │ │ │ ├── tegra_flow_ctlr.hpp
│ │ │ │ ├── tegra_i2c.hpp
│ │ │ │ ├── tegra_i2s.hpp
│ │ │ │ ├── tegra_ictlr.hpp
│ │ │ │ ├── tegra_mc.hpp
│ │ │ │ ├── tegra_mipi_cal.hpp
│ │ │ │ ├── tegra_mselect.hpp
│ │ │ │ ├── tegra_pg_up.hpp
│ │ │ │ ├── tegra_pinmux.hpp
│ │ │ │ ├── tegra_pmc.hpp
│ │ │ │ ├── tegra_pwm.hpp
│ │ │ │ ├── tegra_sb.hpp
│ │ │ │ ├── tegra_sysctr0.hpp
│ │ │ │ └── tegra_timer.hpp
│ │ │ ├── tegra.hpp
│ │ │ ├── timespan.hpp
│ │ │ ├── types.hpp
│ │ │ ├── util/
│ │ │ │ ├── arch/
│ │ │ │ │ ├── arm64/
│ │ │ │ │ │ └── util_atomic.hpp
│ │ │ │ │ └── generic/
│ │ │ │ │ └── util_atomic.hpp
│ │ │ │ ├── impl/
│ │ │ │ │ ├── util_available_index_finder.hpp
│ │ │ │ │ └── util_enable_copy_move.hpp
│ │ │ │ ├── util_aligned_buffer.hpp
│ │ │ │ ├── util_alignment.hpp
│ │ │ │ ├── util_atomic.hpp
│ │ │ │ ├── util_bitflagset.hpp
│ │ │ │ ├── util_bitpack.hpp
│ │ │ │ ├── util_bitset.hpp
│ │ │ │ ├── util_bitutil.hpp
│ │ │ │ ├── util_bounded_map.hpp
│ │ │ │ ├── util_character_encoding.hpp
│ │ │ │ ├── util_endian.hpp
│ │ │ │ ├── util_enum.hpp
│ │ │ │ ├── util_exchange.hpp
│ │ │ │ ├── util_fixed_map.hpp
│ │ │ │ ├── util_fixed_set.hpp
│ │ │ │ ├── util_fixed_tree.hpp
│ │ │ │ ├── util_format_string.hpp
│ │ │ │ ├── util_fourcc.hpp
│ │ │ │ ├── util_function_local_static.hpp
│ │ │ │ ├── util_i_function.hpp
│ │ │ │ ├── util_in_place.hpp
│ │ │ │ ├── util_int_util.hpp
│ │ │ │ ├── util_intrusive_list.hpp
│ │ │ │ ├── util_intrusive_red_black_tree.hpp
│ │ │ │ ├── util_mutex_utils.hpp
│ │ │ │ ├── util_optional.hpp
│ │ │ │ ├── util_overlap.hpp
│ │ │ │ ├── util_parent_of_member.hpp
│ │ │ │ ├── util_pointer_util.hpp
│ │ │ │ ├── util_range.hpp
│ │ │ │ ├── util_scope_guard.hpp
│ │ │ │ ├── util_size.hpp
│ │ │ │ ├── util_specialization_of.hpp
│ │ │ │ ├── util_string_util.hpp
│ │ │ │ ├── util_string_view.hpp
│ │ │ │ ├── util_timer.hpp
│ │ │ │ ├── util_tinymt.hpp
│ │ │ │ ├── util_type_traits.hpp
│ │ │ │ ├── util_typed_storage.hpp
│ │ │ │ ├── util_utf8_string_util.hpp
│ │ │ │ ├── util_uuid.hpp
│ │ │ │ └── util_variadic.hpp
│ │ │ └── util.hpp
│ │ └── vapours.hpp
│ └── source/
│ ├── crypto/
│ │ ├── crypto_aes_cbc_encryptor_decryptor.cpp
│ │ ├── crypto_aes_ctr_encryptor_decryptor.cpp
│ │ ├── crypto_hmac_sha1_generator.cpp
│ │ ├── crypto_hmac_sha256_generator.cpp
│ │ ├── crypto_md5_generator.cpp
│ │ ├── crypto_memory_clear.cpp
│ │ ├── crypto_memory_compare.arch.arm.cpp
│ │ ├── crypto_memory_compare.arch.arm64.cpp
│ │ ├── crypto_memory_compare.arch.generic.cpp
│ │ ├── crypto_sha1_generator.cpp
│ │ ├── crypto_sha256_generator.cpp
│ │ └── impl/
│ │ ├── crypto_aes_impl.arch.arm64.cpp
│ │ ├── crypto_aes_impl.arch.x64.cpp
│ │ ├── crypto_aes_impl.arch.x64.hpp
│ │ ├── crypto_bignum.cpp
│ │ ├── crypto_bignum_operations.cpp
│ │ ├── crypto_bignum_operations_asm.arch.arm64.s
│ │ ├── crypto_cbc_mac_impl.arch.generic.cpp
│ │ ├── crypto_cbc_mac_impl.cpp
│ │ ├── crypto_ctr_mode_impl.arch.arm64.cpp
│ │ ├── crypto_ctr_mode_impl.arch.x64.cpp
│ │ ├── crypto_gcm_mode_impl.arch.arm64.cpp
│ │ ├── crypto_md5_impl.cpp
│ │ ├── crypto_sha1_impl.arch.arm64.cpp
│ │ ├── crypto_sha1_impl.arch.generic.cpp
│ │ ├── crypto_sha256_impl.arch.arm64.cpp
│ │ ├── crypto_sha256_impl.arch.generic.cpp
│ │ ├── crypto_sha3_impl.cpp
│ │ ├── crypto_update_impl.hpp
│ │ ├── crypto_xts_mode_impl.arch.arm64.cpp
│ │ ├── crypto_xts_mode_impl.arch.generic.cpp
│ │ └── crypto_xts_mode_impl.cpp
│ ├── dd/
│ │ ├── dd_cache.cpp
│ │ ├── dd_io_mapping.os.horizon.cpp
│ │ └── impl/
│ │ ├── dd_cache_impl.os.horizon.hpp
│ │ ├── dd_cache_impl.os.linux.hpp
│ │ ├── dd_cache_impl.os.macos.hpp
│ │ ├── dd_cache_impl.os.windows.hpp
│ │ └── dd_select_cache_impl.hpp
│ ├── result/
│ │ └── result_get_name.cpp
│ ├── sdmmc/
│ │ ├── impl/
│ │ │ ├── sdmmc_base_device_accessor.cpp
│ │ │ ├── sdmmc_base_device_accessor.hpp
│ │ │ ├── sdmmc_clock_reset_controller.board.nintendo_nx.cpp
│ │ │ ├── sdmmc_clock_reset_controller.hpp
│ │ │ ├── sdmmc_clock_reset_controller.pcv.board.nintendo_nx.cpp
│ │ │ ├── sdmmc_clock_reset_controller.pcv.board.nintendo_nx.hpp
│ │ │ ├── sdmmc_clock_reset_controller.reg.board.nintendo_nx.cpp
│ │ │ ├── sdmmc_clock_reset_controller.reg.board.nintendo_nx.hpp
│ │ │ ├── sdmmc_device_detector.cpp
│ │ │ ├── sdmmc_device_detector.hpp
│ │ │ ├── sdmmc_gc_asic_device_accessor.cpp
│ │ │ ├── sdmmc_gc_asic_device_accessor.hpp
│ │ │ ├── sdmmc_i_device_accessor.hpp
│ │ │ ├── sdmmc_i_host_controller.hpp
│ │ │ ├── sdmmc_io_impl.board.nintendo_nx.cpp
│ │ │ ├── sdmmc_io_impl.board.nintendo_nx.hpp
│ │ │ ├── sdmmc_mmc_device_accessor.cpp
│ │ │ ├── sdmmc_mmc_device_accessor.hpp
│ │ │ ├── sdmmc_port_gc_asic0.board.nintendo_nx.cpp
│ │ │ ├── sdmmc_port_gc_asic0.hpp
│ │ │ ├── sdmmc_port_mmc0.board.nintendo_nx.cpp
│ │ │ ├── sdmmc_port_mmc0.hpp
│ │ │ ├── sdmmc_port_sd_card0.board.nintendo_nx.cpp
│ │ │ ├── sdmmc_port_sd_card0.hpp
│ │ │ ├── sdmmc_sd_card_device_accessor.cpp
│ │ │ ├── sdmmc_sd_card_device_accessor.hpp
│ │ │ ├── sdmmc_sd_host_standard_controller.cpp
│ │ │ ├── sdmmc_sd_host_standard_controller.hpp
│ │ │ ├── sdmmc_sd_host_standard_registers.hpp
│ │ │ ├── sdmmc_sdmmc_controller.board.nintendo_nx.cpp
│ │ │ ├── sdmmc_sdmmc_controller.board.nintendo_nx.hpp
│ │ │ ├── sdmmc_select_sdmmc_controller.hpp
│ │ │ ├── sdmmc_timer.cpp
│ │ │ └── sdmmc_timer.hpp
│ │ ├── sdmmc_common.cpp
│ │ ├── sdmmc_gc_asic.cpp
│ │ ├── sdmmc_mmc.cpp
│ │ └── sdmmc_sd_card.cpp
│ ├── test/
│ │ └── test_intrusive_red_black_tree.cpp
│ └── util/
│ ├── util_format_string.cpp
│ └── util_utf8_string_util.cpp
├── mesosphere/
│ ├── Makefile
│ ├── build_mesosphere.py
│ ├── kernel/
│ │ ├── Makefile
│ │ ├── kernel.ld
│ │ ├── kernel.mk
│ │ ├── kernel.specs
│ │ └── source/
│ │ ├── arch/
│ │ │ └── arm64/
│ │ │ ├── exception_vectors.s
│ │ │ ├── init/
│ │ │ │ ├── kern_init_core.cpp
│ │ │ │ └── start.s
│ │ │ ├── kern_exception_handlers_asm.s
│ │ │ ├── kern_k_scheduler_asm.s
│ │ │ ├── kern_k_thread_context_asm.s
│ │ │ └── svc/
│ │ │ └── kern_svc_tables_asm.s
│ │ ├── kern_kernel_instantiations.cpp
│ │ └── libc/
│ │ ├── arch/
│ │ │ └── arm64/
│ │ │ ├── asmdefs.h
│ │ │ ├── memcmp.arch.arm64.s
│ │ │ ├── memcpy.arch.arm64.s
│ │ │ └── memset.arch.arm64.s
│ │ ├── kern_env.cpp
│ │ ├── kern_libc_config.arch.arm64.h
│ │ ├── kern_libc_config.h
│ │ └── kern_libc_generic.c
│ ├── kernel_ldr/
│ │ ├── Makefile
│ │ ├── kernel_ldr.ld
│ │ ├── kernel_ldr.mk
│ │ ├── kernel_ldr.specs
│ │ └── source/
│ │ ├── arch/
│ │ │ └── arm64/
│ │ │ ├── exceptions.s
│ │ │ ├── kern_init_loader_asm.s
│ │ │ └── start.s
│ │ ├── board/
│ │ │ └── nintendo/
│ │ │ └── nx/
│ │ │ └── kern_init_loader_board_setup.cpp
│ │ ├── kern_init_loader.cpp
│ │ ├── kern_init_loader_asm.hpp
│ │ ├── kern_init_loader_board_default_setup.arch.arm64.cpp
│ │ ├── kern_init_loader_board_setup.hpp
│ │ ├── kern_loader_panic.cpp
│ │ └── libc/
│ │ ├── kern_libc_config.arch.arm64.h
│ │ ├── kern_libc_config.h
│ │ └── kern_libc_generic.c
│ └── mesosphere.mk
├── stratosphere/
│ ├── LogManager/
│ │ ├── LogManager.json
│ │ ├── Makefile
│ │ ├── source/
│ │ │ └── lm_main.cpp
│ │ └── system_module.mk
│ ├── Makefile
│ ├── TioServer/
│ │ ├── Makefile
│ │ ├── TioServer.json
│ │ ├── source/
│ │ │ ├── tio_file_server.cpp
│ │ │ ├── tio_file_server.hpp
│ │ │ ├── tio_file_server_htcs_server.cpp
│ │ │ ├── tio_file_server_htcs_server.hpp
│ │ │ ├── tio_file_server_packet.hpp
│ │ │ ├── tio_file_server_processor.cpp
│ │ │ ├── tio_file_server_processor.hpp
│ │ │ ├── tio_main.cpp
│ │ │ ├── tio_sd_card_observer.cpp
│ │ │ └── tio_sd_card_observer.hpp
│ │ └── system_module.mk
│ ├── ams_mitm/
│ │ ├── Makefile
│ │ ├── ams_mitm.json
│ │ ├── source/
│ │ │ ├── amsmitm_fs_utils.cpp
│ │ │ ├── amsmitm_fs_utils.hpp
│ │ │ ├── amsmitm_initialization.cpp
│ │ │ ├── amsmitm_initialization.hpp
│ │ │ ├── amsmitm_main.cpp
│ │ │ ├── amsmitm_module.hpp
│ │ │ ├── amsmitm_module_management.cpp
│ │ │ ├── amsmitm_module_management.hpp
│ │ │ ├── amsmitm_prodinfo_utils.cpp
│ │ │ ├── amsmitm_prodinfo_utils.hpp
│ │ │ ├── bpc_mitm/
│ │ │ │ ├── bpc_ams_module.cpp
│ │ │ │ ├── bpc_ams_module.hpp
│ │ │ │ ├── bpc_ams_power_utils.cpp
│ │ │ │ ├── bpc_ams_power_utils.hpp
│ │ │ │ ├── bpc_ams_service.cpp
│ │ │ │ ├── bpc_ams_service.hpp
│ │ │ │ ├── bpc_mitm_service.cpp
│ │ │ │ ├── bpc_mitm_service.hpp
│ │ │ │ ├── bpcmitm_module.cpp
│ │ │ │ └── bpcmitm_module.hpp
│ │ │ ├── dns_mitm/
│ │ │ │ ├── dnsmitm_debug.cpp
│ │ │ │ ├── dnsmitm_debug.hpp
│ │ │ │ ├── dnsmitm_host_redirection.cpp
│ │ │ │ ├── dnsmitm_host_redirection.hpp
│ │ │ │ ├── dnsmitm_module.cpp
│ │ │ │ ├── dnsmitm_module.hpp
│ │ │ │ ├── dnsmitm_resolver_impl.cpp
│ │ │ │ ├── dnsmitm_resolver_impl.hpp
│ │ │ │ ├── serializer/
│ │ │ │ │ ├── serializer.cpp
│ │ │ │ │ ├── serializer.hpp
│ │ │ │ │ ├── serializer_impls_addrinfo.cpp
│ │ │ │ │ ├── serializer_impls_hostent.cpp
│ │ │ │ │ ├── serializer_impls_in_addr.cpp
│ │ │ │ │ ├── serializer_impls_ints.cpp
│ │ │ │ │ ├── serializer_impls_sockaddrin_4.cpp
│ │ │ │ │ ├── serializer_impls_sockaddrin_6.cpp
│ │ │ │ │ └── serializer_impls_string.cpp
│ │ │ │ ├── sfdnsres_shim.c
│ │ │ │ ├── sfdnsres_shim.h
│ │ │ │ └── socket_allocator.hpp
│ │ │ ├── fs_mitm/
│ │ │ │ ├── fs_mitm_service.cpp
│ │ │ │ ├── fs_mitm_service.hpp
│ │ │ │ ├── fs_shim.c
│ │ │ │ ├── fs_shim.h
│ │ │ │ ├── fsmitm_boot0storage.cpp
│ │ │ │ ├── fsmitm_boot0storage.hpp
│ │ │ │ ├── fsmitm_calibration_binary_storage.cpp
│ │ │ │ ├── fsmitm_calibration_binary_storage.hpp
│ │ │ │ ├── fsmitm_layered_romfs_storage.cpp
│ │ │ │ ├── fsmitm_layered_romfs_storage.hpp
│ │ │ │ ├── fsmitm_module.cpp
│ │ │ │ ├── fsmitm_module.hpp
│ │ │ │ ├── fsmitm_readonly_layered_filesystem.hpp
│ │ │ │ ├── fsmitm_romfs.cpp
│ │ │ │ ├── fsmitm_romfs.hpp
│ │ │ │ ├── fsmitm_save_utils.cpp
│ │ │ │ ├── fsmitm_save_utils.hpp
│ │ │ │ └── memlet/
│ │ │ │ ├── memlet.c
│ │ │ │ ├── memlet.h
│ │ │ │ └── service_guard.h
│ │ │ ├── mitm_pm/
│ │ │ │ ├── mitm_pm_module.cpp
│ │ │ │ ├── mitm_pm_module.hpp
│ │ │ │ ├── mitm_pm_service.cpp
│ │ │ │ └── mitm_pm_service.hpp
│ │ │ ├── ns_mitm/
│ │ │ │ ├── ns_am_mitm_service.cpp
│ │ │ │ ├── ns_am_mitm_service.hpp
│ │ │ │ ├── ns_shim.c
│ │ │ │ ├── ns_shim.h
│ │ │ │ ├── ns_web_mitm_service.cpp
│ │ │ │ ├── ns_web_mitm_service.hpp
│ │ │ │ ├── nsmitm_module.cpp
│ │ │ │ └── nsmitm_module.hpp
│ │ │ ├── set_mitm/
│ │ │ │ ├── set_mitm_service.cpp
│ │ │ │ ├── set_mitm_service.hpp
│ │ │ │ ├── set_shim.c
│ │ │ │ ├── set_shim.h
│ │ │ │ ├── setmitm_module.cpp
│ │ │ │ ├── setmitm_module.hpp
│ │ │ │ ├── setsys_mitm_service.cpp
│ │ │ │ ├── setsys_mitm_service.hpp
│ │ │ │ ├── setsys_shim.c
│ │ │ │ ├── setsys_shim.h
│ │ │ │ ├── settings_fwdbg_api_override.cpp
│ │ │ │ ├── settings_sd_kvs.cpp
│ │ │ │ └── settings_sd_kvs.hpp
│ │ │ └── sysupdater/
│ │ │ ├── sysupdater_apply_manager.cpp
│ │ │ ├── sysupdater_apply_manager.hpp
│ │ │ ├── sysupdater_async_impl.cpp
│ │ │ ├── sysupdater_async_impl.hpp
│ │ │ ├── sysupdater_async_thread_allocator.cpp
│ │ │ ├── sysupdater_async_thread_allocator.hpp
│ │ │ ├── sysupdater_fs_utils.cpp
│ │ │ ├── sysupdater_fs_utils.hpp
│ │ │ ├── sysupdater_module.cpp
│ │ │ ├── sysupdater_module.hpp
│ │ │ ├── sysupdater_service.cpp
│ │ │ ├── sysupdater_service.hpp
│ │ │ ├── sysupdater_thread_allocator.cpp
│ │ │ └── sysupdater_thread_allocator.hpp
│ │ └── system_module.mk
│ ├── boot/
│ │ ├── Makefile
│ │ ├── boot.json
│ │ ├── source/
│ │ │ ├── api_overrides/
│ │ │ │ ├── pcv_clkrst_api_for_boot.board.nintendo_nx.cpp
│ │ │ │ └── regulator_api_for_boot.cpp
│ │ │ ├── boot_battery_driver.hpp
│ │ │ ├── boot_battery_icon_charging.inc
│ │ │ ├── boot_battery_icon_charging_red.inc
│ │ │ ├── boot_battery_icon_low.inc
│ │ │ ├── boot_battery_icons.cpp
│ │ │ ├── boot_battery_icons.hpp
│ │ │ ├── boot_boot_reason.cpp
│ │ │ ├── boot_boot_reason.hpp
│ │ │ ├── boot_change_voltage.cpp
│ │ │ ├── boot_change_voltage.hpp
│ │ │ ├── boot_charger_driver.hpp
│ │ │ ├── boot_check_battery.cpp
│ │ │ ├── boot_check_battery.hpp
│ │ │ ├── boot_check_clock.cpp
│ │ │ ├── boot_check_clock.hpp
│ │ │ ├── boot_clock_initial_configuration.cpp
│ │ │ ├── boot_clock_initial_configuration.hpp
│ │ │ ├── boot_display.cpp
│ │ │ ├── boot_display.hpp
│ │ │ ├── boot_display_config.inc
│ │ │ ├── boot_driver_management.cpp
│ │ │ ├── boot_driver_management.hpp
│ │ │ ├── boot_fan_enable.cpp
│ │ │ ├── boot_fan_enable.hpp
│ │ │ ├── boot_i2c_utils.cpp
│ │ │ ├── boot_i2c_utils.hpp
│ │ │ ├── boot_main.cpp
│ │ │ ├── boot_pinmux_initial_configuration.cpp
│ │ │ ├── boot_pinmux_initial_configuration.hpp
│ │ │ ├── boot_pmic_driver.cpp
│ │ │ ├── boot_pmic_driver.hpp
│ │ │ ├── boot_power_utils.cpp
│ │ │ ├── boot_power_utils.hpp
│ │ │ ├── boot_registers_di.hpp
│ │ │ ├── boot_repair_boot_images.cpp
│ │ │ ├── boot_repair_boot_images.hpp
│ │ │ ├── boot_rtc_driver.cpp
│ │ │ ├── boot_rtc_driver.hpp
│ │ │ ├── boot_splash_screen.cpp
│ │ │ ├── boot_splash_screen.hpp
│ │ │ ├── boot_splash_screen_notext.inc
│ │ │ └── boot_splash_screen_text.inc
│ │ └── system_module.mk
│ ├── boot2/
│ │ ├── Makefile
│ │ ├── boot2.json
│ │ ├── source/
│ │ │ └── boot2_main.cpp
│ │ └── system_module.mk
│ ├── creport/
│ │ ├── Makefile
│ │ ├── creport.json
│ │ ├── source/
│ │ │ ├── creport_crash_report.cpp
│ │ │ ├── creport_crash_report.hpp
│ │ │ ├── creport_main.cpp
│ │ │ ├── creport_modules.cpp
│ │ │ ├── creport_modules.hpp
│ │ │ ├── creport_scoped_file.cpp
│ │ │ ├── creport_scoped_file.hpp
│ │ │ ├── creport_threads.cpp
│ │ │ ├── creport_threads.hpp
│ │ │ ├── creport_utils.cpp
│ │ │ └── creport_utils.hpp
│ │ └── system_module.mk
│ ├── cs/
│ │ ├── Makefile
│ │ ├── cs.json
│ │ ├── source/
│ │ │ └── cs_main.cpp
│ │ └── system_module.mk
│ ├── dmnt/
│ │ ├── Makefile
│ │ ├── dmnt.json
│ │ ├── source/
│ │ │ ├── cheat/
│ │ │ │ ├── dmnt_cheat_service.cpp
│ │ │ │ ├── dmnt_cheat_service.hpp
│ │ │ │ └── impl/
│ │ │ │ ├── dmnt_cheat_api.cpp
│ │ │ │ ├── dmnt_cheat_api.hpp
│ │ │ │ ├── dmnt_cheat_debug_events_manager.cpp
│ │ │ │ ├── dmnt_cheat_debug_events_manager.hpp
│ │ │ │ ├── dmnt_cheat_vm.cpp
│ │ │ │ └── dmnt_cheat_vm.hpp
│ │ │ └── dmnt_main.cpp
│ │ └── system_module.mk
│ ├── dmnt.gen2/
│ │ ├── Makefile
│ │ ├── dmnt.gen2.json
│ │ ├── source/
│ │ │ ├── dmnt2_breakpoint_manager.cpp
│ │ │ ├── dmnt2_breakpoint_manager.hpp
│ │ │ ├── dmnt2_breakpoint_manager_base.cpp
│ │ │ ├── dmnt2_breakpoint_manager_base.hpp
│ │ │ ├── dmnt2_debug_log.cpp
│ │ │ ├── dmnt2_debug_log.hpp
│ │ │ ├── dmnt2_debug_process.cpp
│ │ │ ├── dmnt2_debug_process.hpp
│ │ │ ├── dmnt2_gdb_packet_io.cpp
│ │ │ ├── dmnt2_gdb_packet_io.hpp
│ │ │ ├── dmnt2_gdb_server.cpp
│ │ │ ├── dmnt2_gdb_server.hpp
│ │ │ ├── dmnt2_gdb_server_impl.cpp
│ │ │ ├── dmnt2_gdb_server_impl.hpp
│ │ │ ├── dmnt2_gdb_signal.hpp
│ │ │ ├── dmnt2_hardware_breakpoint.cpp
│ │ │ ├── dmnt2_hardware_breakpoint.hpp
│ │ │ ├── dmnt2_hardware_watchpoint.cpp
│ │ │ ├── dmnt2_hardware_watchpoint.hpp
│ │ │ ├── dmnt2_main.cpp
│ │ │ ├── dmnt2_module_definition.hpp
│ │ │ ├── dmnt2_software_breakpoint.cpp
│ │ │ ├── dmnt2_software_breakpoint.hpp
│ │ │ ├── dmnt2_transport_layer.cpp
│ │ │ ├── dmnt2_transport_layer.hpp
│ │ │ ├── dmnt2_transport_receive_buffer.cpp
│ │ │ ├── dmnt2_transport_receive_buffer.hpp
│ │ │ ├── dmnt2_transport_session.cpp
│ │ │ └── dmnt2_transport_session.hpp
│ │ └── system_module.mk
│ ├── eclct.stub/
│ │ ├── Makefile
│ │ ├── eclct.stub.json
│ │ ├── source/
│ │ │ └── eclct_stub.cpp
│ │ └── system_module.mk
│ ├── erpt/
│ │ ├── Makefile
│ │ ├── erpt.json
│ │ ├── source/
│ │ │ └── erpt_main.cpp
│ │ └── system_module.mk
│ ├── fatal/
│ │ ├── Makefile
│ │ ├── fatal.json
│ │ ├── source/
│ │ │ ├── fatal_ams_logo.inc
│ │ │ ├── fatal_config.cpp
│ │ │ ├── fatal_config.hpp
│ │ │ ├── fatal_debug.cpp
│ │ │ ├── fatal_debug.hpp
│ │ │ ├── fatal_event_manager.cpp
│ │ │ ├── fatal_event_manager.hpp
│ │ │ ├── fatal_font.cpp
│ │ │ ├── fatal_font.hpp
│ │ │ ├── fatal_main.cpp
│ │ │ ├── fatal_repair.cpp
│ │ │ ├── fatal_repair.hpp
│ │ │ ├── fatal_scoped_file.cpp
│ │ │ ├── fatal_scoped_file.hpp
│ │ │ ├── fatal_service.cpp
│ │ │ ├── fatal_service.hpp
│ │ │ ├── fatal_service_for_self.hpp
│ │ │ ├── fatal_task.cpp
│ │ │ ├── fatal_task.hpp
│ │ │ ├── fatal_task_clock.cpp
│ │ │ ├── fatal_task_clock.hpp
│ │ │ ├── fatal_task_error_report.cpp
│ │ │ ├── fatal_task_error_report.hpp
│ │ │ ├── fatal_task_power.cpp
│ │ │ ├── fatal_task_power.hpp
│ │ │ ├── fatal_task_screen.cpp
│ │ │ ├── fatal_task_screen.hpp
│ │ │ ├── fatal_task_sound.cpp
│ │ │ ├── fatal_task_sound.hpp
│ │ │ └── stb_truetype.h
│ │ └── system_module.mk
│ ├── fs/
│ │ ├── Makefile
│ │ ├── fs.json
│ │ ├── source/
│ │ │ └── fs_main.cpp
│ │ └── system_module.mk
│ ├── htc/
│ │ ├── Makefile
│ │ ├── htc.json
│ │ ├── source/
│ │ │ └── htc_main.cpp
│ │ └── system_module.mk
│ ├── jpegdec/
│ │ ├── Makefile
│ │ ├── jpegdec.json
│ │ ├── source/
│ │ │ ├── jpegdec_environment.cpp
│ │ │ ├── jpegdec_main.cpp
│ │ │ ├── jpegdec_memory_management.cpp
│ │ │ └── jpegdec_memory_management.hpp
│ │ └── system_module.mk
│ ├── loader/
│ │ ├── Makefile
│ │ ├── loader.json
│ │ ├── source/
│ │ │ ├── ldr_argument_store.cpp
│ │ │ ├── ldr_argument_store.hpp
│ │ │ ├── ldr_capabilities.cpp
│ │ │ ├── ldr_capabilities.hpp
│ │ │ ├── ldr_content_management.cpp
│ │ │ ├── ldr_content_management.hpp
│ │ │ ├── ldr_development_manager.cpp
│ │ │ ├── ldr_development_manager.hpp
│ │ │ ├── ldr_embedded_usb_patches.inc
│ │ │ ├── ldr_launch_record.cpp
│ │ │ ├── ldr_launch_record.hpp
│ │ │ ├── ldr_loader_service.cpp
│ │ │ ├── ldr_loader_service.hpp
│ │ │ ├── ldr_main.cpp
│ │ │ ├── ldr_meta.cpp
│ │ │ ├── ldr_meta.hpp
│ │ │ ├── ldr_patcher.cpp
│ │ │ ├── ldr_patcher.hpp
│ │ │ ├── ldr_process_creation.cpp
│ │ │ ├── ldr_process_creation.hpp
│ │ │ ├── ldr_ro_manager.cpp
│ │ │ └── ldr_ro_manager.hpp
│ │ └── system_module.mk
│ ├── memlet/
│ │ ├── Makefile
│ │ ├── memlet.json
│ │ ├── source/
│ │ │ ├── memlet_main.cpp
│ │ │ ├── memlet_service.cpp
│ │ │ └── memlet_service.hpp
│ │ └── system_module.mk
│ ├── ncm/
│ │ ├── Makefile
│ │ ├── ncm.json
│ │ ├── source/
│ │ │ └── ncm_main.cpp
│ │ └── system_module.mk
│ ├── pgl/
│ │ ├── Makefile
│ │ ├── pgl.json
│ │ ├── source/
│ │ │ └── pgl_main.cpp
│ │ └── system_module.mk
│ ├── pm/
│ │ ├── Makefile
│ │ ├── pm.json
│ │ ├── source/
│ │ │ ├── impl/
│ │ │ │ ├── pm_process_attributes.hpp
│ │ │ │ ├── pm_process_info.cpp
│ │ │ │ ├── pm_process_info.hpp
│ │ │ │ ├── pm_process_manager.cpp
│ │ │ │ ├── pm_process_manager.hpp
│ │ │ │ ├── pm_process_tracker.cpp
│ │ │ │ ├── pm_process_tracker.hpp
│ │ │ │ ├── pm_spec.cpp
│ │ │ │ └── pm_spec.hpp
│ │ │ ├── pm_boot_mode_service.cpp
│ │ │ ├── pm_boot_mode_service.hpp
│ │ │ ├── pm_debug_monitor_service.cpp
│ │ │ ├── pm_debug_monitor_service.hpp
│ │ │ ├── pm_info_service.cpp
│ │ │ ├── pm_info_service.hpp
│ │ │ ├── pm_main.cpp
│ │ │ ├── pm_shell_service.cpp
│ │ │ └── pm_shell_service.hpp
│ │ └── system_module.mk
│ ├── ro/
│ │ ├── Makefile
│ │ ├── ro.json
│ │ ├── source/
│ │ │ ├── impl/
│ │ │ │ ├── ro_nro_utils.cpp
│ │ │ │ ├── ro_nro_utils.hpp
│ │ │ │ ├── ro_nrr_utils.cpp
│ │ │ │ ├── ro_nrr_utils.hpp
│ │ │ │ ├── ro_patcher.cpp
│ │ │ │ ├── ro_patcher.hpp
│ │ │ │ ├── ro_random.cpp
│ │ │ │ ├── ro_random.hpp
│ │ │ │ ├── ro_service_impl.cpp
│ │ │ │ └── ro_service_impl.hpp
│ │ │ ├── ro_debug_monitor_service.cpp
│ │ │ ├── ro_debug_monitor_service.hpp
│ │ │ ├── ro_main.cpp
│ │ │ ├── ro_ro_service.cpp
│ │ │ └── ro_ro_service.hpp
│ │ └── system_module.mk
│ ├── sm/
│ │ ├── Makefile
│ │ ├── sm.json
│ │ ├── source/
│ │ │ ├── impl/
│ │ │ │ ├── sm_service_manager.cpp
│ │ │ │ └── sm_service_manager.hpp
│ │ │ ├── sm_main.cpp
│ │ │ ├── sm_manager_service.hpp
│ │ │ ├── sm_tipc_server.cpp
│ │ │ ├── sm_tipc_server.hpp
│ │ │ ├── sm_user_service.cpp
│ │ │ ├── sm_user_service.hpp
│ │ │ └── sm_wait_list.hpp
│ │ └── system_module.mk
│ ├── spl/
│ │ ├── Makefile
│ │ ├── source/
│ │ │ ├── spl_crypto_service.hpp
│ │ │ ├── spl_deprecated_service.hpp
│ │ │ ├── spl_device_unique_data_service.hpp
│ │ │ ├── spl_es_service.hpp
│ │ │ ├── spl_fs_service.hpp
│ │ │ ├── spl_general_service.hpp
│ │ │ ├── spl_main.cpp
│ │ │ ├── spl_manu_service.hpp
│ │ │ ├── spl_random_service.hpp
│ │ │ ├── spl_secure_monitor_manager.cpp
│ │ │ ├── spl_secure_monitor_manager.hpp
│ │ │ └── spl_ssl_service.hpp
│ │ ├── spl.json
│ │ └── system_module.mk
│ └── stratosphere.mk
├── tests/
│ ├── Licensing/
│ │ └── Catch2-LICENSE.txt
│ ├── TestFs/
│ │ ├── Makefile
│ │ ├── source/
│ │ │ └── test.cpp
│ │ └── unit_test.mk
│ ├── TestOsEvents/
│ │ ├── Makefile
│ │ ├── source/
│ │ │ └── test.cpp
│ │ └── unit_test.mk
│ ├── TestSocket/
│ │ ├── Makefile
│ │ ├── source/
│ │ │ └── test.cpp
│ │ └── unit_test.mk
│ ├── TestStack/
│ │ ├── Makefile
│ │ ├── source/
│ │ │ └── test.cpp
│ │ └── unit_test.mk
│ └── TestSvc/
│ ├── Makefile
│ ├── TestSvc.json
│ ├── TestSvc.npdm.json
│ └── source/
│ ├── doctest.h
│ ├── test_main.cpp
│ ├── test_preemption_priority.cpp
│ ├── test_set_heap_size.cpp
│ ├── test_set_memory_permission.cpp
│ ├── test_sleep_thread.cpp
│ ├── test_thread_creation.arch.arm64.s
│ ├── test_thread_creation.cpp
│ ├── test_thread_pinning.cpp
│ ├── util_check_memory.hpp
│ ├── util_common.hpp
│ ├── util_scoped_heap.hpp
│ └── util_test_framework.hpp
├── thermosphere/
│ ├── .gitignore
│ ├── Makefile
│ ├── README.md
│ ├── linker.ld
│ ├── linker.specs
│ └── src/
│ ├── exceptions.c
│ ├── exceptions.h
│ ├── main.c
│ ├── regs.h
│ └── start.s
├── troposphere/
│ ├── Makefile
│ ├── daybreak/
│ │ ├── Makefile
│ │ ├── nanovg/
│ │ │ ├── .gitignore
│ │ │ ├── .gitrepo
│ │ │ ├── LICENSE
│ │ │ ├── Makefile
│ │ │ ├── README.md
│ │ │ ├── include/
│ │ │ │ ├── nanovg/
│ │ │ │ │ ├── dk_renderer.hpp
│ │ │ │ │ ├── fontstash.h
│ │ │ │ │ ├── framework/
│ │ │ │ │ │ ├── CApplication.h
│ │ │ │ │ │ ├── CCmdMemRing.h
│ │ │ │ │ │ ├── CDescriptorSet.h
│ │ │ │ │ │ ├── CExternalImage.h
│ │ │ │ │ │ ├── CIntrusiveList.h
│ │ │ │ │ │ ├── CIntrusiveTree.h
│ │ │ │ │ │ ├── CMemPool.h
│ │ │ │ │ │ ├── CShader.h
│ │ │ │ │ │ ├── FileLoader.h
│ │ │ │ │ │ └── common.h
│ │ │ │ │ ├── nanovg_gl_utils.h
│ │ │ │ │ ├── stb_image.h
│ │ │ │ │ └── stb_truetype.h
│ │ │ │ ├── nanovg.h
│ │ │ │ ├── nanovg_dk.h
│ │ │ │ └── nanovg_gl.h
│ │ │ ├── shaders/
│ │ │ │ ├── fill_aa_fsh.glsl
│ │ │ │ ├── fill_fsh.glsl
│ │ │ │ └── fill_vsh.glsl
│ │ │ └── source/
│ │ │ ├── dk_renderer.cpp
│ │ │ ├── framework/
│ │ │ │ ├── CApplication.cpp
│ │ │ │ ├── CExternalImage.cpp
│ │ │ │ ├── CIntrusiveTree.cpp
│ │ │ │ ├── CMemPool.cpp
│ │ │ │ ├── CShader.cpp
│ │ │ │ ├── FileLoader.cpp
│ │ │ │ └── LICENSE
│ │ │ └── nanovg.c
│ │ └── source/
│ │ ├── ams_su.c
│ │ ├── ams_su.h
│ │ ├── assert.hpp
│ │ ├── main.cpp
│ │ ├── service_guard.h
│ │ ├── ui.cpp
│ │ ├── ui.hpp
│ │ ├── ui_util.cpp
│ │ └── ui_util.hpp
│ ├── haze/
│ │ ├── Makefile
│ │ ├── include/
│ │ │ ├── haze/
│ │ │ │ ├── assert.hpp
│ │ │ │ ├── async_usb_server.hpp
│ │ │ │ ├── common.hpp
│ │ │ │ ├── console_main_loop.hpp
│ │ │ │ ├── device_properties.hpp
│ │ │ │ ├── event_reactor.hpp
│ │ │ │ ├── file_system_proxy.hpp
│ │ │ │ ├── ptp.hpp
│ │ │ │ ├── ptp_data_builder.hpp
│ │ │ │ ├── ptp_data_parser.hpp
│ │ │ │ ├── ptp_object_database.hpp
│ │ │ │ ├── ptp_object_heap.hpp
│ │ │ │ ├── ptp_responder.hpp
│ │ │ │ ├── ptp_responder_types.hpp
│ │ │ │ ├── results.hpp
│ │ │ │ └── usb_session.hpp
│ │ │ └── haze.hpp
│ │ └── source/
│ │ ├── async_usb_server.cpp
│ │ ├── console_fsh.glsl
│ │ ├── console_vsh.glsl
│ │ ├── device_properties.cpp
│ │ ├── event_reactor.cpp
│ │ ├── gpu_console.c
│ │ ├── main.cpp
│ │ ├── ptp_object_database.cpp
│ │ ├── ptp_object_heap.cpp
│ │ ├── ptp_responder.cpp
│ │ ├── ptp_responder_android_operations.cpp
│ │ ├── ptp_responder_mtp_operations.cpp
│ │ ├── ptp_responder_ptp_operations.cpp
│ │ └── usb_session.cpp
│ └── reboot_to_payload/
│ ├── Makefile
│ └── source/
│ ├── ams_bpc.c
│ ├── ams_bpc.h
│ ├── main.c
│ └── service_guard.h
└── utilities/
├── erpt.py
├── insert_splash_screen.py
└── nxo64.py
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitattributes
================================================
config_templates/hbl_html/accessible-urls/accessible-urls.txt text eol=lf
# Mark C++ "include" files as C++
*.inc linguist-language=C++
# Mark RapidJSON include as vendored
libraries/include/stratosphere/rapidjson/** linguist-vendored
# Mark emummc as vendored
emummc/** linguist-vendored
# Mark fatfs as vendored
exosphere/mariko_fatal/source/fatfs/** linguist-vendored
fusee/program/source/fatfs/** linguist-vendored
================================================
FILE: .gitignore
================================================
# Prerequisites
*.d
# Object files
*.o
*.ko
*.obj
*.elf
# Linker output
*.ilk
*.map
*.exp
*.lst
# Precompiled Headers
*.gch
*.pch
# Libraries
*.lib
*.a
*.la
*.lo
# Shared objects (inc. Windows DLLs)
*.dll
*.so
*.so.*
*.dylib
# Executables
*.exe
*.lz4
*.out
*.app
*.i*86
*.x86_64
*.hex
# Deko3d shaders
*.dksh
# Switch Executables
*.nso
*.nro
*.nacp
*.npdm
*.pfs0
*.nsp
*.kip
# Debug files
*.dSYM/
*.su
*.idb
*.pdb
# Kernel Module Compile Results
*.mod*
*.cmd
.tmp_versions/
modules.order
Module.symvers
Mkfile.old
dkms.conf
# Distribution files
*.tgz
*.zip
*.bz2
# IDA binaries
*.id0
*.id1
*.id2
*.idb
*.i64
*.nam
*.til
# Compiled python files.
*.pyc
.**/
# macOS horseshittery
.DS_Store
# NOTE: make sure to make exceptions to this pattern when needed!
*.bin
*.enc
**/out
**/build
**/lib
**/build_nintendo_nx_arm64
**/build_nintendo_nx_arm64_armv8a
**/build_nintendo_nx_arm
**/build_nintendo_nx_arm_armv8a
**/build_nintendo_nx_arm_armv7a
**/build_nintendo_nx_arm_armv4t
**/build_nintendo_nx_x64
**/build_nintendo_nx_x86
tools/*/
package3
stratosphere/test/
================================================
FILE: .gitmodules
================================================
================================================
FILE: LICENSE
================================================
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Lesser General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License.
================================================
FILE: Makefile
================================================
ATMOSPHERE_BUILD_CONFIGS :=
all: nx_release
clean: clean-nx_release
THIS_MAKEFILE := $(abspath $(lastword $(MAKEFILE_LIST)))
CURRENT_DIRECTORY := $(abspath $(dir $(THIS_MAKEFILE)))
define ATMOSPHERE_ADD_TARGET
ATMOSPHERE_BUILD_CONFIGS += $(strip $1)
$(strip $1):
@echo "Building $(strip $1)"
@$$(MAKE) -f $(CURRENT_DIRECTORY)/atmosphere.mk ATMOSPHERE_MAKEFILE_TARGET="$(strip $1)" ATMOSPHERE_BUILD_NAME="$(strip $2)" ATMOSPHERE_BOARD="$(strip $3)" ATMOSPHERE_CPU="$(strip $4)" $(strip $5)
clean-$(strip $1):
@echo "Cleaning $(strip $1)"
@$$(MAKE) -f $(CURRENT_DIRECTORY)/atmosphere.mk clean ATMOSPHERE_MAKEFILE_TARGET="$(strip $1)" ATMOSPHERE_BUILD_NAME="$(strip $2)" ATMOSPHERE_BOARD="$(strip $3)" ATMOSPHERE_CPU="$(strip $4)" $(strip $5)
endef
define ATMOSPHERE_ADD_TARGETS
$(eval $(call ATMOSPHERE_ADD_TARGET, $(strip $1)_release, release, $(strip $2), $(strip $3), \
ATMOSPHERE_BUILD_SETTINGS="$(strip $4)" \
))
$(eval $(call ATMOSPHERE_ADD_TARGET, $(strip $1)_debug, debug, $(strip $2), $(strip $3), \
ATMOSPHERE_BUILD_SETTINGS="$(strip $4) -DAMS_BUILD_FOR_DEBUGGING" ATMOSPHERE_BUILD_FOR_DEBUGGING=1 \
))
$(eval $(call ATMOSPHERE_ADD_TARGET, $(strip $1)_audit, audit, $(strip $2), $(strip $3), \
ATMOSPHERE_BUILD_SETTINGS="$(strip $4) -DAMS_BUILD_FOR_AUDITING" ATMOSPHERE_BUILD_FOR_DEBUGGING=1 ATMOSPHERE_BUILD_FOR_AUDITING=1 \
))
endef
$(eval $(call ATMOSPHERE_ADD_TARGETS, nx, nx-hac-001, arm-cortex-a57,))
clean-all: $(foreach config,$(ATMOSPHERE_BUILD_CONFIGS),clean-$(config))
.PHONY: all clean clean-all $(foreach config,$(ATMOSPHERE_BUILD_CONFIGS), $(config) clean-$(config))
================================================
FILE: README.md
================================================

=====

[](https://discordapp.com/invite/ZdqEhed)

Atmosphère is a work-in-progress customized firmware for the Nintendo Switch.
Components
=====
Atmosphère consists of multiple components, each of which replaces/modifies a different component of the system:
* Fusée: First-stage Loader, responsible for loading and validating stage 2 (custom TrustZone) plus package2 (Kernel/FIRM sysmodules), and patching them as needed. This replaces all functionality normally in Package1loader/NX Bootloader.
* Exosphère: Customized TrustZone, to run a customized Secure Monitor
* Thermosphère: EL2 EmuNAND support, i.e. backing up and using virtualized/redirected NAND images
* Stratosphère: Custom Sysmodule(s), both Rosalina style to extend the kernel/provide new features, and of the loader reimplementation style to hook important system actions
* Troposphère: Application-level Horizon OS patches, used to implement desirable CFW features
Licensing
=====
This software is licensed under the terms of the GPLv2, with exemptions for specific projects noted below.
You can find a copy of the license in the [LICENSE file](LICENSE).
Exemptions:
* [Nintendo](https://github.com/Nintendo) is exempt from GPLv2 licensing and may (at its option) instead license any source code authored for the Atmosphère project under the Zero-Clause BSD license.
Credits
=====
Atmosphère is currently being developed and maintained by __SciresM__, __TuxSH__, __hexkyz__, and __fincs__.<br>
In no particular order, we credit the following for their invaluable contributions:
* __switchbrew__ for the [libnx](https://github.com/switchbrew/libnx) project and the extensive [documentation, research and tool development](http://switchbrew.org) pertaining to the Nintendo Switch.
* __devkitPro__ for the [devkitA64](https://devkitpro.org/) toolchain and libnx support.
* __ReSwitched Team__ for additional [documentation, research and tool development](https://reswitched.github.io/) pertaining to the Nintendo Switch.
* __ChaN__ for the [FatFs](http://elm-chan.org/fsw/ff/00index_e.html) module.
* __Marcus Geelnard__ for the [bcl-1.2.0](https://sourceforge.net/projects/bcl/files/bcl/bcl-1.2.0) library.
* __naehrwert__ and __st4rk__ for the original [hekate](https://github.com/nwert/hekate) project and its hwinit code base.
* __CTCaer__ for the continued [hekate](https://github.com/CTCaer/hekate) project's fork and the [minerva_tc](https://github.com/CTCaer/minerva_tc) project.
* __m4xw__ for development of the [emuMMC](https://github.com/m4xw/emummc) project.
* __Riley__ for suggesting "Atmosphere" as a Horizon OS reimplementation+customization project name.
* __hedgeberg__ for research and hardware testing.
* __lioncash__ for code cleanup and general improvements.
* __jaames__ for designing and providing Atmosphère's graphical resources.
* Everyone who submitted entries for Atmosphère's [splash design contest](https://github.com/Atmosphere-NX/Atmosphere-splashes).
* _All those who actively contribute to the Atmosphère repository._
================================================
FILE: atmosphere.mk
================================================
#---------------------------------------------------------------------------------
# pull in common atmosphere configuration
#---------------------------------------------------------------------------------
THIS_MAKEFILE := $(abspath $(lastword $(MAKEFILE_LIST)))
CURRENT_DIRECTORY := $(abspath $(dir $(THIS_MAKEFILE)))
include $(CURRENT_DIRECTORY)/libraries/config/common.mk
# Get Atmosphere version fields
ATMOSPHERE_MAJOR_VERSION := $(shell grep 'define ATMOSPHERE_RELEASE_VERSION_MAJOR\b' $(ATMOSPHERE_LIBRARIES_DIR)/libvapours/include/vapours/ams/ams_api_version.h | tr -s [:blank:] | cut -d' ' -f3)
ATMOSPHERE_MINOR_VERSION := $(shell grep 'define ATMOSPHERE_RELEASE_VERSION_MINOR\b' $(ATMOSPHERE_LIBRARIES_DIR)/libvapours/include/vapours/ams/ams_api_version.h | tr -s [:blank:] | cut -d' ' -f3)
ATMOSPHERE_MICRO_VERSION := $(shell grep 'define ATMOSPHERE_RELEASE_VERSION_MICRO\b' $(ATMOSPHERE_LIBRARIES_DIR)/libvapours/include/vapours/ams/ams_api_version.h | tr -s [:blank:] | cut -d' ' -f3)
ATMOSPHERE_SUPPORTED_HOS_MAJOR_VERSION := $(shell grep 'define ATMOSPHERE_SUPPORTED_HOS_VERSION_MAJOR\b' $(ATMOSPHERE_LIBRARIES_DIR)/libvapours/include/vapours/ams/ams_api_version.h | tr -s [:blank:] | cut -d' ' -f3)
ATMOSPHERE_SUPPORTED_HOS_MINOR_VERSION := $(shell grep 'define ATMOSPHERE_SUPPORTED_HOS_VERSION_MINOR\b' $(ATMOSPHERE_LIBRARIES_DIR)/libvapours/include/vapours/ams/ams_api_version.h | tr -s [:blank:] | cut -d' ' -f3)
ATMOSPHERE_SUPPORTED_HOS_MICRO_VERSION := $(shell grep 'define ATMOSPHERE_SUPPORTED_HOS_VERSION_MICRO\b' $(ATMOSPHERE_LIBRARIES_DIR)/libvapours/include/vapours/ams/ams_api_version.h | tr -s [:blank:] | cut -d' ' -f3)
ATMOSPHERE_VERSION := $(ATMOSPHERE_MAJOR_VERSION).$(ATMOSPHERE_MINOR_VERSION).$(ATMOSPHERE_MICRO_VERSION)-$(ATMOSPHERE_GIT_REVISION)
dist: dist-no-debug
$(eval DIST_DIR = $(CURRENT_DIRECTORY)/$(ATMOSPHERE_OUT_DIR)/atmosphere-$(ATMOSPHERE_VERSION)-debug)
rm -rf $(DIST_DIR)
mkdir $(DIST_DIR)
cp $(CURRENT_DIRECTORY)/fusee/loader_stub/$(ATMOSPHERE_BOOT_OUT_DIR)/loader_stub.elf $(DIST_DIR)/fusee-loader-stub.elf
cp $(CURRENT_DIRECTORY)/fusee/program/$(ATMOSPHERE_BOOT_OUT_DIR)/program.elf $(DIST_DIR)/fusee-program.elf
cp $(CURRENT_DIRECTORY)/exosphere/loader_stub/$(ATMOSPHERE_OUT_DIR)/loader_stub.elf $(DIST_DIR)/exosphere-loader-stub.elf
cp $(CURRENT_DIRECTORY)/exosphere/program/$(ATMOSPHERE_OUT_DIR)/program.elf $(DIST_DIR)/exosphere-program.elf
cp $(CURRENT_DIRECTORY)/exosphere/warmboot/$(ATMOSPHERE_BOOT_OUT_DIR)/warmboot.elf $(DIST_DIR)/exosphere-warmboot.elf
cp $(CURRENT_DIRECTORY)/exosphere/mariko_fatal/$(ATMOSPHERE_OUT_DIR)/mariko_fatal.elf $(DIST_DIR)/exosphere-mariko-fatal.elf
cp $(CURRENT_DIRECTORY)/exosphere/program/sc7fw/$(ATMOSPHERE_BOOT_OUT_DIR)/sc7fw.elf $(DIST_DIR)/exosphere-sc7fw.elf
cp $(CURRENT_DIRECTORY)/exosphere/program/rebootstub/$(ATMOSPHERE_BOOT_OUT_DIR)/rebootstub.elf $(DIST_DIR)/exosphere-rebootstub.elf
cp $(CURRENT_DIRECTORY)/mesosphere/kernel_ldr/$(ATMOSPHERE_OUT_DIR)/kernel_ldr.elf $(DIST_DIR)/kernel_ldr.elf
cp $(CURRENT_DIRECTORY)/mesosphere/kernel/$(ATMOSPHERE_OUT_DIR)/kernel.elf $(DIST_DIR)/kernel.elf
cp $(CURRENT_DIRECTORY)/stratosphere/ams_mitm/$(ATMOSPHERE_OUT_DIR)/ams_mitm.elf $(DIST_DIR)/ams_mitm.elf
cp $(CURRENT_DIRECTORY)/stratosphere/boot/$(ATMOSPHERE_OUT_DIR)/boot.elf $(DIST_DIR)/boot.elf
cp $(CURRENT_DIRECTORY)/stratosphere/boot2/$(ATMOSPHERE_OUT_DIR)/boot2.elf $(DIST_DIR)/boot2.elf
cp $(CURRENT_DIRECTORY)/stratosphere/creport/$(ATMOSPHERE_OUT_DIR)/creport.elf $(DIST_DIR)/creport.elf
cp $(CURRENT_DIRECTORY)/stratosphere/cs/$(ATMOSPHERE_OUT_DIR)/cs.elf $(DIST_DIR)/cs.elf
cp $(CURRENT_DIRECTORY)/stratosphere/dmnt/$(ATMOSPHERE_OUT_DIR)/dmnt.elf $(DIST_DIR)/dmnt.elf
cp $(CURRENT_DIRECTORY)/stratosphere/dmnt.gen2/$(ATMOSPHERE_OUT_DIR)/dmnt.gen2.elf $(DIST_DIR)/dmnt.gen2.elf
cp $(CURRENT_DIRECTORY)/stratosphere/eclct.stub/$(ATMOSPHERE_OUT_DIR)/eclct.stub.elf $(DIST_DIR)/eclct.stub.elf
cp $(CURRENT_DIRECTORY)/stratosphere/erpt/$(ATMOSPHERE_OUT_DIR)/erpt.elf $(DIST_DIR)/erpt.elf
cp $(CURRENT_DIRECTORY)/stratosphere/fatal/$(ATMOSPHERE_OUT_DIR)/fatal.elf $(DIST_DIR)/fatal.elf
cp $(CURRENT_DIRECTORY)/stratosphere/htc/$(ATMOSPHERE_OUT_DIR)/htc.elf $(DIST_DIR)/htc.elf
cp $(CURRENT_DIRECTORY)/stratosphere/jpegdec/$(ATMOSPHERE_OUT_DIR)/jpegdec.elf $(DIST_DIR)/jpegdec.elf
cp $(CURRENT_DIRECTORY)/stratosphere/loader/$(ATMOSPHERE_OUT_DIR)/loader.elf $(DIST_DIR)/loader.elf
cp $(CURRENT_DIRECTORY)/stratosphere/LogManager/$(ATMOSPHERE_OUT_DIR)/LogManager.elf $(DIST_DIR)/LogManager.elf
cp $(CURRENT_DIRECTORY)/stratosphere/ncm/$(ATMOSPHERE_OUT_DIR)/ncm.elf $(DIST_DIR)/ncm.elf
cp $(CURRENT_DIRECTORY)/stratosphere/pgl/$(ATMOSPHERE_OUT_DIR)/pgl.elf $(DIST_DIR)/pgl.elf
cp $(CURRENT_DIRECTORY)/stratosphere/pm/$(ATMOSPHERE_OUT_DIR)/pm.elf $(DIST_DIR)/pm.elf
cp $(CURRENT_DIRECTORY)/stratosphere/ro/$(ATMOSPHERE_OUT_DIR)/ro.elf $(DIST_DIR)/ro.elf
cp $(CURRENT_DIRECTORY)/stratosphere/sm/$(ATMOSPHERE_OUT_DIR)/sm.elf $(DIST_DIR)/sm.elf
cp $(CURRENT_DIRECTORY)/stratosphere/spl/$(ATMOSPHERE_OUT_DIR)/spl.elf $(DIST_DIR)/spl.elf
cp $(CURRENT_DIRECTORY)/stratosphere/TioServer/$(ATMOSPHERE_OUT_DIR)/TioServer.elf $(DIST_DIR)/TioServer.elf
cp $(CURRENT_DIRECTORY)/stratosphere/memlet/$(ATMOSPHERE_OUT_DIR)/memlet.elf $(DIST_DIR)/memlet.elf
cp $(CURRENT_DIRECTORY)/troposphere/daybreak/daybreak.elf $(DIST_DIR)/daybreak.elf
cp $(CURRENT_DIRECTORY)/troposphere/haze/haze.elf $(DIST_DIR)/haze.elf
cp $(CURRENT_DIRECTORY)/troposphere/reboot_to_payload/reboot_to_payload.elf $(DIST_DIR)/reboot_to_payload.elf
cd $(DIST_DIR); zip -r ../atmosphere-$(ATMOSPHERE_VERSION)-debug.zip ./*; cd ../;
rm -rf $(DIST_DIR)
dist-no-debug: package3 $(CURRENT_DIRECTORY)/$(ATMOSPHERE_OUT_DIR)
$(eval DIST_DIR = $(CURRENT_DIRECTORY)/$(ATMOSPHERE_OUT_DIR)/atmosphere-$(ATMOSPHERE_VERSION))
rm -rf $(CURRENT_DIRECTORY)/$(ATMOSPHERE_OUT_DIR)/*
rm -rf $(DIST_DIR)
mkdir $(DIST_DIR)
mkdir $(DIST_DIR)/atmosphere
mkdir $(DIST_DIR)/switch
mkdir -p $(DIST_DIR)/atmosphere/fatal_errors
mkdir -p $(DIST_DIR)/atmosphere/config_templates
mkdir -p $(DIST_DIR)/atmosphere/config
mkdir -p $(DIST_DIR)/atmosphere/flags
cp fusee/$(ATMOSPHERE_BOOT_OUT_DIR)/fusee.bin $(DIST_DIR)/atmosphere/reboot_payload.bin
cp fusee/$(ATMOSPHERE_BOOT_OUT_DIR)/package3 $(DIST_DIR)/atmosphere/package3
cp config_templates/stratosphere.ini $(DIST_DIR)/atmosphere/config_templates/stratosphere.ini
cp config_templates/override_config.ini $(DIST_DIR)/atmosphere/config_templates/override_config.ini
cp config_templates/system_settings.ini $(DIST_DIR)/atmosphere/config_templates/system_settings.ini
cp config_templates/exosphere.ini $(DIST_DIR)/atmosphere/config_templates/exosphere.ini
mkdir -p config_templates/kip_patches
cp -r config_templates/kip_patches $(DIST_DIR)/atmosphere/kip_patches
cp -r config_templates/hbl_html $(DIST_DIR)/atmosphere/hbl_html
mkdir -p $(DIST_DIR)/stratosphere_romfs/atmosphere/contents/0100000000000008
mkdir -p $(DIST_DIR)/stratosphere_romfs/atmosphere/contents/010000000000000d
mkdir -p $(DIST_DIR)/stratosphere_romfs/atmosphere/contents/0100000000000017
mkdir -p $(DIST_DIR)/stratosphere_romfs/atmosphere/contents/010000000000002b
mkdir -p $(DIST_DIR)/stratosphere_romfs/atmosphere/contents/0100000000000032
mkdir -p $(DIST_DIR)/stratosphere_romfs/atmosphere/contents/0100000000000034
mkdir -p $(DIST_DIR)/stratosphere_romfs/atmosphere/contents/0100000000000036
mkdir -p $(DIST_DIR)/stratosphere_romfs/atmosphere/contents/0100000000000037
#mkdir -p $(DIST_DIR)/stratosphere_romfs/atmosphere/contents/010000000000003c
mkdir -p $(DIST_DIR)/stratosphere_romfs/atmosphere/contents/0100000000000042
mkdir -p $(DIST_DIR)/stratosphere_romfs/atmosphere/contents/0100000000000420
mkdir -p $(DIST_DIR)/stratosphere_romfs/atmosphere/contents/0100000000000421
mkdir -p $(DIST_DIR)/stratosphere_romfs/atmosphere/contents/010000000000b240
mkdir -p $(DIST_DIR)/stratosphere_romfs/atmosphere/contents/010000000000d609
mkdir -p $(DIST_DIR)/stratosphere_romfs/atmosphere/contents/010000000000d623
cp stratosphere/boot2/$(ATMOSPHERE_OUT_DIR)/boot2.nsp $(DIST_DIR)/stratosphere_romfs/atmosphere/contents/0100000000000008/exefs.nsp
cp stratosphere/dmnt/$(ATMOSPHERE_OUT_DIR)/dmnt.nsp $(DIST_DIR)/stratosphere_romfs/atmosphere/contents/010000000000000d/exefs.nsp
cp stratosphere/cs/$(ATMOSPHERE_OUT_DIR)/cs.nsp $(DIST_DIR)/stratosphere_romfs/atmosphere/contents/0100000000000017/exefs.nsp
cp stratosphere/erpt/$(ATMOSPHERE_OUT_DIR)/erpt.nsp $(DIST_DIR)/stratosphere_romfs/atmosphere/contents/010000000000002b/exefs.nsp
cp stratosphere/eclct.stub/$(ATMOSPHERE_OUT_DIR)/eclct.stub.nsp $(DIST_DIR)/stratosphere_romfs/atmosphere/contents/0100000000000032/exefs.nsp
cp stratosphere/fatal/$(ATMOSPHERE_OUT_DIR)/fatal.nsp $(DIST_DIR)/stratosphere_romfs/atmosphere/contents/0100000000000034/exefs.nsp
cp stratosphere/creport/$(ATMOSPHERE_OUT_DIR)/creport.nsp $(DIST_DIR)/stratosphere_romfs/atmosphere/contents/0100000000000036/exefs.nsp
cp stratosphere/ro/$(ATMOSPHERE_OUT_DIR)/ro.nsp $(DIST_DIR)/stratosphere_romfs/atmosphere/contents/0100000000000037/exefs.nsp
#cp stratosphere/jpegdec/$(ATMOSPHERE_OUT_DIR)/jpegdec.nsp $(DIST_DIR)/stratosphere_romfs/atmosphere/contents/010000000000003c/exefs.nsp
cp stratosphere/pgl/$(ATMOSPHERE_OUT_DIR)/pgl.nsp $(DIST_DIR)/stratosphere_romfs/atmosphere/contents/0100000000000042/exefs.nsp
cp stratosphere/LogManager/$(ATMOSPHERE_OUT_DIR)/LogManager.nsp $(DIST_DIR)/stratosphere_romfs/atmosphere/contents/0100000000000420/exefs.nsp
cp stratosphere/htc/$(ATMOSPHERE_OUT_DIR)/htc.nsp $(DIST_DIR)/stratosphere_romfs/atmosphere/contents/010000000000b240/exefs.nsp
cp stratosphere/dmnt.gen2/$(ATMOSPHERE_OUT_DIR)/dmnt.gen2.nsp $(DIST_DIR)/stratosphere_romfs/atmosphere/contents/010000000000d609/exefs.nsp
cp stratosphere/TioServer/$(ATMOSPHERE_OUT_DIR)/TioServer.nsp $(DIST_DIR)/stratosphere_romfs/atmosphere/contents/010000000000d623/exefs.nsp
cp stratosphere/memlet/$(ATMOSPHERE_OUT_DIR)/memlet.nsp $(DIST_DIR)/stratosphere_romfs/atmosphere/contents/0100000000000421/exefs.nsp
@PATH="$(DEVKITPRO)/tools/bin:$$PATH" build_romfs $(DIST_DIR)/stratosphere_romfs $(DIST_DIR)/atmosphere/stratosphere.romfs
rm -r $(DIST_DIR)/stratosphere_romfs
cp troposphere/reboot_to_payload/reboot_to_payload.nro $(DIST_DIR)/switch/reboot_to_payload.nro
cp troposphere/daybreak/daybreak.nro $(DIST_DIR)/switch/daybreak.nro
cp troposphere/haze/haze.nro $(DIST_DIR)/switch/haze.nro
cd $(DIST_DIR); zip -r ../atmosphere-$(ATMOSPHERE_VERSION).zip ./*; cd ../;
rm -rf $(DIST_DIR)
cp fusee/$(ATMOSPHERE_BOOT_OUT_DIR)/fusee.bin $(CURRENT_DIRECTORY)/$(ATMOSPHERE_OUT_DIR)/fusee.bin
package3: emummc fusee stratosphere mesosphere exosphere troposphere
$(SILENTCMD)$(PYTHON) fusee/build_package3.py $(CURRENT_DIRECTORY) $(ATMOSPHERE_OUT_DIR) $(ATMOSPHERE_BOOT_OUT_DIR) $(ATMOSPHERE_GIT_HASH) $(ATMOSPHERE_MAJOR_VERSION) $(ATMOSPHERE_MINOR_VERSION) $(ATMOSPHERE_MICRO_VERSION) 0 $(ATMOSPHERE_SUPPORTED_HOS_MAJOR_VERSION) $(ATMOSPHERE_SUPPORTED_HOS_MINOR_VERSION) $(ATMOSPHERE_SUPPORTED_HOS_MICRO_VERSION) 0
@echo "Built package3!"
emummc:
$(MAKE) -C $(CURRENT_DIRECTORY)/emummc all
fusee: libexosphere_boot
@$(MAKE) --no-print-directory -C $(CURRENT_DIRECTORY)/fusee -f $(CURRENT_DIRECTORY)/fusee/fusee.mk ATMOSPHERE_CPU="$(strip $(ATMOSPHERE_BOOT_CPU))"
exosphere: libexosphere libexosphere_boot
@$(MAKE) --no-print-directory -C $(CURRENT_DIRECTORY)/exosphere -f $(CURRENT_DIRECTORY)/exosphere/exosphere.mk ATMOSPHERE_CHECKED_LIBEXOSPHERE=1 ATMOSPHERE_CHECKED_BOOT_LIBEXOSPHERE=1
stratosphere: fusee libstratosphere
@$(MAKE) --no-print-directory -C $(CURRENT_DIRECTORY)/stratosphere -f $(CURRENT_DIRECTORY)/stratosphere/stratosphere.mk ATMOSPHERE_CHECKED_LIBSTRATOSPHERE=1 ATMOSPHERE_CHECKED_FUSEE=1
mesosphere: libmesosphere
@$(MAKE) --no-print-directory -C $(CURRENT_DIRECTORY)/mesosphere -f $(CURRENT_DIRECTORY)/mesosphere/mesosphere.mk ATMOSPHERE_CHECKED_LIBMESOSPHERE=1
troposphere:
$(MAKE) -C $(CURRENT_DIRECTORY)/troposphere all
libexosphere:
@$(MAKE) --no-print-directory -C $(ATMOSPHERE_LIBRARIES_DIR)/libexosphere -f $(ATMOSPHERE_LIBRARIES_DIR)/libexosphere/libexosphere.mk
ifneq ($(strip $(ATMOSPHERE_LIBRARY_DIR)),$(strip $(ATMOSPHERE_BOOT_LIBRARY_DIR)))
libexosphere_boot:
@$(MAKE) --no-print-directory -C $(ATMOSPHERE_LIBRARIES_DIR)/libexosphere -f $(ATMOSPHERE_LIBRARIES_DIR)/libexosphere/libexosphere.mk ATMOSPHERE_CPU="$(strip $(ATMOSPHERE_BOOT_CPU))"
else
libexosphere_boot: libexosphere
endif
libmesosphere:
@$(MAKE) --no-print-directory -C $(ATMOSPHERE_LIBRARIES_DIR)/libmesosphere -f $(ATMOSPHERE_LIBRARIES_DIR)/libmesosphere/libmesosphere.mk
libstratosphere:
@$(MAKE) --no-print-directory -C $(ATMOSPHERE_LIBRARIES_DIR)/libstratosphere -f $(ATMOSPHERE_LIBRARIES_DIR)/libstratosphere/libstratosphere.mk
clean:
$(MAKE) -C $(CURRENT_DIRECTORY)/fusee -f $(CURRENT_DIRECTORY)/fusee/fusee.mk clean ATMOSPHERE_CPU="$(strip $(ATMOSPHERE_BOOT_CPU))"
$(MAKE) -C $(CURRENT_DIRECTORY)/emummc clean
$(MAKE) -C $(CURRENT_DIRECTORY)/exosphere -f $(CURRENT_DIRECTORY)/exosphere/exosphere.mk clean
$(MAKE) -C $(CURRENT_DIRECTORY)/mesosphere -f $(CURRENT_DIRECTORY)/mesosphere/mesosphere.mk clean
$(MAKE) -C $(CURRENT_DIRECTORY)/stratosphere -f $(CURRENT_DIRECTORY)/stratosphere/stratosphere.mk clean
$(MAKE) -C $(CURRENT_DIRECTORY)/troposphere clean
$(MAKE) -C $(ATMOSPHERE_LIBRARIES_DIR)/libstratosphere -f $(ATMOSPHERE_LIBRARIES_DIR)/libstratosphere/libstratosphere.mk clean
$(MAKE) -C $(ATMOSPHERE_LIBRARIES_DIR)/libmesosphere -f $(ATMOSPHERE_LIBRARIES_DIR)/libmesosphere/libmesosphere.mk clean
$(MAKE) -C $(ATMOSPHERE_LIBRARIES_DIR)/libexosphere -f $(ATMOSPHERE_LIBRARIES_DIR)/libexosphere/libexosphere.mk clean
$(MAKE) -C $(ATMOSPHERE_LIBRARIES_DIR)/libexosphere -f $(ATMOSPHERE_LIBRARIES_DIR)/libexosphere/libexosphere.mk clean ATMOSPHERE_CPU="$(strip $(ATMOSPHERE_BOOT_CPU))"
rm -rf $(CURRENT_DIRECTORY)/$(ATMOSPHERE_OUT_DIR)
$(CURRENT_DIRECTORY)/$(ATMOSPHERE_OUT_DIR) $(CURRENT_DIRECTORY)/$(ATMOSPHERE_BUILD_DIR):
@[ -d $@ ] || mkdir -p $@
.PHONY: dist dist-no-debug clean package3 emummc fusee stratosphere mesosphere exosphere troposphere
================================================
FILE: config_templates/exosphere.ini
================================================
# Key: debugmode, default: 1.
# Desc: Controls whether kernel is debug mode.
# Disabling this will break Atmosphere.
# Key: debugmode_user, default: 0.
# Desc: Controls whether userland is debug mode.
# Key: disable_user_exception_handlers, default: 0.
# Desc: Controls whether user exception handlers are executed on error.
# NOTE: This will cause atmosphere to not fail gracefully.
# Support may not be provided to users tho disable these.
# If you do not know what you are doing, leave them on.
# Key: enable_user_pmu_access, default: 0.
# Desc: Controls whether userland has access to the PMU registers.
# NOTE: It is unknown what effects this has on official code.
# Key: blank_prodinfo_sysmmc, default: 0.
# Desc: Controls whether PRODINFO should be blanked in sysmmc.
# This will cause the system to see dummied out keys and
# serial number information.
# NOTE: This is not known to be safe, as data may be
# cached elsewhere in the system. Usage is not encouraged.
# Key: blank_prodinfo_emummc, default: 0.
# Desc: Controls whether PRODINFO should be blanked in emummc.
# NOTE: This is not known to be safe, as data may be
# cached elsewhere in the system. Usage is not encouraged.
# Key: allow_writing_to_cal_sysmmc, default: 0.
# Desc: Controls whether PRODINFO can be written by homebrew in sysmmc.
# NOTE: Usage of this setting is strongly discouraged without
# a safe backup elsewhere. Turning this on will also cause Atmosphere
# to ensure a safe backup of calibration data is stored in unused
# mmc space, encrypted to prevent detection. This backup can be used
# to prevent unrecoverable edits in emergencies.
# Key: log_port, default: 0.
# Desc: Controls what uart port exosphere will set up for logging.
# NOTE: 0 = UART-A, 1 = UART-B, 2 = UART-C, 3 = UART-D
# Key: log_baud_rate, default: 115200
# Desc: Controls the baud rate exosphere will set up for logging.
# NOTE: 0 is treated as equivalent to 115200.
# Key: log_inverted, default: 0.
# Desc: Controls whether the logging uart port is inverted.
[exosphere]
debugmode=1
debugmode_user=0
disable_user_exception_handlers=0
enable_user_pmu_access=0
blank_prodinfo_sysmmc=0
blank_prodinfo_emummc=0
allow_writing_to_cal_sysmmc=0
log_port=0
log_baud_rate=115200
log_inverted=0
================================================
FILE: config_templates/hbl_html/accessible-urls/accessible-urls.txt
================================================
^http*
================================================
FILE: config_templates/override_config.ini
================================================
[hbl_config]
; Program Specific Config
; Up to 8 program-specific configurations can be set.
; These use `program_id_#`, `override_address_space_#`, and `override_key_#`
; where # is in range [0,7].
; program_id_0=010000000000100D
; override_address_space=39_bit
; override_key_0=!R
; Any Application Config
; Note that this will only apply to program IDs that
; are both applications and not specified above
; by a program specific config.
; override_any_app=true
; override_any_app_key=R
; override_any_app_address_space=39_bit
; path=atmosphere/hbl.nsp
[default_config]
; override_key=!L
; cheat_enable_key=!L
================================================
FILE: config_templates/stratosphere.ini
================================================
[stratosphere]
; To force-enable nogc, add nogc = 1
; To force-disable nogc, add nogc = 0
================================================
FILE: config_templates/system_settings.ini
================================================
[eupld]
; Disable uploading error reports to Nintendo
; upload_enabled = u8!0x0
[usb]
; Enable USB 3.0 superspeed for homebrew
; 0 = USB 3.0 support is system default (usually disabled), 1 = USB 3.0 support is enabled.
; usb30_force_enabled = u8!0x0
[ro]
; Control whether RO should ease its validation of NROs.
; (note: this is normally not necessary, and ips patches can be used.)
; ease_nro_restriction = u8!0x1
[lm]
; Control whether lm should log to the SD card.
; Note that this setting does nothing when log manager is not enabled.
; enable_sd_card_logging = u8!0x1
; Control the output directory for SD card logs.
; Note that this setting does nothing when log manager is not enabled/sd card logging is not enabled.
; sd_card_log_output_directory = str!atmosphere/binlogs
; Atmosphere custom settings
[erpt]
; Control whether erpt reports should always be preserved, instead of automatically cleaning periodically.
; disable_automatic_report_cleanup = u8!0x0
[atmosphere]
; Reboot from fatal automatically after some number of milliseconds.
; If field is not present or 0, fatal will wait indefinitely for user input.
; fatal_auto_reboot_interval = u64!0x0
; Make the power menu's "reboot" button reboot to payload.
; Set to "normal" for normal reboot, "rcm" for rcm reboot.
; power_menu_reboot_function = str!payload
; Controls whether dmnt cheats should be toggled on or off by
; default. 1 = toggled on by default, 0 = toggled off by default.
; dmnt_cheats_enabled_by_default = u8!0x1
; Controls whether dmnt should always save cheat toggle state
; for restoration on new game launch. 1 = always save toggles,
; 0 = only save toggles if toggle file exists.
; dmnt_always_save_cheat_toggles = u8!0x0
; Enable writing to BIS partitions for HBL.
; This is probably undesirable for normal usage.
; enable_hbl_bis_write = u8!0x0
; Enable reading the CAL0 partition for HBL.
; This is probably undesirable for normal usage.
; enable_hbl_cal_read = u8!0x0
; Controls whether fs.mitm should redirect save files
; to directories on the sd card.
; 0 = Do not redirect, 1 = Redirect.
; NOTE: EXPERIMENTAL
; If you do not know what you are doing, do not touch this yet.
; fsmitm_redirect_saves_to_sd = u8!0x0
; Controls whether am sees system settings "DebugModeFlag" as
; enabled or disabled.
; 0 = Disabled (not debug mode), 1 = Enabled (debug mode)
; enable_am_debug_mode = u8!0x0
; Controls whether dns.mitm is enabled
; 0 = Disabled, 1 = Enabled
; enable_dns_mitm = u8!0x1
; Controls whether dns.mitm uses the default redirections in addition to
; whatever is specified in the user's hosts file.
; 0 = Disabled (use hosts file contents), 1 = Enabled (use defaults and hosts file contents)
; add_defaults_to_dns_hosts = u8!0x1
; Controls whether dns.mitm logs to the sd card for debugging
; 0 = Disabled, 1 = Enabled
; enable_dns_mitm_debug_log = u8!0x0
; Controls whether htc is enabled
; 0 = Disabled, 1 = Enabled
; enable_htc = u8!0x0
; Controls whether atmosphere's log manager is enabled
; Note that this setting is ignored (and treated as 1) when htc is enabled.
; 0 = Disabled, 1 = Enabled
; enable_log_manager = u8!0x0
; Controls whether the bluetooth pairing database is redirected to the SD card (shared across sysmmc/all emummcs)
; NOTE: On <13.0.0, the database size was 10 instead of 20; booting pre-13.0.0 will truncate the database.
; 0 = Disabled, 1 = Enabled
; enable_external_bluetooth_db = u8!0x0
[hbloader]
; Controls the size of the homebrew heap when running as applet.
; If set to zero, all available applet memory is used as heap.
; The default is zero.
; applet_heap_size = u64!0x0
; Controls the amount of memory to reserve when running as applet
; for usage by other applets. This setting has no effect if
; applet_heap_size is non-zero. The default is 0x8600000.
; applet_heap_reservation_size = u64!0x8600000
================================================
FILE: docs/building.md
================================================
# Building Atmosphère
Building Atmosphère is a very straightforward process that relies almost exclusively on tools provided by the [devkitPro](https://devkitpro.org) organization.
## Dependencies
+ [devkitA64](https://devkitpro.org)
+ [devkitARM](https://devkitpro.org)
+ [Python 2](https://www.python.org) (Python 3 may work as well, but this is not guaranteed)
+ [LZ4](https://pypi.org/project/lz4)
+ [PyCryptodome](https://pypi.org/project/pycryptodome) (optional)
+ [hactool](https://github.com/SciresM/hactool)
## Instructions
1. Follow the guide located [here](https://devkitpro.org/wiki/Getting_Started) to install and configure all the tools necessary for the build process.
2. Install the following packages via (dkp-)pacman:
+ `switch-dev`
+ `switch-glm`
+ `switch-libjpeg-turbo`
+ `devkitARM`
+ `devkitarm-rules`
+ `hactool`
3. Install the following library via python's package manager `pip`, required by [exosphere](components/exosphere.md):
+ `lz4`
4. Finally, clone the Atmosphère repository and run `make` under its root directory.
================================================
FILE: docs/changelog.md
================================================
# Changelog
## 1.10.2
+ Basic support was added for 21.2.0.
+ General system stability improvements to enhance the user's experience.
## 1.10.1
+ Basic support was added for 21.1.0.
+ A bug was fixed that caused some games (e.g. Tomb Raider definitive edition) to fail to launch.
+ General system stability improvements to enhance the user's experience.
## 1.10.0
+ Basic support was added for 21.0.0.
+ The console should boot and atmosphère should be fully functional.
+ **Please note**: All homebrew software may need to be re-compiled with the latest libnx (>= 4.10.0), or else it may crash/experience memory corruption.
+ Nintendo broke the userland<->kernel TLS ABI in 21.0.0, by writing to previously reserved space.
+ Homebrew used this reserved space for its TLS slots, which means any homebrew software using TLS slots will experience memory corruption when running under Atmosphere 1.10.0.
+ This doesn't appear to impact everything, but a large portion of tested homebrew crashes (often on exit), and so will need re-compile for the new ABI.
+ For those technically inclined, while TLS slots are rarely used by developers, they're used to implement features like e.g. C++ exceptions under the hood, and so anything using those crashes, etc.
+ To help make this transition easier, hbmenu now shows a warning when selecting homebrew compiled with an older, incompatible ABI version.
+ I apologize for the hassle in general.
+ libnx has been updated so that its reserved space matches Nintendo's now -- this particular issue can never occur again, even if Nintendo touches more reserved space.
+ `exosphère` was updated to reflect the latest official secure monitor behavior.
+ `mesosphère` was updated to reflect the latest official kernel behavior.
+ `loader` was updated to reflect the latest official behavior.
+ `pm` was updated to reflect the latest official behavior.
+ `erpt` was updated to reflect the latest official behavior.
+ `pgl` was updated to reflect the latest official behavior.
+ `fatal` was updated to reflect the latest official behavior.
+ Support was added for launching another game-which-has-too-many-files with romfs mods.
+ I rely on user reports for adding support/fixing these, and some of these games can be pretty obscure!
+ If you are affected by this, you will see "Data abort (0x101)" when trying to launch the game with mods.
+ Please reach out to `sciresm` on discord if this occurs to share your error report binary.
+ Although some games may be impossible to fix, I believe I can get almost everything working, so please let me try to help you (and improve atmosphère's support!) if you run into this!
+ General system stability improvements to enhance the user's experience.
## 1.9.5
+ Basic support was added for 20.5.0.
+ General system stability improvements to enhance the user's experience.
## 1.9.4
+ Basic support was added for 20.4.0.
+ An issue was fixed in `exosphère`'s register accessilibity tables (thanks @CTCaer).
+ I believe this had no impact on official code, though it would have prevented some homebrew from interacting correctly with the MC0/MC1 registers.
+ An issue was fixed that could cause a deadlock when building multiple romfs images simultaneously (thanks @Ereza).
+ This fixes support for certain mods, e.g. system language translations overriding content for both overlayDisp and qlaunch.
+ General system stability improvements to enhance the user's experience.
## 1.9.3
+ Basic support was added for 20.3.0.
+ Compatibility was fixed for loading mods with KOTOR 2 (star wars).
+ General system stability improvements to enhance the user's experience.
## 1.9.2
+ Basic support was added for 20.2.0.
+ USB 3.0 support force-enable was fixed for 20.1.0+.
+ General system stability improvements to enhance the user's experience.
## 1.9.1
+ Basic support was added for 20.1.0.
+ General system stability improvements to enhance the user's experience.
## 1.9.0
+ Basic support was added for 20.0.0.
+ The console should boot and atmosphère should be fully functional. However, not all modules have been fully updated to reflect the latest changes.
+ There shouldn't be anything user visible resulting from this, but it will be addressed in a future atmosphère update.
+ The same action item from 18.0.0 remains, and I believe in my heart of hearts that it will be addressed eventually. Someone has told me they're working on it.
+ There aren't (to my knowledge) outstanding 19.0.0 items any more.
+ **Please note**: As a result of changes made to nintendo's software in 20.0.0, there is roughly 10MB less memory available for custom system modules.
+ We can only steal a maximum of 14MB from the applet pool, down from 40MB.
+ To compensate for this, `ams.mitm`'s heap usage has been reduced by 20MB.
+ To facilitate this, a new helper module (`memlet`) was added, so that memory may be temporarily stolen during the romfs building process.
+ Hopefully, this results in relatively little breakage, however it is possible that user mods which replace extremely large numbers of files in The Legend of Zelda: Tears of the Kingdom may no longer function.
+ If you are affected by this, you will see "Data abort (0x101)" when trying to launch the game with mods.
+ Please reach out to `sciresm` on discord if this occurs to share your error report binary. However, some issues may be impossible to fix.
+ I apologize sincerely if the issue is impossible to resolve, but I have been forced unavoidably to make compromises here, and I think this is the best balance to be struck.
+ `exosphère` was updated to reflect the latest official secure monitor behavior.
+ `mesosphère` was updated to reflect the latest official kernel behavior.
+ `loader` was updated to reflect the latest official behavior.
+ `pm` was updated to reflect the latest official behavior.
+ `ncm` was partially updated to reflect the latest official behavior.
+ `erpt` was updated to reflect the latest official behavior.
+ Atmosphère was updated to use GCC 15/newlib (latest devkitA64/devkitARM releases).
+ A number of improvements were made to the dmnt cheat engine.
+ New instructions were added, and instructions were updated for improved/new functionality.
+ Please see the documents for details -- thanks @tomvita!
+ General system stability improvements to enhance the user's experience.
## 1.8.0
+ Basic support was added for 19.0.0.
+ The console should boot and atmosphère should be fully functional. However, not all modules have been fully updated to reflect the latest changes.
+ There shouldn't be anything user visible resulting from this, but it will be addressed in a future atmosphère update. There is still one action item from 18.0.0 to be addressed, as well.
+ `exosphère` was updated to reflect the latest official secure monitor behavior.
+ `mesosphère` was updated to reflect the latest official kernel behavior.
+ `loader` was updated to reflect the latest official behavior.
+ `pm` was updated to reflect the latest official behavior.
+ `ro` was updated to reflect the latest official behavior.
+ `creport`'s file acces patterns were optimized, greatly improving performance when generating a crash report.
+ Atmosphère now uses `relr` relocations where possible.
+ This reduces the filesize of a number of atmosphère's modules.
+ A number of minor issues were fixed and improvements were made, including:
+ Support was fixed for running Atmosphère on newer units with specific Hynix/Micron DRAM chips.
+ General system stability improvements to enhance the user's experience.
## 1.7.1
+ Support was added for 18.1.0.
+ Atmosphère was updated to use GCC 14/newlib (latest devkitA64/devkitARM releases).
+ Further changes were for 18.0.0:
+ `loader` was updated to reflect the latest official behavior.
+ General system stability improvements to enhance the user's experience.
## 1.7.0
+ Basic support was added for 18.0.0.
+ The console should boot and atmosphère should be fully functional. However, not all modules have been fully updated to reflect the latest changes.
+ There shouldn't be anything user visible resulting from this, but it will be addressed in a future atmosphère update, once I am not traveling so much.
+ `exosphère` was updated to reflect the latest official secure monitor behavior.
+ `mesosphère` was updated to reflect the latest official kernel behavior.
+ `spl` was updated to reflect the latest official behavior.
+ `fusee`'s no longer supports applying IPS patches to KIPs.
+ The only KIPs that are ever present are a) atmosphère modules, b) custom system modules, or c) FS.
+ The IPS subsystem was originally designed to make nogc patches work for FS, but these are now internal, and it appears the literal only kip patches that exist are for piracy.
+ I could not find any kip patches posted anywhere made for any other purpose.
+ It fundamentally does not make sense to slow down boot for every normal user for a feature that has no actual use-case, especially when `fusee` seeks to be a minimal bootloader.
+ Minor improvements were made to atmosphere's gdbstub, including:
+ Support was added for QStartNoAckMode.
+ An issue was fixed that could cause a fatal error when creating too many breakpoints.
+ A number of minor issues were fixed and improvements were made, including:
+ `pt-BR` (`PortugueseBr`) is now accepted as a valid language when overriding game locales.
+ A bug was fixed that could cause atmosphere to incorrectly serialize output object IDs over IPC when using domain objects.
+ A bug was fixed in `pm`'s resource limit boost logic that could potentially cause legitimate boosts to fail in certain circumstances.
+ `loader`/`ro` will now throw a fatal error when using invalid IPS patches that go out of bounds, instead of corrupting memory.
+ Support was fixed for booting using a memory configuration of half of the true available memory (e.g. forcing a 4GB configuration on an 8GB board).
+ General system stability improvements to enhance the user's experience.
## 1.6.2
+ Support was finished for 17.0.0.
+ `erpt` was updated to support the latest official behavior.
+ `jpegdec` was updated to support the latest official behavior.
+ `pm` was updated to support the latest official behavior.
+ General system stability improvements to enhance the user's experience.
## 1.6.1
+ An improved solution to [the problem that would cause consoles which had previously re-built their SYSTEM partition to brick on update-to-17.0.0](https://gist.github.com/SciresM/2ddb708c812ed585c4d99f54e25205ff) was added.
+ In particular, booting atmosphère will now automatically detect the problem and unbrick any consoles which have fallen into this state.
+ Some improvements were made to `haze`, including:
+ Performance was greatly improved:
+ Support was added for GetObjectPropList, which decreases the amount of requests made by ~8x.
+ Haze now performs rendering on the GPU, freeing up the CPU to respond to requests in a more timely manner.
+ An issue was fixed with how `haze` configures `bMaxPacketSize0` which improves support for USB3.
+ General system stability improvements to enhance the user's experience.
## 1.6.0
+ Basic support was added for 17.0.0.
+ The console should boot and atmosphère should be fully functional. However, not all modules have been fully updated to reflect the latest changes.
+ There shouldn't be anything user visible resulting from this, but it will be addressed in a soon-to-come atmosphère update.
+ `exosphère` was updated to reflect the latest official secure monitor behavior.
+ `mesosphère` was updated to reflect the latest official kernel behavior.
+ `ncm` was updated to reflect the latest official behavior.
+ `erpt` was partially updated to support the latest official behavior.
+ Atmosphere's gdbstub now supports waiting to attach to a specific program id on launch (as opposed to any application).
+ The monitor command for this is `monitor wait <hex program id>`, where program id can optionally have an `0x` prefix.
+ Support was added to `haze` for editing files in-place and performing 64-bit transfers (files larger than 4 GB).
+ `bpc.mitm` was enabled on Mariko units, and now triggers pmic-based shutdowns/reboots (thanks @CTCaer).
+ This should cause the console to no longer wake ~15 seconds after shutdown on Mariko.
+ A number of minor issues were fixed and improvements were made, including:
+ A workaround was added for a change in 17.0.0 that would cause consoles which had previously re-built their SYSTEM partition to brick on update-to-17.0.0.
+ General system stability improvements to enhance the user's experience.
## 1.5.5
+ Support was added for 16.1.0.
+ General system stability improvements to enhance the user's experience.
## 1.5.4
+ Experimental new functionality was implemented to prevent crashing when building romfs for certain games with obscene file counts.
+ This includes both Fire Emblem: Engage (~190000 files), and The Legend of Zelda: Tears of the Kingdom (~300000) files.
+ The solution involved adding functionality to ams.mitm/pm to dynamically steal memory from the application (and system) pool as needed when the games have romfs mods.
+ No memory is taken, and there is no cost to this functionality when playing without mods (or with overrides disabled).
+ The Legend of Zelda: Tears of the Kingdom is currently the absolute worst case game, requiring ~48 MB of memory to build a romfs image to play with mods.
+ Right now, the memory is sourced as follows: 32 MB (base ams.mitm heap), 10 MB (stolen from application pool), 8 MB (dynamically stolen from system pool).
+ This is 50 MB, which allows a little overhead in the worst case (prevents crashing due to exhausting the heap for other allocations in ams.mitm).
+ Zelda is remarkably sensitive to memory being stolen from the application pool, tolerating no more than 16 MB on 1.0.0 and 12 MB on 1.1.0. I have chosen to steal 10 MB, to be safe, for now.
+ This may break on a future game update, but I will fix it if and when that happens. There is no perfect solution; the game simply requires too much memory to support mods flawlessly, and I am forced to compromise.
+ As usual, if you encounter a game that exhausts ams.mitm's memory (crashing it) when loading layeredfs mods, please contact `SciresM#0524`.
"I am jinxing myself by saying this, but it's really hard to imagine any game being worse than The Legend of Zelda: Tears of the Kingdom, but if it happens again I will drop everything to fix it as usual".
+ General system stability improvements to enhance the user's experience.
## 1.5.3
+ Support was added for 16.0.3.
+ Atmosphère was updated to use GCC 13/newlib (latest devkitA64/devkitARM releases).
+ **Please note**: This introduces a known issue, which is currently being worked on.
+ As you may recall from the 1.4.1 changelog, Fire Emblem: Engage requires enormous amounts of memory to support using layeredfs mods with the game.
+ Latest GCC/newlib slightly increases malloc overhead size, which makes the previous memory increase insufficient.
+ A general-case solution to this is in the works, which should hopefully fix the problem in a way that doesn't jinx me for the future.
+ A number of minor issues were fixed and improvements were made, including:
+ An issue was fixed that caused system font replacement to not work on 16.0.0+.
+ An minor accuracy issue was addressed in mesosphere's management of certain memory ranges; this issue would have had zero visible impact to the end-user.
+ General system stability improvements to enhance the user's experience.
## 1.5.2
+ A homebrew application (`haze`) was added for performing USB file transfer (with thanks to @liamwhite for both design and implementation).
+ `haze` is included with atmosphère, and provides access to the SD card via the PTP/MTP protocol.
+ **Please note**: haze will show inside the homebrew menu under the name "USB File Transfer".
+ **Please note**: Atmosphère cannot be updated at runtime, and trying to install an atmosphère update via haze will fail as usual.
+ General system stability improvements to enhance the user's experience.
## 1.5.1
+ `fatal` was updated to reduce memory footprint.
+ Starting in 16.0.0, official `fatal` has no framebuffer or rendering logic, and instead calls other system service commands to draw the screen.
+ However, these commands aren't usable by atmosphère (too small rendering window, bad color support).
+ To reduce the relative memory footprint differential between atmosphère and official code, the framebuffer (2 MB) is now dynamically allocated when needed.
+ This will try to allocate from multiple pools (preferring System > System_NonSecure > Application).
+ This technically requires that 2 MB be available in at least one of these pools for the fatal screen to render (otherwise, a reboot-to-black-and-white-fatal will occur), but this should be a non-issue in almost all cases.
+ A feature was added to optionally mirror the bluetooth pairing database to the SD card (thanks @ndeadly).
+ This allows device pairings to be automatically kept in-sync across sysmmc/all emummcs.
+ This is opt-in, and can be controlled by setting `atmosphere!enable_external_bluetooth_db = u8!0x1`.
+ When enabled, the pairing database will be synchronized to `/atmosphere/bluetooth_devices.db`.
+ General system stability improvements to enhance the user's experience.
## 1.5.0
+ Support was added for 16.0.0
+ `mesosphère` was updated to reflect the latest official kernel behavior.
+ `ncm` was updated to reflect the latest official behavior.
+ Many FS apis were updated under the hood to reflect the latest official behavior.
+ **Please Note**: 16.0.0 made breaking changes to a number of system APIs, including in FS/NCM/Shared Font commands that some homebrew programs may use.
+ These programs may encounter strange errors, and may need to be recompiled with a libnx updated to support 16.0.0's changes to function properly.
+ A number of minor issues were fixed and improvements were made, including:
+ An issue was fixed that could cause GPIO outputs to be misconfigured under certain circumstances.
+ General system stability improvements to enhance the user's experience.
## 1.4.1
+ A number of minor issues were fixed and improvements were made, including:
+ `dmnt` cheat toggle files are no longer ignored when they are missing a trailing newline.
+ The mechanism for automatically cleaning up `erpt_reports` added in 1.3.0 was fixed.
+ This was actually just very fundamentally broken and has never worked, but it is verified working now.
+ Minor fixes were made in `mesosphère` to match official kernel behavior (spin lock assembly was corrected, wrong result on failure in in GetProcessId was corrected).
+ A missing call to GetSdStatus when initializing SD cards at non uhs-i mode was added in the sdmmc driver.
+ `ams.mitm`'s memory usage was increased by 16 MB, to prevent crashing when building romfs for games with obscene file counts.
+ To quote the changelog for 1.2.3: "Animal Crossing's 2.0.0 update contains >99000 files [...] It's really hard to imagine any game being worse than Animal Crossing".
+ As it turns out, Fire Emblem: Engage has ~186000 files, and is approximately twice as bad as animal crossing.
+ The additional memory here is taken from the applet pool; no issues are expected to arise from this, but please report anything you may run into.
+ As usual, if you encounter a game that exhausts ams.mitm's memory (crashing it) when loading layeredfs mods, please contact `SciresM#0524`.
+ I am jinxing myself by saying this, but it's really hard to imagine any game being worse than Fire Emblem: Engage, but if it happens again I will drop everything to fix it as usual.
+ General system stability improvements to enhance the user's experience.
## 1.4.0
+ Support was added for 15.0.0.
+ `mesosphère` was updated to reflect the latest official kernel behavior.
+ `ncm` was updated to reflect the latest official behavior.
+ A number of minor issues were fixed and improvements were made, including:
+ The capacity limit on registered add-on contents was fixed in NCM to reflect the increase that occurred in 12.0.0.
+ An off-by-one was fixed in mesosphere when computing the new value for an address arbiter signaled with ModifyByWaitingCountIfEqual.
+ dmnt.gen2's gdbstub now sanitizes thread names to prevent invalid characters from breaking gdb.
+ dmnt.gen2's gdbstub now reports the architecture tag correctly when attached to 32-bit processes.
+ Support for program-specific html manual content overrides was added for non-hbl takeover context.
+ A bug was fixed in how emummc constructed the alternate Nintendo directory path.
+ Previously, this was using `/*/Nintendo/Nintendo` instead of `/*/Nintendo`.
+ Code was added to automatically move the old folders to the new ones when booting into emummc.
+ A bug was fixed in boot that caused an incorrectly low input voltage limit to be set.
+ General system stability improvements to enhance the user's experience.
## 1.3.2
+ Support was improved for 14.0.0+.
+ `loader` was updated to reflect the latest official behaviors.
+ `ro` was updated to reflect the latest official behaviors.
+ A number of minor issues were fixed and improvements were made, including:
+ A memory leak was fixed in filesystem path management; this could cause a crash when launching games ~100 times, or when deleting/re-downloading games.
+ A bug was fixed that could cause threads to not see a newly signaled semaphore.
+ A number of minor inaccuracies were fixed in the updated FileSystem APIs.
+ General system stability improvements to enhance the user's experience.
## 1.3.1
+ Support was added for 14.1.0.
+ A number of minor under the hood improvements to accuracy were made to better reflect latest official system module behavior, particularly around FS apis.
+ General system stability improvements to enhance the user's experience.
## 1.3.0
+ Support was added for 14.0.0.
+ `mesosphère` was updated to reflect the latest official kernel behavior.
+ `erpt` was updated to reflect the latest official behaviors.
+ `pm` was updated to reflect the latest official behaviors.
+ `fatal` was updated to reflect the latest official behaviors.
+ A mechanism for automatically cleaning up `erpt_reports` was added.
+ When booting, if the console has more than 1000 reports inside `/atmosphere/erpt_reports`, the folder will be cleaned to empty.
+ This behavior can be disabled by setting `erpt!disable_automatic_report_cleanup` = u8!0x1 in system_settings.ini.
+ Atmosphère's build system was re-written, and now allows globally building for various builds/configs.
+ All boards now automatically support release/debugging/auditing targets; it is now possible to build a full debugging/auditing build of atmosphère for the first time.
+ Support was added for compiling libstratosphère to run on PC.
+ The currently implemented/tested targets are Windows (x64), Linux (x64, arm64), macOS (x64, arm64).
+ If you are a developer interested in adding support for another target, please reach out to `SciresM#0524` on discord.
+ This is intended to finally allow sanely testing Atmosphère's code, by allowing most of it to run on a PC (with access to a debugger) instead of on game console hardware.
+ In addition, this will allow making PC tools which reuse code written for Atmosphère directly..
+ **Please Note**: This has no relation to interacting with official software on PC whatsoever. This really allows for making tests and self-contained atmosphère-based command-line tools; the Atmosphère project continues to have zero interest in attempting to run official software of any kind.
+ In the course of adding this support (and working on tooling using it), a number of fairly major revisions were made to stratosphere (particularly surrounding filesystem code).
+ **Please Note**: A number of changes made for this (and ones necessary in the process of adding support for 14.0.0) are api-breaking.
+ If you're a developer and any of this caused your code to break, please feel free to contact `SciresM#0524` for help updating your program.
+ General system stability improvements to enhance the user's experience.
## 1.2.6
+ Support was added for 13.2.1.
+ A number of minor issues were fixed and improvements were made, including:
+ A minor performance improvement was implemented in service table dispatch by sorting and binary-searching the service command table instead of using linear search.
+ Static initialization logic in Atmosphere was made much more regular.
+ General system stability improvements to enhance the user's experience.
## 1.2.5
+ Support was added for 13.2.0.
+ A number of minor issues were fixed and improvements were made, including:
+ A bug was fixed that caused `mesosphère` to underreport the total memory size by 8MB for certain games which use newer system-resource-size memory management.
+ This caused FIFA 19 to crash, and possibly other issues.
+ Memory management changes were made to `sm` that save 0x5000 of memory.
+ A microoptimization was made to the way `mesosphère` manages updating the debug register for hardware single-step support.
+ Support was fixed for enabling `usb!usb30_force_enabled` on 13.0.0+.
+ The work-in-progress unit testing framework was updated to use doctest instead of catch2.
+ General system stability improvements to enhance the user's experience.
## 1.2.4
+ Changes were made to the way fs.mitm builds images when providing a layeredfs romfs.
+ Cache management (to avoid unnecessary rebuild) was revised, to add a grace period of ~500ms-1s between process closing romfs image and ams.mitm needing to rebuild if romfs is re-opened.
+ This makes our cache much more effective, previously we were re-building romfs several times.
+ RomFS image ownership was overhauled, with a new reference-counting implementation added (used to implement the above grace period).
+ Certain games (e.g. Puyo Puyo Tetris 2, probably others) were sensitive to this timing, and could use access patterns which would trigger creation of romfs image while previous romfs image was in the middle of destructor.
+ This could cause a fatal error, because the destructor for the old image could run simultaneously with building the new image.
+ This also provides a speedup versus the 1.2.3 code, with Animal Crossing now taking ~8 fewer seconds to get past the Nintendo Switch logo.
+ General system stability improvements to enhance the user's experience.
## 1.2.3
+ Because ams.TMA is taking longer to develop than expected, experimental support for Atmosphère's gdbstub as a standalone is now available.
+ To enable it, set `atmosphere!enable_standalone_gdbstub` = u8!0x1 in system_settings.ini.
+ The standalone also requires `atmosphere!enable_htc` = u8!0x0, but this should be the case for everyone since ams.TMA isn't actually usable yet.
+ Once enabled, open the devkitPro provided-gdb (`aarch64-none-elf-gdb` for 64-bit or `arm-none-eabi-gdb` for 32-bit).
+ The standalone stub exposes itself on port 22225 -- so the command to connect is `target extended-remote <ip address>:22225`.
+ Type `info os processes` to get a list of process IDs that can be attached to.
+ The stub should work on both system programs, games, and homebrew -- but please note that debugging certain processes (like sockets) can cause hang due to the stub using them itself.
+ Software break-points, hardware break-points, hardware watch-points, and hardware single-step are all supported/implemented.
+ The following monitor commands are currently supported:
+ `monitor get info`: Get process info, address space layout, and information on modules.
+ `monitor get mappings`: Get all memory mappings.
+ `monitor get mapping <addr>`: Get the memory mapping for a specific address.
+ `monitor wait application`: Causes the stub to wait for an application to be launched. The next application will be started suspended.
+ User is expected to send `attach <pid>` after launching, which will cause attach-on-first-instruction. Failure to attach may cause system instability, this probably needs work.
+ **Please Note**: The GDBstub is new and may have bugs/need work. If you find issues, please report them to SciresM#0524 -- all help finding/fixing bugs is appreciated, here.
+ Generally speaking, if you would like to report information about fixes needed/discuss development of the gdbstub, join ReSwitched's #dev-support channel.
+ Changes were made to the way fs.mitm builds images when providing a layeredfs romfs.
+ Animal Crossing's 2.0.0 update contains >99000 files, and has tables so big that we ran out of memory even after the optimizations made in 0.10.5.
+ Previously, we used fixed-sized 0x40000 work buffers for file/directory tables and simultaneously built hash/content tables in one loop over files/directories.
+ We now iterate over the file/directory tables multiple times, first once to determine the hash table indices, then repeatedly to build hash tables, then once to build content tables.
+ We also now allow smaller-than-0x40000 work buffers, trying half-as-big buffers until allocation succeeds (or work buffer would be <0x4000, which is a safeguard against truly horrible performance).
+ There is a slight speed penalty to these changes, but it's on the order of seconds for the worst case (Animal Crossing) and trivial for most games with reasonable tables.
+ If you encounter a game that exhausts ams.mitm's memory (crashing it) when loading layeredfs mods, please contact `SciresM#0524`.
+ It's really hard to imagine any game being worse than Animal Crossing, but if it happens again I will drop everything to fix it as usual.
+ `creport` now attempts to parse symbol tables if present.
+ If a game executable has a symbol for a given address, the function-relative-offset will now be printed after the module-relative-offset.
+ General system stability improvements to enhance the user's experience.
## 1.2.2
+ A number of fixes were made to Atmosphère's implementation of the new "sprofile" service added in 13.0.0.
+ Nintendo is finally transmitting data over the internet to certain consoles, which has allowed for validating our service implementation.
+ Unfortunately, there were several problems, and if your console began trying to use the new services atmosphere would show a fatal error with code 0xCAF6 (sprofile::ResultInvalidState()).
+ With actual test data in hand, a test program was written and it was verified that our implementation can successfully import/access profile data now.
+ Hopefully there are no more issues, and I sincerely apologize for anyone who got an 0xCAF6 fatal due to this.
+ A number of minor improvements were made to `mesosphère`, including:
+ KThread::GetContextForSchedulerLoop was implemented in assembly (using static assertions to verify offset-of-context-in-struct is correct).
+ This saves an unnecessary function call in the middle of the scheduler hot loop, replacing it with an addition instruction, which should improve microperformance.
+ Mesosphere's hardware maintenance instructions were audited via a script and now directly match Nintendo's kernels.
+ Notably, this inserts a missing instruction synchronization barrier when validating that slab heaps may be constructed.
+ This missing ISB could cause an abort on certain (see: particularly sensitive) hardware on boot if the relevant codepath was speculatively executed (it normally only executes on game launch...)
+ The SVC handlers for performing light IPC (normally unused) from 32-bit process were fixed in Mesosphere.
+ A bug was fixed that would cause the register x27 to be overwritten with the contents of x26 when returning from a user exception handler.
+ A bug was fixed that would cause the kernel to use the userland stack pointer instead of the kernel stack pointer while generating an error report for a kernel abort.
+ General system stability improvements to enhance the user's experience.
## 1.2.1
+ Support was implemented for 13.1.0.
+ `mesosphère` was updated to reflect the kernel behavioral changes made in 13.1.0.
+ KScheduler now issues a data memory barrier when unlocking the scheduler lock and when early-returning due to top-thread-is-current during scheduling.
+ `erpt` was updated to reflect the latest official behaviors.
+ The new service added in 13.0.0 ("sprofile") was revised, and the data formats it expects was changed.
+ This still appears to be (possibly(?)) untestable due to data not being transmitted yet, but I have greater confidence things will go smoothly than I did when 1.1.0 released.
+ A number of improvements were made to `mesosphère`, including:
+ A build target was created to build targeting the qemu `virt` board.
+ This facilitates writing unit tests for the kernel (and other atmosphere components) and running them under PC.
+ **Please Note**: Official system software will not work at all under this, and the Atmosphère project has zero interest in attempting to run official software of any kind. This is unit testing machinery, and explicitly not more than that.
+ This should hopefully allow us to have greater confidence that all of atmosphere's components work the way they're theoretically supposed to in the future.
+ **Please Note**: If you are a developer who is familiar with the Horizon operating system (or capable of becoming familiar), I would greatly appreciate help writing tests and improving the testing framework.
+ Please contact `SciresM#0524` if you are capable and interested.
+ Really, if you are actually a developer who would like to help me get this off the ground, I would deeply appreciate it.
+ That said, if you are not a developer but want to be one, this probably isn't the best opportunity; I expect it to be highly technical.
+ Consider the ReSwitched discord's #hack-n-all channel for your educational purposes.
+ We are (at least for now) using [catch2](https://github.com/catchorg/Catch2) for unit tests.
+ Almost all virtual calls in the kernel are now resolved statically.
+ This eliminates substantial virtual call overhead, and should lead to improved kernel microperformance in pretty much every function.
+ The remaining red black tree find operations which weren't using the optimized "find key" variant are now using the optimized version.
+ Custom assembly was written to improve tick-to-timespan conversion.
+ This works around gcc emitting suboptimal assembly at -Os (it emits good assembly at -O3, clang is fine at both -O3 and -Os).
+ KThread and KSession structures were updated to optimize member layout, saving 0x10 bytes per KThread/KSession object.
+ Rather than unnecessarily zero-ing all data in kernel objects only to overwrite members later, we now only initialize the members we need to in kernel object constructors.
+ This is what Nintendo was doing already.
+ A set of custom optimized atomic primitives were implemented and are used in place of std::atomic<>
+ This works around a gcc bug which downgrades specified memory order to seq_cst, and introduces clrex in places where it is appropriate.
+ This should strictly improve microperformance of many system calls.
+ An compile-time toggleable extension was added to support 40-bit physical addresses in MapRange capabilities (using currently reserved bits).
+ A number of minor bugs were fixed, including:
+ Initial cache management now better reflects official behavior.
+ This fixes an issue that caused certain hardware with cache sensitivity to produce cryptic kernel panics during boot.
+ Incorrect logic when checking thread priority capabilities was fixed to reflect official behavior.
+ The scheduler was updated to reflect latest official behavior, and a number of minor bugs involving clz/ctz were fixed.
+ Accesses to the processes local region were fixed to properly use kernel linear region, not userland pointers.
+ The cache SVCs exposed for 32-bit processes now better reflect official core mask request semantics.
+ A bug was fixed that could cause a kernel panic if SvcArbitrateLock was called on a thread with exactly one reference in the middle of handling a user-mode exception.
+ General system stability improvements to enhance the user's experience.
## 1.2.0
+ `boot` was updated to reflect the latest official behavior for display/battery management.
+ This should fix any issues that might result from running older releases on the OLED model, if you're somehow in a position to do so.
+ The "target firmware" system was changed to allow the bootloader to specify an approximation, rather than the true target firmware.
+ Previously we expected compliant bootloaders to inspect SYSTEM:/ to determine the specific target firmware.
+ Now, we only require an approximate version, with major version == true major version and approximate version <= true version.
+ This greatly simplifies bootloader requirements, and correspondingly all code for accessing SYSTEM has been removed from fusee.
+ This should result in a substantial speedup when booting emummc with fusee, as SYSTEM accesses were the most expensive thing done previously.
+ This should resolve any inconsistency in firmware detection when booting via fusee vs hekate.
+ This should also improve our compatibility with micro firmware releases, making it more likely that atmosphere "just works" if nothing important has changed.
+ Dynamic resource limit determination logic was implemented in `pm` to match latest official behavior.
+ This greatly simplifies/makes consistent the resource limits on older firmwares, as well.
+ An enormous amount of refactoring was performed under the hood, including:
+ **Please Note**: If you are a developer who uses Atmosphere-libs, a number of changes here are breaking.
+ Feel free to contact SciresM#0524 for help updating your program.
+ The OS namespace had many primitives implemented/made more accurate.
+ Since mesosphere is now always-on, os::LightEvent (which required newer SVCs) is now globally usable (and used by stratosphere where relevant).
+ Assertions are now true no-ops when building for release.
+ Stratosphere is now built with -Wextra/-Werror.
+ Most "common" logic in system module main.cpp files was moved into libstratosphere.
+ **Please Note**: main.cpp files for prior atmosphere-libs will no longer work, for a really large number of reasons.
+ A number of longstanding code style issues were corrected.
+ Mesosphere now uses util::BitFlagSet for SVC permissions.
+ Mesosphere now puts its relocation table inside .bss, which allows that memory to be reclaimed after relocations are performed.
+ These changes save ~16KB of memory in the kernel, all said and done.
+ A number of locations in stratosphere where memory could be saved were spotted and taken advantage of, leading to ~150-200KB of saved memory.
+ The `spl` and `loader` system module was refactored to better reflect official logic.
+ `sf` ipc server code was updated to only emit mitm/defer logic when that logic is actually required somewhere in process.
+ `tipc` ipc server code was updated to reflect changes to official logic made in 13.0.0.
+ Many, many other minor changes, please talk to SciresM#0524 or read the relevant commits if you want to know more.
+ A number of minor issues were fixed, including:
+ Mesosphere's handling of SVC permissions on thread pin/unpin was updated to reflect official kernel behavior.
+ util::CountTrailingZeros() was fixed to calculate the correct value when used at compile-time.
+ General system stability improvements to enhance the user's experience.
## 1.1.1
+ A bug was fixed which caused some memory to leak when launching a game with mods enabled, eventually causing a crash after enough game launches without rebooting.
+ General system stability improvements to enhance the user's experience.
## 1.1.0
+ Support was implemented for 13.0.0.
+ `mesosphère` was updated to reflect the latest official kernel behavior.
+ `ncm` was updated to reflect the latest official behaviors.
+ `erpt` was updated to reflect the latest official behaviors.
+ Two new services ("sprofile") were added to `erpt`, and have been fully reimplemented.
+ **Please Note**: These services provide a way for settings to be pushed to consoles over the internet without system update.
+ Because there appear to be no settings pushed out yet, this implementation fundamentally cannot be fully tested right now, but hopefully there are no issues once settings begin being distributed.
+ The `LogManager` system module was reimplemented.
+ This system module provides services that some games use for logging.
+ Atmosphere's reimplementation supports logging to the SD card (if `lm!enable_sd_card_logging` is true) and to ams.TMA.
+ To control the directory where logs are saved, modify the `lm!sd_card_log_output_directory` setting.
+ Atmosphere's reimplementation is disabled by default (in order to save memory), but can be enabled by setting `lm!enable_log_manager` to true.
+ This will allow reading over logs from games which use the services (or potentially logging from homebrew in the future), which can be useful to developers.
+ Please note that when TMA is fully implemented in the future, enabling TMA will forcibly enable `LogManager`.
+ General system stability improvements to enhance the user's experience.
## 1.0.0
+ `fusee` was completely re-written in C++ to use the same atmosphere-libs APIs as the rest of atmosphere's code.
+ The rewrite was performed with a big emphasis on ensuring a good boot speed, and generally boot should be much faster than it was previously.
+ Depending on SD card/environment, boot speed may now be slightly faster than, roughly the same as, or slightly slower than when booting with hekate.
+ The obvious low-hanging fruit for performance improvements has been picked, so hopefully the improved performance is to everybody's liking.
+ SD card compatibility was improved: fusee should now have SD card compatibility identical to the official OS driver.
+ **Please Note**: various components were renamed (fusee-primary.bin -> fusee.bin, fusee-secondary.bin -> package3).
+ If you use another bootloader (like hekate), you may need to update your configuration to use the new layout.
+ **Please Note**: BCT.ini no longer exists, nogc configuration has been moved to `/atmosphere/stratosphere.ini`.
+ If you rely on custom nogc configuration, please be sure to update accordingly.
+ Custom splash screen BMP parsing is no longer supported (as it slows down boot for 99% of users).
+ To compensate for this, a script to insert a custom splash screen into a `package3` binary has been added to the `utilities` folder of the atmosphere repository.
+ The release build should be equivalent to running the following command from the root of the atmosphere repository: `python utilities/insert_splash_screen.py img/splash.png fusee/package3`
+ A number of pending changes were made, following the end of the relevant testing periods:
+ `mesosphere` is no longer opt-out, and stratosphere code will begin depending on its being present/in use.
+ `NCM` is no longer opt-out.
+ The cleanup to ease the transition from < 0.19.0 to 0.19.0 has been removed.
+ General system stability improvements to enhance the user's experience.
## 0.20.1
+ An issue was fixed that caused severely degraded performance after wake-from-sleep on Mariko hardware.
+ This was due to Mariko MTC resulting in a frequency of 1599.999MHz instead of 1600MHz.
+ Due to this off-by-one, Nintendo's EMC management code failed to initialize/take over, and after wake from sleep RAM would be in a strange state.
+ General system stability improvements to enhance the user's experience.
## 0.20.0
+ DRAM training (MTC) was implemented for Mariko hardware, increasing RAM speed from 204MHz to 1600MHz.
+ This significantly optimizes Mariko boot speed, cutting boot time roughly in half.
+ Typical boot time reductions (measured as "select fusee" to "home menu visible"):
+ Normal (Iowa): ~35 seconds -> ~18 seconds.
+ Lite (Hoag): ~65 seconds -> ~30 seconds.
+ NOTE: Work is being started on a re-written `fusee` component, with an eye specifically towards ensuring a good boot speed.
+ With any luck, boot will be much much faster on all units (Mariko and Erista) in an upcoming release.
+ Sept was replaced, and deleted from the repository.
+ Erista units now use a custom TSEC firmware to manage key derivation.
+ For more details, contact SciresM#0524 on discord.
+ This has a number of benefits, including:
+ This greatly simplifies key derivation logic by making it consistent on all firmwares.
+ Fusee no longer accesses/uses keyblobs at all, so units which have accidentally destroyed/lost keyblobs can boot without them.
+ This greatly increases stability (sept was the biggest source of boot failures).
+ This improves boot speed (sept rebooted multiple times, performed hardware init multiple times, and was generally very slow).
+ Atmosphère build process is now much saner.
+ A number of improvements were made to the dmnt cheat engine.
+ Cheats which take in a memory region operand may now use types "2" or "3" to perform accesses relative to the alias/aslr regions, respectively.
+ Support was added for an "else" opcode in the cheat engine, to make writing certain conditional logic more natural.
+ Support was added for a cheat orchestrator homebrew (like edizon) to detach from a cheat process/set the master cheat programmatically.
+ Daybreak now provides a warning when attempting to install a firmware newer than the highest version atmosphère knows it supports.
+ To facilitate this, exosphere now exposes the supported HOS version via an extension ConfigItem.
+ A number of minor issues were fixed, including:
+ Several mesosphere debug SVC implementations were updated to reflect the semantics of the latest kernel.
+ Support was fixed for deriving BIS encryption keys on certain prototype hardware.
+ General system stability improvements to enhance the user's experience.
## 0.19.5
+ Support was added for 12.1.0.
+ LayeredFS support was added for OpenDataStorageWithProgramIndex commands.
+ Certain games using newer (7.0.0+ APIs) which include multiple programs under a single title previously could not be modified.
+ These are now supported as normal, and LayeredFS should have 100% compatibility again.
+ A number of minor issues were fixed, including:
+ The Reboot to Payload NRO was updated to allow the OS to save state prior to rebooting (thanks @AuroraWright)!
+ An issue was fixed that could cause dns.mitm to fail when games requested resolution of an empty string.
+ An issue was fixed that caused a memory leak in the erpt system module.
+ This would eventually cause a system crash after ~540 reports were generated without rebooting.
+ A number of minor improvements were made to improve mesosphere's accuracy.
+ General system stability improvements to enhance the user's experience.
## 0.19.4
+ Support was added for 12.0.3.
+ A number of minor issues were fixed, including:
+ An issue was fixed that could cause heap memory corruption when allocation was highly contended.
+ An issue was fixed that could cause sleep to fail under certain conditions.
+ An issue was fixed that could cause a scheduler slow path to be taken more often than necessary.
+ General system stability improvements to enhance the user's experience.
## 0.19.3
+ Support was added for 12.0.2.
+ A number of minor issues were fixed, including:
+ An issue was fixed in dns.mitm that caused a crash when games attempted to resolve the IP address of nullptr.
+ An issue was fixed in erpt that would cause an abort when booting without having ever booted stock previously.
+ An issue was fixed in (file-based) emummc that caused an error on system format/downloading certain games.
+ General system stability improvements to enhance the user's experience.
## 0.19.2
+ Atmosphère's components were further updated to reflect latest official behaviors as of 12.0.0.
+ Notably, `erpt` was updated to implement the new forced shutdown detection feature.
+ When a forced-shutdown occurs, an erpt_report will be generated and saved to the SD card on the next boot.
+ Atmosphere-libs was updated to use GCC 11 (latest devkitA64/devkitARM releases).
+ Initial inspections show mild-to-moderate optimizer improvements in several important places (kernel is 0x3000 smaller).
+ General system stability improvements to enhance the user's experience.
+ A number of minor issues were fixed, including:
+ A bug was fixed that caused a black screen when attempting to boot firmware versions 2.0.0-4.1.0.
+ A bug was fixed that caused sm to abort when at the session limit, rather than returning error codes.
+ A bug was fixed that allowed for resource exhaustion on 12.0.0, under certain circumstances.
+ Several issues were fixed, and usability and stability were improved.
## 0.19.1
+ An issue was fixed that caused a fatal error when using official `migration` services to transfer data between consoles.
+ An issue was fixed in `ncm` that caused an error when the OS tried to enumerate installed SD card content.
+ Several issues were fixed, and usability and stability were improved.
## 0.19.0
+ Support was added for 12.0.0.
+ `mesosphère` was updated to reflect the latest official kernel behavior.
+ `sm`, `boot2`, `pgl` were updated to reflect the latest official behaviors.
+ **Please Note**: 12.0.0 added a new protocol for IPC ("tipc"), which has been freshly reimplemented in its entirety.
+ It is possible there may be as of yet unfound issues; if there are, please send the appropriate crash reports to SciresM (SciresM#0524 on discord).
+ Homebrew which uses atmosphere extensions (including the mitm API) will need to be re-compiled in order to function on 0.19.0.
+ I apologize for this, but it's unavoidable for technical reasons. If you're affected by this and mad about it, please contact SciresM to complain.
+ `erpt` was partially updated to reflect the latest official behaviors.
+ New features were added to erpt to track the activity of running applets, and to detect when a forced shutdown occurs.
+ These behaviors have been temporarily stubbed, as they are not necessary for 12.0.0 to run (and their outputs won't be saved anywhere).
+ A future atmosphère update will implement these behaviors, in the interest of reflecting official logic as faithfully as we can.
+ Atmosphère no longer uses the /contents/ folder for its own programs.
+ Atmosphère's system modules are now bundled together in the single file "stratosphere.romfs".
+ For those working on developing for atmosphère, executables inside the /contents/ directory will be preferred to those in "stratosphere.romfs".
+ **Please Note**: In order to facilitate this change (and the desired behavior), the first time you boot after extracting a release zip, atmosphère system modules inside /contents/ will be deleted.
+ This will have no impact on user programs (it only removes programs with specific program ids).
+ Improvements were made to mesosphere, including:
+ An extension InfoType was added for getting the current process handle, without having to spawn a thread and do IPC with oneself.
+ An issue was fixed in SvcSetDebugThreadContext.
+ An issue was fixed when doing IPC with user buffers.
+ Support was fixed for toggling the custom setting `usb!usb30_force_enabled` on 9.0.0+.
+ This was broken by Nintendo's introducing a dependency that made USB a requirement to launch before custom settings are parsed.
+ Since the fix, you can now toggle the setting (as you could prior to atmosphère 0.9.4), and it will work as expected.
+ **Please Note**: Enabling USB 3.0 often severely impacts wireless communications.
+ Because of this, the setting will default to off. If you experience issues with it enabled, consider disabling it.
+ A warning was added to daybreak when resetting the console to factory settings.
+ Substantial work was completed towards atmosphere's upcoming implementation of the host target connection protocol.
+ Once completed, users will be able to interact with a Switch running atmosphère via a PC application ("Starlink") currently under development.
+ Planned eventual features for connected consoles include a gdbstub, interacting with memory (for cheat development), streaming gameplay audio and video, and accessing the Switch's SD card filesystem.
+ Switch homebrew will also have access to a (configurable and sandboxed) filesystem on the host PC, while connected.
+ Towards this end, the following was accomplished:
+ The "htc" system module was reimplemented completely.
+ The system module which provides remote access to the SD card was reimplemented completely.
+ This is currently the active focus of atmosphère's development.
+ **Please Note**: Support is not yet completed, and users are disadvised from interacting with the related settings for the time being, unless they particularly know what they're doing.
+ A number of minor issues were fixed, including:
+ A bug was fixed in `dmnt` that could cause a fatal when launching certain games with cheats active.
+ An issue was fixed that could cause an abort in `sm` when using a large number of custom system modules.
+ An issue was fixed that prevented launching gamecards on 1.0.0.
+ Minor issues were fixed in the cheat virtual machine's behavior.
+ Several issues were fixed, and usability and stability were improved.
## 0.18.1
+ A number of minor issues were fixed, including:
+ The new `dns.mitm` module added in 0.18.0 no longer fatal errors when receiving port=nullptr.
+ This fixes youtube ad-blocking, and possibly other usecases.
+ A bug was fixed that caused ams.mitm to incorrectly cache data storages.
+ This potentially broke DLC when using romfs mods, and could have caused other issues (e.g. with custom themes, and maybe other cases).
+ A bug was fixed in power state control module registration.
+ This might fix a weird edge case with system module dependencies on sleep/wake, but probably nobody should notice any differences.
+ A bug was fixed where mesosphere sometimes treated virtual core IDs as though they were physical core IDs.
+ This had zero impact, because for Switch virtual core == physical core, but it could have affected future platforms if it had remained unresolved.
+ Several issues were fixed, and usability and stability were improved.
## 0.18.0
+ A new mitm module was added (`dns.mitm`).
+ This provides a highly configurable mechanism for redirecting DNS resolution requests.
+ By default atmosphère redirects resolution requests for official telemetry servers to a loopback address.
+ Documentation on how to configure `dns.mitm` to meet your more specific needs may be found [here](https://github.com/Atmosphere-NX/Atmosphere/blob/master/docs/features/dns_mitm.md).
+ The service framework API (`sf`) was refactored to be more accurate to official logic and greatly reduce memory requirements.
+ The comparison of atmosphère module memory usage versus Nintendo's found [here](https://github.com/Atmosphere-NX/Atmosphere/wiki/Memory-Comparisons) was updated to reflect this.
+ **Please Note**: If you are a developer using the libstratosphere service APIs, some updating may be required. Contact SciresM#0524 on discord for assistance if required.
+ A number of deprecations were removed, following a general codebase cleanup:
+ The `sm` extension to not unregister services on connection close was superseded by official opt-in logic in 11.0.0, and has been removed in favor of official logic.
+ This should have zero impact on users.
+ The temporary `hid-mitm` added in 0.9.0 has finally been removed, following over a year of deprecation.
+ There shouldn't be any homebrew in use still affected by this, but the situation will be monitored.
+ If this is somehow still a real issue, an unaffiliated hid mitm sysmodule providing the same functionality can be created and released, separate from atmosphère itself.
+ Several issues were fixed, and usability and stability were improved.
## 0.17.1
+ A number of atmosphère's modules were using more memory than their Nintendo equivalent's in 0.17.0; a number of code generatio tweaks have been applied to fix this across the board.
+ A detailed comparison of atmosphère module memory usage versus Nintendo's was made and can be found [here](https://github.com/Atmosphere-NX/Atmosphere/wiki/Memory-Comparisons).
+ Several minor bugs were fixed, including:
+ A bug was fixed in mesosphère that caused games which attempt to map more memory than the Switch has to fail.
+ This affected "Piczle Lines DX 500 More Puzzles!", and possibly other games.
+ Enabling configuration to "blank" PRODINFO no longer causes a hang on Mariko devices (or any devices with newer format).
+ Several issues were fixed, and usability and stability were improved.
## 0.17.0
+ fusee was heavily rewritten in order to add support for Mariko hardware.
+ **Please Note**: Mariko hardware currently has no (and may not ever have any) software exploits; fusee works when loaded from bootloader context with the right keys in the security engine. No means of getting the system into this state is provided.
+ An issue was fixed in the way shutdown was performed on Erista hardware.
+ This fixes an issue that caused OFW to black screen on boot after power off from atmosphere without first doing a reboot.
+ This also substantially improves power drain when the system is shut off; consoles powered off from Atmosphere should now drain battery at the same reduced rate as original firmware.
+ A number of minor changes were made, including:
+ A number of inconsistencies in the build system were fixed.
+ For those building atmosphère at home, the `boot` sysmodule will no longer rebuild every time make is invoked.
+ This substantially improves build times during development iteration.
+ `sm` was updated to more accurately reflect how official code manages request deferral.
+ `mesosphère` was updated to more accurately reflect official kernel management of the trace buffer.
+ `mesosphère` was updated to improve kernel loader's logic by taking advantage of the assumption that we only boot our kernel, not Nintendo's.
+ As it has been a few months with zero reported issues, `mesosphère` is now opt-out.
+ Users who wish to begin using or continue using mesosphere should use the standard/cool kids zip ("atmosphere-").
+ Users who wish to opt-out of mesosphere should download and extract the opt-out zip ("atmosphere-WITHOUT_MESOSPHERE-").
+ Several issues were fixed, and usability and stability were improved.
## 0.16.2
+ Atmosphère release zips no longer bundle BCT.ini, instead relying on defaults in code.
+ This means atmosphere updates should no longer overwrite any user configuration at all.
+ If you wish to modify BCT.ini config, copy the template from /config_templates/ as with other configuration.
+ `pgl` and `creport` were further updated to reflect differences in official behavior in 11.0.0.
+ An issue was fixed that caused creport to be launched multiple times on process crash.
+ This fixes the "duplicate reports" issue that sometimes plagued people.
+ A new system setting (`atmosphere!enable_am_debug_mode`) configuring am to use debug mode.
+ If you are not a developer or don't see a clear use for this, leave it configured to the default (off).
+ Reboot to payload NRO was updated to fix support with certain payloads.
+ Support was fixed for atmosphere's extension to support homebrew use of new (8.0.0+) kernel mappings.
+ In particular, when running tracing debug builds of `mesosphère`, hbloader now has access to the kernel trace buffer.
+ Several issues were fixed, and usability and stability were improved.
## 0.16.1
+ Support was added for 11.0.1.
+ `mesosphère` was updated to reflect the latest official kernel behavior.
+ A new svc::InfoType added in 11.0.0 was implemented (it wasn't discovered before 0.16.0 released).
+ The new Control Flow Integrity (CFI) logic added in 11.0.0 kernel was implemented.
+ `fs` logic was refactored and cleaned up to reflect some newer sysmodule behavioral and structural changes.
+ `exosphère` was updated to allow dynamic control of what uart port is used for logging.
+ This can be controlled by editing the `log_port`, `log_baud_rate`, and `log_inverted` fields in `exosphere.ini`.
+ `mesosphère` was updated to improve debugging capabilities.
+ This is still a work in progress, but developers may be interested.
+ A bug was fixed that caused `fatal` to fatal error if the fatal process was already being debugged.
+ Several issues were fixed, and usability and stability were improved.
## 0.16.0
+ Support was added for 11.0.0.
+ `exosphère` was updated to reflect the latest official secure monitor behavior.
+ `mesosphère` was updated to reflect the latest official kernel behavior.
+ `loader`, `sm`, `boot`, `pgl` were updated to reflect the latest official behaviors.
+ **Please Note**: 11.0.0 implements an opt-in version of the atmosphère `sm` extension that allows for closing session without unregistering services.
+ Correspondingly, the extension will be deprecated in favor of the new official opt-in command. In 0.17.0, it will be removed entirely.
+ If your custom system module relies on this extension (however unlikely that seems to me), please update it accordingly.
+ `erpt` was partially updated to provide compatibility with 11.0.0.
+ The latest firmware attaches additional fields and context information to logs.
+ A future atmosphère update will implement this logic, so that users who are interested can also get the new information when examining their logs.
+ **Please Note**: 11.0.0 introduced breaking changes to the `usb` system module's `usb:ds` API.
+ Homebrew which uses the `usb:ds` service should rebuild with the latest libnx version to support running on 11.0.0.
+ The `boot` system module was rewritten to reflect the huge driver changes introduced in 8.0.0.
+ This includes a number of improvements to both logo display and battery management logic.
+ Support was added for configuring the address space width for `hbl`.
+ The `hbl_config!override_address_space_(#)` and `hbl_config!override_any_app_address_space` can now be set to `39_bit`, `36_bit`, or `32_bit` to control the address space for hbl on a per-override basis.
+ If a configuration has not been set, hbl will now default to 39-bit address space.
+ Previously, a legacy 36-bit address space was always used to maintain compatibility with 1.0.0.
+ A new loader extension was added to support 39-bit whenever possible (including mesosphere-on-1.0.0), with fallback to 36-bit when unavailable.
+ Support was added to a number of components for running on Mariko hardware.
+ The `boot` system module can now safely be run on mariko hardware, performing correct hardware initialization.
+ Daybreak (and generally, system update logic) were updated to be usable on Mariko.
+ Boot0 protection/management logic was updated to perform correct actions on Mariko.
+ Reboot to payload does not and cannot work on Mariko. Correspondingly, A "fatal error" handler was written, to display and save fatal errors from within TrustZone.
+ **Please Note:** Atmosphere is still not properly usable on Mariko hardware.
+ In particular, wake-from-sleep will not properly function (the magic numbers aren't set correctly), among a few other minor issues.
+ `exosphère` received support for building under debug configuration.
+ A small (otherwise unused) portion of IRAM is now reserved for debug-only exosphere code (this region is unused/untouched under release config).
+ This enables logging (including printf) to uart from the secure monitor, for those interested.
+ A number of bugs were fixed, including:
+ Minor issues in a number of filesystem related code were fixed.
+ An issue was fixed that could cause NCM to abort on consoles which came with 3.0.x and were never updated.
+ Several issues were fixed, and usability and stability were improved.
## 0.15.0
+ fusee-primary's panic display was updated to automatically identify and give suggestions to resolve many of the most common errors users encounter.
+ Having been tested as well as I can alone, `mesosphere` (atmosphère's reimplementation of the Nintendo Switch kernel) is now available for users interested in trying it.
+ Beginning in this release and until it is stable and well-tested, atmosphère will distribute two zips.
+ Users who wish to opt-in to mesosphere should download and extract the "cool kids" zip ("atmosphere-EXPERIMENTAL-").
+ Users who do not wish to use mesosphere should continue using the normal zip ("atmosphere-").
+ Users may detect whether mesosphere is active in system settings.
+ When mesosphere is active, the system version string will display "M.15.0" rather than "0.15.0", and so on for future releases.
+ Crash reports and the like will contain information on whether or not the user is using mesosphere, as well.
+ There are "probably" no material user-facing benefits to using mesosphere at this time.
+ Developers may be interested in the fact that mesosphere provides many newer SVC APIs even when on lower firmware versions.
+ The primary benefit to using mesosphere is that any issues you may encounter and report to me will be fixed.
+ All users who choose to opt in to using mesosphere have my deepest gratitude.
+ **Note:** If using hekate instead of fusee-primary, you will have to wait for the next hekate release for mesosphere to function, as hekate's support has not yet been included in an official release build.
+ This will be updated in the release notes when hekate provides a new release.
+ As mentioned in previous release notes, when mesosphere is stable and well-tested, it will be enabled by default and atmosphère's version will transition to 1.0.0.
+ Having been tested sufficiently over the last half-year, Atmosphere's NCM implementation is now opt-out, rather than opt in.
+ In the unlikely event that any issues are encountered, please report them to @SciresM.
+ Users interested in opting out of using our implementation should set `stratosphere!disable_ncm = 1` in BCT.ini.
+ The NCM implementation will stop being opt-out in a future update, probably around the same time that mesosphere becomes opt-out instead of opt-in.
+ Several bugs were fixed, including:
+ Loader now sets HBL's thread priority to a higher value when loading it in applet mode.
+ This fixes an extremely-slow launch ("hang") when using applet-HBL with certain games that do not suspend while inactive (e.g. Super Mario Sunshine).
+ set.mitm now caches user language configuration much more heavily.
+ This severely reduces lag in certain games which misuse the "nn::oe::GetDesiredLanguage()" API.
+ A bug was fixed that could cause erpt to fatal when loading an official save file that had error report attachments in it.
+ General system stability improvements to enhance the user's experience.
## 0.14.4
+ Several bugs were fixed involving the official jit sysmodule added in 10.0.0.
+ A Process handle leak was fixed when JitPlugin NRRs were registered with the `ro` sysmodule.
+ This prevented processes using jit from being able to exit, causing a full system freeze.
+ The `sm` atmosphere extension to not unregister services when the server's connection is closed was special-case disabled for `jit:u`.
+ This extension is normally desirable in order to allow more concurrent processes to exist (as only 0x40 sm connections may ever be concurrently open), but official jit sysmodule relies on the behavior.
+ This would cause crashes on attempts to launch a program using jit services more than once per reboot.
+ General system stability improvements to enhance the user's experience.
## 0.14.3
+ Support was added for 10.2.0.
+ General system stability improvements to enhance the user's experience.
## 0.14.2
+ A bug was fixed that could cause a deadlock when installing mitm services.
+ Fixing this required a breaking change to the client behavior when installing a mitm service, and so custom sysmodules which use mitm will need to be re-compiled to function properly.
+ A bug was fixed that caused atmosphere sysmodules to respond incorrectly when receiving invalid messages.
+ A bug was fixed that caused fatal auto-reboot timing to work improperly.
+ Support was added to fusee for loading binaries for `mesosphere`, atmosphère's reimplementation of the Nintendo Switch kernel.
+ 0.14.2 does not include mesosphere, but those who are especially interested can build and test mesosphere themselves.
+ In the future, to enable a sufficient testing period Atmosphère releases will distribute two zips for some time.
+ One zip will use mesosphere, and the other will not.
+ This will allow users who are interested to opt-in to mesosphere usage before it has been tested to be stable.
+ When mesosphere is stable and well-tested, it will be enabled by default and Atmosphère's version will transition to 1.0.0.
+ General system stability improvements to enhance the user's experience.
## 0.14.1
+ An issue was fixed in 0.14.0 that would cause a black screen on boot when the INI1's size was not aligned to 8 bytes.
+ General system stability improvements to enhance the user's experience.
## 0.14.0
+ An API (`ams:su`) was added to allow homebrew to safely install system upgrades or downgrades.
+ This is a re-implementation of the logic that `ns` uses to install gamecard system updates.
+ Nintendo (and now atmosphère) uses an installation process that can recover no matter where a failure occurs, which should significantly improve the safety of custom system update installation.
+ Support was added to `exosphère` for running on Mariko hardware.
+ **Please note**: Atmosphère still does not support Mariko, and should not be run on Mariko yet.
+ Certain stratosphere components do not handle mariko-specific logic fully correctly yet, and may initialize or interact with hardware incorrectly.
+ This will be fixed and support will be added over the remainder of the Summer.
+ A homebrew application (`daybreak`) was added that uses the system updater API (with thanks to @Adubbz for both design and implementation).
+ `daybreak` is included with atmosphère, and functions as a safer/more accurate equivalent to e.g. ChoiDujourNX.
+ Upgrades/downgrades can be installed from a folder containing the update NCAs on the SD card.
+ Because the update logic functions identically to Nintendo's, `daybreak` will be safe to use on Mariko when the rest of atmosphère has support.
+ **Please note**: Daybreak requires that meta (.cnmt) NCAs have the correct extension `.cnmt.nca`.
+ This is because gamecard system update logic uses extension to determine whether to mount the content.
+ [Several](https://gist.github.com/HookedBehemoth/df36b5970e1c5b1b512ec7bdd9043c6e) [scripts](https://gist.github.com/antiKk/279966c27fdfd9c7fe63b4ae410f89c4) have been made by community members to automatically rename folders with incorrect extensions.
+ A bug was fixed that would cause file-based emummc to throw an error (showing a hexdump) on boot.
+ Major thanks to @hexkyz for tracking down and resolving this.
+ A number of minor issues were resolved, including:
+ fusee now prints information to the screen when an error occurs, instead of getting stuck trying to initialize the display.
+ A race condition in Horizon was worked around that could prevent boot under certain circumstances.
+ A bug was fixed that would cause atmosphère modules to open ten copies of certain filesystems instead of one.
+ This could cause object exhaustion under certain circumstances.
+ For those interested in atmosphère's future development plans, the project's [roadmap](https://github.com/Atmosphere-NX/Atmosphere/blob/ac9832c5ce7be5832f6d29f6564a9c03e7efd22f/docs/roadmap.md) was updated.
+ General system stability improvements to enhance the user's experience.
## 0.13.0
+ `exosphère`, atmosphère's secure monitor re-implementation, was completely re-written.
+ `exosphère` was the first component authored for the project in early 2018. It is written in C, and in a style very different from the rest of atmosphère's code.
+ This has made the codebase difficult to maintain as time has gone on.
+ `exosphère` was also written to conform to constraints and assumptions that simply no longer apply when cfw is not launched from the web browser, and when warmboothax is possible.
+ Even beyond these issues, `exosphère` used all but 1KB of the 64KB of space available to it. This was a problem for a few reasons:
+ Each new system update added requires additional space to support (to add new keys and reflect various changes); 10.0.0 support used up 3 of the 4KB we had left.
+ atmosphère will want to have software support for mariko hardware, and this is not possible to fit in 1 KB.
+ The `exosphère` rewrite (which was codenamed `exosphère2` during development) solves these problems.
+ The new codebase is C++20 written in atmosphère's style.
+ This solves the maintainability problem, and should make understanding how the secure monitor works *much* easier for those interested in using the code as a reference implementation.
+ In addition, the new implementation currently uses ~59.5 of the 64KB available.
+ Several potential code changes are planned that can save/grant access to an additional ~2-3 KB if needed.
+ Unlike the first codebase, the new `exosphère` actually already has space allocated for future keys/etc. It is currently expected that the reserved space will never be required.
+ The previous implementation chose not to implement a number of "unimportant" secure monitor functions due to space concerns. The new code has enough breathing room that it can implement them without worries. :)
+ Finally, the groundwork for mariko support has been laid -- there are only a few minor changes needed for the new secure monitor implementation to work on both erista and mariko hardware.
+ **Please note**: `exosphère` is only one of many components, and many more need changes to support running on mariko hardware.
+ Software-side support for executing on mariko hardware is expected some time during Summer 2020, though it should also be noted that this is not a hard deadline.
+ **Please note**: The new `exosphère` binary is not abi-compatible with the old one. Users who boot using hekate should wait for it to update before running 0.13.0 (or boot fusee-primary via hekate).
+ atmosphère's api for target firmware was changed. All minor/micro system versions are now recognized, instead of only major versions.
+ This was required in order to support firmware version 5.1.0, which made breaking changes to certain IPC APIs that caused atmosphère 0.12.0 to abort.
+ **Please note**: this is (unavoidably) a breaking change. System modules using atmosphere-libs will need to update to understand what firmware version they are running.
+ `emummc` was updated to include the new changes.
+ `emummc` now uses an updated/improved/faster SDMMC driver.
+ File-based emummc is now almost as fast as raw partition-based emummc.
+ For those interested in atmosphère's future development plans, the project's [roadmap](https://github.com/Atmosphere-NX/Atmosphere/blob/f68d33b70aed8954cc2c539e5934bcaf37ba51da/docs/roadmap.md) was updated.
+ General system stability improvements to enhance the user's experience.
## 0.12.0
+ Configuration for exosphere was moved to sd:/exosphere.ini.
+ This is to facilitate BIS protection changes described below.
+ Hopefully having this outside of the Atmosphere folder will prevent accidental deletion, since this now contains important settings.
+ Atmosphere's bis protection policy for the PRODINFO partition was substantially reworked.
+ Support was added for "automatically" performing a "blanking" operation to PRODINFO without actually modifying NAND.
+ This is equivalent to using the "incognito" homebrew tool, but NAND is never actually modified.
+ This can be turned on in sysmmc by setting `blank_prodinfo_sysmmc=1` in exosphere.ini, and in emummc by setting `blank_prodinfo_emummc=1` in exosphere.ini.
+ **Please note**: This is not known to be safe. There is a lack of research on whether the information blanked out is cached elsewhere in the system.
+ Usage of this option is not encouraged for this reason.
+ Support was added for writing to the PRODINFO partition, if a verified encrypted backup has been made.
+ PRODINFO is the only system data that cannot be recovered if not backed up, and thus Atmosphere has backed it up to the SD card on boot for some time now.
+ Users who wish to modify their calibration data may now do so unconditionally in emummc, and in sysmmc if `allow_writing_to_cal_sysmmc=1` is set in exosphere.ini.
+ **Please note**: This is heavily discouraged, and the typical user will almost never want to do this.
+ Setting this option will cause Atmosphere to attempt to verify (or create) an encrypted backup of the PRODINFO data to an unused region in the partition.
+ The backup is encrypted with per-console keys that Atmosphere's developers do not know.
+ If the backup is not verified or created, writes will not work. Users who have corrupted their PRODINFO in the past are encouraged to flash a good backup to allow use of this setting.
+ Reads and writes to the region used for the securely encrypted backup will appear to succeed, but will actually read/write from a buffer filled with garbage in memory.
+ Support will be investigated in the future for supporting booting with fully blanked calibration.
+ This is desirable to allow boot to succeed for users who lost their calibration data due to bricking homebrew before bis protection was implemented.
+ `creport` has been updated to use the new screenshot APIs added in 9.0.0+.
+ On 10.0.0+, if a crash occurs in an application (not applet or sysmodule) a screenshot will now be automatically saved to the SD card.
+ If the user applies a patch to vi on 9.0.0 (as the command this uses was previously for dev-units only), this can also work on 9.0.0.
+ The new sysmodule `pgl` added in 10.0.0 was reimplemented.
+ `pgl` ("Program Launcher", probably) is responsible for managing launched user-processes, previously this was handled by NS.
+ The most exciting thing about pgl is that it finally provides an API for multiple clients to subscribe to process events.
+ Using these new APIs, system modules / other homebrew can subscribe to be notified whenever a process event occurs.
+ This means action can be taken on process launch, process exit, process crash, etc.
+ A slight concern with Nintendo's implementation is that each subscriber object uses 0x448 bytes of memory, and N only reserves 8KB for all allocations in pgl.
+ Atmosphere's implementation uses a 32KB heap, which should not be exhaustible.
+ Atmosphere's implementation has a total memory footprint roughly 0x28000 bytes smaller than Nintendo's.
+ A reimplementation was added for the `jpegdec` system module (thanks @HookedBehemoth)!
+ This allows two sessions instead of 1, so homebrew can now use it for software jpeg decoding in addition to the OS itself.
+ As usual the implementation has a very slightly smaller memory footprint than Nintendo's.
+ `dmnt`'s Cheat VM was extended to add three new opcodes.
+ The first new opcode, "ReadWriteStaticRegister", allows for cheats to read from a bank of 128 read-only static registers, and write to a bank of 128 write-only static registers.
+ This can be used in concert with new IPC commands that allow a cheat manager to read or write the value of these static registers to have "dynamic" cheats.
+ As an example, a cheat manager could write a value to a static register that a cheat to control how many of an item to give in a game.
+ As another example, a cheat manager could read a static register that a cheat writes to to learn how many items a player has.
+ The second and third opcodes are a pair, "PauseProcess" and "ResumeProcess".
+ Executing pause process in a cheat will pause the game (it will be frozen) until a resume process opcode is used.
+ These are also available over IPC, for cheat managers or system modules that want to pause or resume the attached cheat process.
+ This allows a cheat to know that the game won't modify or access data the cheat is accessing.
+ For example, this can be used to prevent Pokemon from seeing a pokemon a cheat is in the middle of injecting and turning it into a bad egg.
+ A bug was fixed that would cause the console to crash when connected to Wi-Fi on versions between 3.0.0 and 4.1.0 inclusive.
+ A bug was fixed that could cause boot to fail sporadically due to cache/tlb mismanagement when doing physical ASLR of the kernel.
+ A number of other minor issues were addressed (and more of Atmosphere was updated to reflect other changes in 10.0.x).
+ General system stability improvements to enhance the user's experience.
## 0.11.1
+ A bug was fixed that could cause owls to flicker under certain circumstances.
+ For those interested in technical details, in 10.0.0 kernelldr/kernel no longer set cpuactlr_el1, assuming that it was set correctly by the secure monitor.
+ However, exosphere did not set cpuactlr_el1. This meant that the register held the reset value going into boot.
+ This caused a variety of highly erratic symptoms, including causing basically any game to crash seemingly randomly.
+ A number of other major inaccuracies in exosphere were corrected.
+ General system stability improvements to enhance the user's experience.
## 0.11.0
+ Support was added for 10.0.0.
+ Exosphere has been updated to reflect the new key import semantics in 10.0.0.
+ kernel_ldr now implements physical ASLR for the kernel's backing pages.
+ Loader, NCM, and PM have been updated to reflect the changes Nintendo made in 10.0.0.
+ Creport was updated to use the new `pgl` service to terminate processes instead of `ns:dev`.
+ A reimplementation of the `erpt` (error reports) system module was added.
+ In previous versions of Atmosphere, a majority of error reports were prevented via a combination of custom creport, fatal, and stubbed eclct.
+ However, error reports were still generated via some system actions.
+ Most notably, any time the error applet appeared, an error report was generated.
+ By default, atmosphere disabled the *uploading* of error reports, but going online in OFW after an error report occurred in Atmosphere could lead to undesirable telemetry.
+ Atmosphere's `erpt` reimplementation allows the system to interact with existing error reports as expected.
+ However, all new error reports are instead saved to the sd card (`/atmosphere/erpt_reports`), and are not committed to the system savegame.
+ Users curious about what kind of telemetry is being prevented can view the reports as they're generated in there.
+ Reports are saved as msgpack (as this is what Nintendo uses).
+ Please note, not all telemetry is disabled. Play reports and System reports will continue to function unmodified.
+ With atmosphere's `erpt` implementation, homebrew can now use the native error applet to display errors without worrying about generating undesirable telemetry.
+ libstratosphere and libvapours received a number of improvements.
+ With thanks to @Adubbz for his work, the NCM namespace now has client code.
+ This lays the groundwork for first-class system update/downgrade homebrew support in the near future.
+ In particular, code implementing the os namespace is significantly more accurate.
+ In addition, Nintendo's allocators were implemented, allowing for identical memory efficiency versus Nintendo's implementations.
+ General system stability improvements to enhance the user's experience.
## 0.10.5
+ Changes were made to the way fs.mitm builds images when providing a layeredfs romfs.
+ Building romfs metadata previously had a memory cost of about ~4-5x the file table size.
+ This caused games that have particularly enormous file metadata tables (> 4 MB) to exhaust fs.mitm's 16 MB memory pool.
+ The code that creates romfs images was thus changed to be significantly more memory efficient, again.
+ Memory requirements have been lowered from ~4x file table size to ~2x file table size + 0.5 MB.
+ There is a slight speed penalty to this, but testing on Football Manager 2020 only took an extra ~1.5 seconds for the game to boot with many modded files.
+ This shouldn't be noticeable thanks to the async changes made in 0.10.2.
+ If you encounter a game that exhausts ams.mitm's memory (crashing it) when loading layeredfs mods, please contact SciresM.
+ Romfs building can be made even more memory efficient, but unless games show up with even more absurdly huge file tables it seems not worth the speed trade-off.
+ A bug was fixed that caused Atmosphere's fatal error context to not dump TLS for certain processes.
+ General system stability improvements to enhance the user's experience.
## 0.10.4
+ With major thanks to @Adubbz for his work, the NCM system module has now been re-implemented.
+ This was a major stepping stone towards the goal of having implementations everything in the Switch's package1/package2 firmware.
+ This also lays the groundwork for libstratosphere providing bindings for changing the installed version of the Switch's OS.
+ **Please Note**: The NCM implementation will initially be opt-in.
+ The Atmosphere team is confident in our NCM implementation (and we have tested it on every firmware version).
+ That said, this is our first system module that manages NAND savegames -- and caution is a habit.
+ We do not anticipate any issues that didn't come up in testing, so this is just our being particularly careful.
+ Users interested in opting in to using our implementation should set `stratosphere!ncm_enabled = 1` in BCT.ini.
+ In the unlikely event that any issues are encountered, please report them to @SciresM.
+ The NCM implementation will stop being opt-in in a future update, after thorough testing has been done in practice.
+ A bug was fixed in emummc that caused Nintendo path to be corrupted on 1.0.0.
+ This manifested as the emummc folder being created inside the virtual NAND instead of the SD card.
+ It's unlikely there are any negative consequences to this in practice.
+ If you want to be truly sure, you can re-clone sysmmc before updating a 1.0.0 emummc to latest firmware.
+ Stratosphere system modules now use new Nintendo-style FS bindings instead of stdio.
+ This saves a modest amount of memory due to leaner code, and greatly increases the accuracy of several components.
+ These bindings will make it easier for other system modules using libstratosphere to interact with the filesystem.
+ This also lays the groundwork for changes necessary to support per-emummc Atmosphere folders in a future update.
+ Atmosphere's fatal error context now dumps 0x100 of TLS.
+ This will make it much easier to fix bugs when an error report is dumped for whatever caused the crash.
+ General system stability improvements to enhance the user's experience.
## 0.10.3
+ Support was added for 9.2.0.
+ Support was added for redirecting manual html content for games.
+ This works like normal layeredfs, replacing content placed in `/atmosphere/contents/<program id>/manual_html/`.
+ This allows for game mods/translations to provide custom manual content, if they so choose.
+ A number of improvements were made to Atmosphere's memory usage, including:
+ `fatal` now uses STB instead of freetype for rendering.
+ This saves around 1 MB of memory, and makes our fatal substantially leaner than Nintendo's.
+ `sm` no longer wastes 2 MiB unnecessarily.
+ fusee/sept's sdmmc access now better matches official behavior.
+ This improves compatibility with some SD cards.
+ `ro` has been updated to reflect changes made in 9.1.0.
+ The temporary auto-migration added in 0.10.0 has been removed, since the transitionary period is well over.
+ General system stability improvements to enhance the user's experience.
## 0.10.2
+ hbl configuration was made more flexible.
+ Up to eight specific program ids can now be specified to have their own override keys.
+ This allows designating both the album applet and a specific game as hbl by default as desired.
+ Configuration targeting a specific program is now mutually exclusive with override-any-app for that program.
+ This fixes unintuitive behavior when override key differed for an application specific program.
+ Loader's external content fileystem support was fixed (thanks @misson20000!).
+ KernelLdr was reimplemented.
+ This is the first step towards developing mesosphere, Atmosphere's planned reimplementation of the Switch's Kernel.
+ The typical user won't notice anything different, as there are no extensions, but a lot of groundwork was laid for future development.
+ Improvements were made to the way Atmosphere's buildsystem detects source code files.
+ This significantly reduces compilation time (saving >30 seconds) on the machine that builds official releases.
+ Certain device code was cleaned up and made more correct in fusee/sept/exosphere (thanks @hexkyz!).
+ A number of changes were made to the way fs.mitm builds images when providing a layeredfs romfs.
+ Some games (Resident Evil 6, Football Manager 2020 Touch, possibly others) have enormous numbers of files.
+ Attempting to create a layeredfs mod for these games actually caused fs.mitm to run out of memory, causing a fatal error.
+ The code that creates these images was changed to be significantly more memory efficient.
+ However, these changes also cause a significant slowdown in the romfs building code (~2-5x).
+ This introduced a noticeable stutter when launching a game, because the UI thread would block on the romfs creation.
+ To solve this, fs.mitm now lazily initializes the image in a background thread.
+ This fixes stutter issues, however some games may be slightly slower (~1-2s in the worst cases) to transition from the "loading" GIF to gameplay now.
+ Please note: the slowdown is not noticeable in the common case where games don't have tons of files (typical is ~0.1-0.2 seconds).
+ Once the image has been built, there is no further speed penalty at runtime -- only when the game is launched.
+ A number of other bugs were fixed, including:
+ Several minor logic inversions that could have caused fatal errors when modding games.
+ Atmosphere's new-ipc code did not handle "automatic" recvlist buffers correctly, so some non-libnx homebrew could crash.
+ fs.mitm now correctly mitms sdb, which makes redirection of certain system data archives work again.
+ In 0.10.0/0.10.1, changing the system font/language did not work correctly due to this.
+ A bug was fixed in process cleanup that caused the system to hang on < 5.0.0.
+ The temporary hid-mitm added in Atmosphere 0.9.0 was disabled by default.
+ Please ensure your homebrew is updated.
+ For now, users may re-enable this mitm by use of a custom setting (`atmosphere!enable_deprecated_hid_mitm`) to ease the transition process some.
+ Please note: support for this setting may be removed to save memory in a future atmosphere release.
+ General system stability improvements to enhance the user's experience.
## 0.10.1
+ A bug was fixed that caused memory reallocation to the system pool to work improperly on firmware 5.0.0 and above.
+ Atmosphere was always trying to deallocate memory away from the applet pool and towards the system pool.
+ The intent of this is to facilitate running more custom sysmodules/atmosphere binaries.
+ However, while memory was always successfully taken away from the applet pool, on 5.0.0+ granting it to the system pool did not work for technical reasons.
+ If you are interested in the technical details, talk to SciresM.
+ This has now been fixed by adding new kernel patches, and memory is correctly granted to the system pool as intended.
+ Atmosphere's library system has been overhauled:
+ libstratosphere's repository has been rebranded, more generally, to "Atmosphere-libs".
+ In addition to libstratosphere, a new general library for not-stratosphere-specific code has been added.
+ This is currently named `libvapours`.
+ In the future, kernel functionality will be available as `libmesosphere`.
+ The build system for stratosphere system modules has been similarly overhauled.
+ A number of other bugs were fixed, including:
+ A bug was fixed that could cause memory corruption when redirecting certain Romfs content.
+ A bug was fixed that could cause an infinite loop when redirecting certain Romfs content.
+ A bug was fixed that could cause certain NROs to fail to load.
+ This caused the latest version of Super Smash Bros to display "An error has occurred" on launch.
+ A bug was fixed that caused input/output array sizes for certain circumstances to be calculated incorrectly.
+ This caused cheats to fail to function properly.
+ C++ exception code is now more thoroughly removed from stratosphere executables.
+ This saves a minor amount of memory.
+ A number of minor logic inversions were fixed in libstratosphere.
+ These did not affect any code currently used by released Atmosphere binaries.
+ *Please note**: Because this update is releasing so soon after 0.10.0, the removal of the temporary hid-mitm has been postponed to 0.10.2.
+ Please ensure your homebrew is updated.
+ Random number generation now uses TinyMT instead of XorShift.
+ General system stability improvements to enhance the user's experience.
## 0.10.0
+ Support was added for 9.1.0
+ **Please note**: The temporary hid-mitm added in Atmosphere 0.9.0 will be removed in Atmosphere 0.10.1.
+ Please ensure your homebrew is updated.
+ The Stratosphere rewrite was completed.
+ libstratosphere was rewritten as part of Stratosphere's refactor.
+ Code responsible for providing and managing IPC services was greatly improved.
+ The new code is significantly more accurate (it is bug-for-bug compatible with Nintendo's code), and significantly faster.
+ ams.mitm was rewritten as part of Stratosphere's refactor.
+ Saves redirected to the SD card are now separated for sysmmc vs emummc.
+ **Please note**: If you find any bugs, please report them so they can be fixed.
+ Thanks to the rewrite, Atmosphere now uses significantly less memory.
+ Roughly 10 additional megabytes are now available for custom system modules to use.
+ This means you can potentially run more custom system modules simultaneously.
+ If system modules are incompatible, please ask their authors to reduce their memory footprints.
+ Atmosphere's configuration layout has had major changes.
+ Configuration now lives inside /atmosphere/config/.
+ Atmosphere code now knows what default values should be, and includes them in code.
+ It is no longer an error if configuration inis are not present.
+ Correspondingly, Atmosphere no longer distributes default configuration inis.
+ Templates are provided in /atmosphere/config_templates.
+ loader.ini was renamed to override_config.ini.
+ This fixes the longstanding problem that atmosphere updates overwrote user configuration when extracted.
+ Atmosphere's process override layout was changed.
+ Atmosphere now uses the /atmosphere/contents directory, instead of /atmosphere/titles.
+ This goes along with a refactoring to remove all reference to "title id" from code, as Nintendo does not use the term.
+ To make this transition easier, a temporary functionality has been added that migrates folders to the new directory.
+ When booting into 0.10.0, Atmosphere will rename /atmosphere/titles/`<program id>` to /atmosphere/contents/`<program id>`.
+ This functionality may or may not be removed in some future update.
+ This should solve any transition difficulties for the typical user.
+ Please make sure that any future mods you install extract to the correct directory.
+ Support for configuring override keys for hbl was improved.
+ The key used to override applications versus a specific program can now be different.
+ The key to override a specific program can be managed via override_key.
+ The key to override any app can be managed via override_any_app_key.
+ Default override behavior was changed.
+ By default, atmosphere will now override the album applet with hbl unless R is held.
+ By default, atmosphere will now override any application with hbl only if R is held.
+ The default amount of applet memory reserved has been slightly increased.
+ This allows the profile selector applet to work by default in applet mode.
+ The way process override status is captured was changed.
+ Process override keys are now captured exactly once, when the process is created.
+ This fixes the longstanding issue where letting go of the override button partway into the process launch could cause problems.
+ The Mitm API was changed to pass around override status.
+ Mitm services now know what keys were held when the client was created, as well as whether the client is HBL/should override contents.
+ An extension was added to pm:info to allow querying a process's override status.
+ Thanks to process override capture improvements, hbl html behavior has been greatly improved.
+ Web applets launched by hbl will now always see the /atmosphere/hbl_html filesystem
+ Support was added to exosphere for enabling usermode access to the PMU registers.
+ This can be controlled via exosphere!enable_user_pmu_access in BCT.ini.
+ An enormous number of minor bugs were fixed.
+ dmnt's cheat VM had a fix for an inversion in opcode behavior.
+ An issue was fixed in fs.mitm's management of domain object IDs that could lead to system corruption in rare cases.
+ The Mitm API no longer silently fails when attempting to handle commands passing C descriptors.
+ On previous atmosphere versions, certain commands to FS would silently fail due to this...
+ No users reported any visible errors, but it was definitely a problem behind the scenes.
+ These commands are now handled correctly.
+ Atmosphere can now display a fatal error screen significantly earlier in the boot process, if things go wrong early on.
+ The temporary hid mitm will no longer sometimes cause games to fail to detect input.
+ Mitm Domain object ID management no longer desynchronizes from the host process.
+ An issue was fixed that could cause service acquisition to hang forever if certain sm commands were called in a precise order.
+ An off-by-one was fixed that could cause memory corruption in server memory management.
+ ... and too many more bugs fixed to reasonably list them all :)
+ General system stability improvements to enhance the user's experience.
## 0.9.4
+ Support was added for 9.0.0.
+ **Please note**: 9.0.0 made a number of changes that may cause some issues with homebrew. Details:
+ 9.0.0 changed HID in a way that causes libnx to be unable to detect button input.
+ Homebrew should be recompiled with newest libnx to fix this.
+ Atmosphere now provides a temporary hid-mitm that will cause homebrew to continue to work as expected.
+ This mitm will be removed in a future Atmosphere revision once homebrew has been updated, to allow users to use a custom hid mitm again if they desire.
+ 9.0.0 introduced an dependency in FS on the USB system module in order to launch the SD card.
+ This means the USB system module must now be launched before the SD card is initialized.
+ Correspondingly, the USB system module can no longer be IPS patched, and its settings cannot be reliably mitm'd.
+ We know this is frustrating, so we'll be looking into whether there is some way of addressing this in the future.
+ An off-by-one error was fixed in `boot` system module's pinmux initialization.
+ This could theoretically have caused issues with HdmiCec communication.
+ No users reported issues, so it's unclear if this was a problem in practice.
+ A bug was fixed that could cause webapplet launching homebrew to improperly set the accessible url whitelist.
+ BIS key generation has been fixed for newer hardware.
+ Newer hardware uses new, per-firmware device key to generate BIS keys instead of the first device key, so previously the wrong keys were generated as backup.
+ This only affects units manufactured after ~5.0.0.
+ General system stability improvements to enhance the user's experience.
## 0.9.3
+ Thanks to hexkyz, fusee's boot sequence has been greatly optimized.
+ Memory training is now managed by a separate binary (`fusee-mtc`, loaded by fusee-primary before fusee-secondary).
+ Unnecessarily long splash screen display times were reduced.
+ The end result is that Atmosphere now boots *significantly* faster. :)
+ **Note:** This means fusee-primary must be updated for Atmosphere to boot successfully.
+ The version string was adjusted, and now informs users whether or not they are using emummc.
+ Atmosphere now automatically backs up the user's BIS keys on boot.
+ This should prevent a user from corrupting nand without access to a copy of the keys needed to fix it.
+ This is especially relevant on ipatched units, where the RCM vulnerability is not an option for addressing bricks.
+ The `pm` system module was rewritten as part of Stratosphere's ongoing refactor.
+ Support was added for forward-declaring a mitm'd service before a custom user sysmodule is launched.
+ This should help resolve dependency issues with service registration times.
+ SM is now informed of every process's title id, including built-in system modules.
+ The `creport` system module was rewritten as part of Stratosphere's ongoing refactor.
+ creport now dumps up to 0x100 of stack from each thread in the target process.
+ A few bugs were fixed, including one that caused creport to incorrectly dump process dying messages.
+ Defaults were added to `system_settings.ini` for controlling hbloader's memory usage in applet mode.
+ These defaults reserve enough memory so that homebrew can launch swkbd while in applet mode.
+ The `fatal` system module was rewritten as part of Stratosphere's ongoing refactor.
+ Incorrect display output ("2000-0000") has been fixed. Fatal will now correctly show 2162-0002 when this occurs.
+ A longstanding bug in how fatal manages the displays has been fixed, and official display init behavior is now matched precisely.
+ General system stability improvements to enhance the user's experience.
## 0.9.2
+ A number of emummc bugfixes were added (all thanks to @m4xw's hard work). The following is a summary of emummc changes:
+ Support for file-based emummc instances was fixed.
+ Please note: file-based emummc is still unoptimized, and so may be much slower than partition-based.
+ This speed differential should hopefully be made better in a future emummc update.
+ The way emummc handles power management was completely overhauled.
+ Emummc now properly handles init/de-init, and now supports low voltage mode.
+ Much better support for shutdown was added, which should assuage corruption/synchronization problems.
+ This should also improve support for more types of SD cards.
+ A bug was fixed that caused emummc to not work on lower system versions due to missing SVC access.
+ **Please note**: The configuration entries used for emummc have been changed.
+ `emummc_` prefixes have been removed, since they are superfluous given the `emummc` category they are under.
+ As an example, `emummc!emummc_enabled` is now `emummc!enabled`.
+ INI configurations made by @CTCaer's [tool](https://github.com/ctcaer/hekate/releases/latest) (which is the recommended way to manage emummc) should automatically work as expected/be corrected.
+ **If you do not wish to use the above, you will need to manually correct your configuration file**.
+ General system stability improvements to enhance the user's experience.
+ Stratosphere is currently in the process of being re-written/refactored.
+ Stratosphere was my (SciresM's) first C++ project, ever -- the code written for it a year ago when I was learning C++ is/was of much lower quality than code written more recently.
+ Code is thus being re-rwitten for clarity/stlye/to de-duplicate functionality, with much being moved into libstratosphere.
+ Stratosphere will, after the rewrite, globally use the `sts::` namespace -- this should greatly enhancing libstratosphere's ability to provide functionality for system modules.
+ The rewritten modules consistently have lower memory footprints, and should be easier to maintain going forwards.
+ The `sm`, `boot`, `spl`, `ro`, and `loader` modules have been tackled so far.
+ General system stability improvements to enhance the user's experience.
## 0.9.1
+ Support was added for 8.1.0.
+ Please note, emummc is still considered **beta/experimental** -- this is not the inevitable bugfix update for it, although some number of bugs have been fixed. :)
+ General system stability improvements to enhance the user's experience.
## 0.9.0
+ Creport output was improved significantly.
+ Thread names are now dumped on crash in addition to 0x100 of TLS from each thread.
+ This significantly aids debugging efforts for crashes.
+ Support was added for 32-bit stackframes, so reports can now be generated for 32-bit games.
+ `dmnt`'s Cheat VM was extended to add a new debug opcode.
+ With thanks to/collaboration with @m4xw and @CTCaer, support was added for redirecting NAND to the SD card (emummc).
+ Please note, this support is very much **beta/experimental**.
+ It is quite likely we have not identified all bugs -- those will be fixed as they are reported over the next few days/weeks.
+ In addition, some niceties (e.g. having a separate Atmosphere folder per emummc instance) still need some thought put in before they can be implemented in a way that makes everyone happy.
+ If you are not an advanced user, you may wish to think about waiting for the inevitable 0.9.1 bugfix update before using emummc as your default boot option.
+ You may especially wish to consider waiting if you are using Atmosphere on a unit with the RCM bug patched.
+ Emummc is managed by editing the emummc section of "emummc/emummc.ini".
+ To enable emummc, set `emummc!emummc_enabled` = 1.
+ Support is included for redirecting NAND to a partition on the SD card.
+ This can be done by setting `emummc!emummc_sector` to the start sector of your partition (e.g., `emummc_sector = 0x1A010000`).
+ Support is also included for redirecting NAND to a collection of loose files on the SD card.
+ This can be done by setting `emummc!emummc_path` to the folder (with archive bit set) containing the NAND boot partitions' files "boot0" and "boot1", and the raw NAND image files "00", "01", "02", etc. (single "00" file with the whole NAND image requires exFAT mode while multipart NAND can be used in both exFAT and FAT32 modes).
+ The `Nintendo` contents directory can be redirected arbitrarily.
+ By default, it will be redirected to `emummc/Nintendo_XXXX`, where `XXXX` is the hexadecimal representation of the emummc's ID.
+ The current emummc ID may be selected by changing `emummc!emummc_id` in emummc.ini.
+ This can be set to any arbitrary directory by setting `emummc!emummc_nintendo_path`.
+ To create a backup usable for emummc, users may use tools provided by the [hekate](https://github.com/CTCaer/hekate) project.
+ If, when using emummc, you encounter a bug, *please be sure to report it* -- that's the only way we can fix it. :)
## 0.8.10
+ A bug was fixed that could cause incorrect system memory allocation on 5.0.0.
+ 5.0.0 should now correctly have an additional 12 MiB allocated for sysmodules.
+ Atmosphère features which check button presses now consider all controllers, isntead of just P1.
+ Support was added for configuring language/region on a per-game basis.
+ This is managed by editing `atmosphere/titles/<title id>/config.ini` for the game.
+ To edit title language, edit `override_config!override_language`.
+ The languages supported are `ja`, `en-US`, `fr`, `de`, `it`, `es`, `zh-CN`, `ko`, `nl`, `pt`, `ru`, `zh-TW`, `en-GB`, `fr-CA`, `es-419`, `zh-Hans`, `zh-Hant`.
+ To edit title region, edit `override_config!override_region`.
+ The regions supported are `jpn`, `usa`, `eur`, `aus`, `chn`, `kor`, `twn`.
+ Atmosphère now provides a reimplementation of the `boot` system module.
+ `boot` is responsible for performing hardware initialization, showing the Nintendo logo, and repairing NAND on system update failure.
+ Atmosphère's `boot` implementation preserves AutoRCM during NAND repair.
+ NAND repair occurs when an unexpected shutdown or error happens during a system update.
+ This fixes a final edge case where AutoRCM might be removed by HOS, which could cause a user to burn fuses.
+ General system stability improvements to enhance the user's experience.
## 0.8.9
+ A number of bugs were fixed, including:
+ A data abort was fixed when mounting certain partitions on NAND.
+ All Stratosphère system modules now only maintain a connection to `sm` when actively using it.
+ This helps mitigate the scenario where sm hits the limit of 64 active connections and crashes.
+ This sometimes caused crashes when custom non-Atmosphère sysmodules were active and the user played certain games (ex: Smash's Stage Builder).
+ fatal now uses the 8.0.0 clkrst API, instead of silently failing to adjust clock rates on that firmware version.
+ A wait loop is now performed when trying to get a session to `sm`, in the case where `sm:` is not yet registered.
+ This fixes a race condition that could cause a failure to boot under certain circumstances.
+ libstratosphere's handling of domain object closing has been improved.
+ Previously, this code could cause crashes/extremely odd behavior (misinterpreting what object a service is) under certain circumstances.
+ An optional automatic reboot timer was added to fatal.
+ By setting the system setting `atmosphere!fatal_auto_reboot_interval` to a non-zero u64 value, fatal can be made to automatically reboot after a certain number of milliseconds.
+ If the setting is zero or not present, fatal will wait for user input as usual.
+ Atmosphère now provides a reimplementation of the `ro` system module.
+ `ro` is responsible for loading dynamic libraries (NROs) on 3.0.0+.
+ On 1.0.0-2.3.0, this is handled by `loader`.
+ Atmosphere's `ro` provides this functionality (`ldr:ro`, `ro:dmnt`) on all firmware versions.
+ An extension was implemented to provide support for applying IPS patches to NROs.
+ All patches at paths like /atmosphere/nro_patches/<user-defined patch name>/<Hex Build-ID for NRO to patch>.ips will be applied, allowing for easy distribution of patches.
+ Both the IPS and IPS32 formats are supported.
+ Atmosphère now provides a reimplementation of the `spl` system module.
+ `spl` (Secure Platform Services) is responsible for cryptographic operations, including all communications with the secure monitor (exosphère).
+ In the future, this may be used to provide extensions to the API for interacting with exosphère from userland.
+ General system stability improvements to enhance the user's experience.
## 0.8.8
+ Support was added for firmware version 8.0.0.
+ Custom exception handlers were added to stratosphere modules.
+ If a crash happens in a core atmosphere module now, instead of silently failing a reboot will occur to log the information to the SD card.
+ A bug was fixed in creport that caused games to hang when crashing under certain circumstances.
+ A bug was fixed that prevented maintenance mode from booting on 7.0.0+.
+ General system stability improvements to enhance the user's experience.
## 0.8.7
+ A few bugs were fixed that could cause fatal to fail to show an error under certain circumstances.
+ A bug was fixed that caused an error when launching certain games (e.g. Hellblade: Senua's Sacrifice).
+ Loader had support added in ams-0.8.4 for a new (7.0.0+) flag bit in NPDMs during process creation, but forgot to allow this bit to be set when validating the NPDM.
+ dmnt's cheat virtual machine received new instructions.
+ These allow for saving, restoring, or clearing registers to a secondary bank, effectively doubling the number of values that can be stored.
+ SHA256 code has been swapped from linux code to libnx's new hw-accelerated cryptography API.
+ Extensions were added to smcGetInfo:
+ A ConfigItem was added to detect whether the current unit has the RCM bug patched.
+ A ConfigItem was added to retrieve the current Atmosphère build hash.
+ Exosphère now tells the kernel to enable user-mode exception handlers, which should allow for better crash reporting/detection from Atmosphère's modules in the future..
+ Opt-in support was added for redirecting game save files to directories on the SD card.
+ Please note, this feature is **experimental**, and may cause problems. Please use at your own risk (and back up your saves before enabling it), as it still needs testing.
+ This can be enabled by setting `atmosphere!fsmitm_redirect_saves_to_sd` to 1 in `system_settings.ini`.
+ General system stability improvements to enhance the user's experience.
## 0.8.6
+ A number of bugs were fixed, including:
+ A case of inverted logic was fixed in fs.mitm which prevented the flags system from working correctly.
+ Time service access was corrected in both creport/fatal.
+ This fixes the timestamps used in fatal/crash report filenames.
+ A coherency issue was fixed in exosphère's Security Engine driver.
+ This fixes some instability issues encountered when overclocking the CPU.
+ Loader now unmaps NROs correctly, when ldr:ro is used.
+ This fixes a crash when repeatedly launching the web applet on < 3.0.0.
+ Usage of hidKeysDown was corrected to hidKeysHeld in several modules.
+ This fixes a rare issue where keypresses may have been incorrectly detected.
+ An issue with code filesystem unmounting was fixed in loader.
+ This issue could occasionally cause a fatal error 0x1015 to be thrown on boot.
+ Two bugs were fixed in the implementations of dmnt's cheat virtual machine.
+ These could cause cheats to work incorrectly under certain circumstances.
+ PM now uses a static buffer instead of a dynamically allocated one during process launch.
+ This fixes a memory exhaustion problem when building with gcc 8.3.0.
+ A workaround for a deadlock bug in Horizon's kernel on >= 6.0.0 was added in dmnt.
+ This prevents a system hang when booting certain titles with cheats enabled (ex: Mario Kart 8 Deluxe).
+ set.mitm now reads the system firmware version directly from the system version archive, instead of calling into set:sys.
+ This fixes compatibility with 1.0.0, which now successfully boots again.
+ dmnt's cheat virtual machine had some instruction set changes.
+ A new opcode was added for beginning conditional blocks based on register contents.
+ More addressing modes were added to the StoreRegisterToAddress opcode.
+ These should allow for more complex cheats to be implemented.
+ A new system for saving the state of cheat toggles between game boots was added.
+ Toggles are now saved to `atmosphere/titles/<title id>/cheats/toggles.txt` when either toggles were successfully loaded from that file or the system setting `atmosphere!dmnt_always_save_cheat_toggles` is non-zero.
+ This removes the need for manually setting cheats from all-on or all-off to the desired state on each game boot.
+ The default behavior for loader's HBL support was changed.
+ Instead of launching HBL when album is launched without R held, loader now launches HBL when album or any game is launched with R held.
+ Loader will now override any app in addition to a specific title id when `hbl_config!override_any_app` is true in `loader.ini`.
+ Accordingly, the `hbl_config!title_id=app` setting was deprecated. Support will be removed in Atmosphère 0.9.0.
+ First-class support was added to loader and fs.mitm for enabling homebrew to launch web applets.
+ Loader will now cause the "HtmlDocument" NCA path to resolve for whatever title HBL is taking over, even if it would not normally do so.
+ fs.mitm will also now cause requests to mount the HtmlDocument content for HBL's title to open the `sdmc:/atmosphere/hbl_html` folder.
+ By default, this just contains a URL whitelist.
+ General system stability improvements to enhance the user's experience.
## 0.8.5
+ Support was added for overriding content on a per-title basis, separate from HBL override.
+ This allows for using mods on the same title that one uses to launch HBL.
+ By default, `!L` is used for title content override (this is configurable by editing `default_config!override_key` in `loader.ini`)
+ This key combination can be set on a per-title basis by creating a `atmosphere/titles/<title id>/config.ini`, and editing `override_config!override_key`.
+ Content headers were added for the embedded files inside of fusee-secondary.
+ This will allow non-fusee bootloaders (like `hekate`) to extract the components bundled inside release binaries.
+ This should greatly simplify the update process in the future, for users who do not launch Atmosphère using fusee.
+ Support for cheat codes was added.
+ These are handled by a new `dmnt` sysmodule, which will also reimplement Nintendo's Debug Monitor in the future.
+ Cheat codes can be enabled/disabled at application launch via a per-title key combination.
+ For details, please see the [cheat loading documentation](https://github.com/Atmosphere-NX/Atmosphere/blob/master/docs/cheats.md#cheat-loating-process).
+ Cheat codes are fully backwards compatible with the pre-existing format, although a number of bugs have been fixed and some new features have been added.
+ For details, please see [the compatibility documentation](https://github.com/Atmosphere-NX/Atmosphere/blob/master/docs/cheats.md#cheat-code-compatibility).
+ An HIPC service API was added (`dmnt:cht`), that will allow user homebrew to interface with and control Atmosphère's cheat manager.
+ Please see [the relevant documentation](https://github.com/Atmosphere-NX/Atmosphere/blob/master/docs/modules/dmnt.md).
+ Full client code can be found in [libstratosphere](https://github.com/Atmosphere-NX/libstratosphere/blob/master/include/stratosphere/services/dmntcht.h).
+ Users interested in interfacing should see [EdiZon](https://github.com/WerWolv/EdiZon), which should have support for interfacing with Atmosphère's API shortly after 0.8.5 releases.
+ A bug was fixed that would cause Atmosphère's fatal screen to not show on 1.0.0-2.3.0.
+ A bug was fixed that caused Atmosphère's automatic ProdInfo backups to be corrupt.
+ General system stability improvements to enhance the user's experience.
## 0.8.4
+ Support for 7.0.0/7.0.1 was added.
+ This is facilitated through a new payload, `sept`, which can be signed, encrypted, and then loaded by Nintendo's TSEC firmware.
+ `sept` will derive the keys needed to boot new firmware, and then load `sept/payload.bin` off the SD card and jump to it.
+ Recognition of applications for override/mitm has been improved.
+ Nintendo's official Title ID range (`0x0100000000000000`-`0x01FFFFFFFFFFFFFF`) is now enforced.
+ A deadlock condition was fixed involving libstratosphere mitm sysmodules.
+ Kernel patches for JIT support were added (Thanks, @m4xw!).
+ These loosen restrictions on caller process in svcControlCodeMemory.
+ `set.mitm` and `fs.mitm` were merged into a single `ams_mitm` sysmodule.
+ This saves a process ID, allowing users to run one additional process up to the 0x40 process limit.
+ A `bpc.mitm` component was added, performing custom behavior on shutdown/reboot requests from `am` or applications.
+ Performing a reboot from the reboot menu now reboots to atmosphere. This can be configured via `system_settings.ini`.
+ Performing a shutdown from the reboot menu now works properly with AutoRCM, and does a real shutdown.
+ General system stability improvements to enhance the user's experience.
## 0.8.3
+ A custom warmboot firmware was implemented, which does not perform anti-downgrade fuse checks.
+ This fixes sleep mode when using a downgraded NAND.
+ This also removes Atmosphère's final dependency on Nintendo's encrypted PK11 binary; all components are now re-implemented.
+ The ExternalContentSource API was changed to not clear on failure.
+ Content override now supports an "app" setting, that causes all applications to be overridden with HBL instead of a specific title.
+ Note: because override keys are system-wide, using this setting will prevent using mods in games (as every game will be HBL).
+ A bug was fixed causing incorrect fatal-error output when svcBreak was called on 5.0.0+.
+ An extension was added to set.mitm to support customization of system settings.
+ These are controlled by `atmosphere/system_settings.ini`, see [here](https://github.com/Atmosphere-NX/Atmosphere/blob/master/docs/modules/set_mitm.md) for documentation.
+ An extension was added to sm, adding a new `sm:dmnt` service.
+ This can be used by a debug monitor in order to debug the registration state of various other services.
+ A bug was fixed in the MitM API that could sometimes cause a system hang during boot.
+ A change was made to the MitM API: in cases where sm would have returned 0xE15 when installing a mitm service, it now defers the result (following GetService semantics).
+ Support for booting into maintenance mode by holding +/- was added to PM.
+ An extension was added to exosphere, adding a custom SMC that allows for DMA to IRAM.
+ In addition, smcGetConfig was extended to reboot to a payload in IRAM at 0x40010000 when ConfigItem 65001 is set to 2.
+ Fatal will now use this to reboot to sdmc:/atmosphere/reboot_payload.bin if present, when a vol button is pressed.
+ An example homebrew ("reboot_to_payload") was also written and is now included with Atmosphère.
+ General system stability improvements to enhance the user's experience.
## 0.8.2
+ A number of bugs were fixed causing users to sometimes see `Key Derivation Failed!`.
+ KFUSE clock enable timings have been adjusted to allow time to stabilize before TSEC is granted access.
+ A race condition was fixed that could cause wrong key data to be used on 6.2.0
+ The TSEC firmware is now retried on failure, fixing a failure affecting ~1/50 boots on 6.2.0.
+ A bug was fixed causing some modules to not work on firmware 1.0.0.
+ A bug was fixed causing sleep mode to not work with debugmode enabled.
+ As a result, debugmode is now enabled in the default BCT.ini.
+ General system stability improvements to enhance the user's experience.
## 0.8.1
+ A bug was fixed causing users to see `Failed to enable SMMU!` if fusee had previously rebooted.
+ This message will still occur sporadically if fusee is not launched from coldboot, but it can never happen twice in a row.
+ A race condition was fixed in Atmosphere `bis_protect` functionality that could cause NS to be able to overwrite BCT public keys.
+ This sometimes broke AutoRCM protection, the current fix has been tested on hardware and verified to work.
+ Support was added for enabling `debugmode` based on the `exosphere` section of `BCT.ini`:
+ Setting `debugmode = 1` will cause exosphere to tell the kernel that debugmode is active.
+ Setting `debugmode_user = 1` will cause exosphere to tell userland that debugmode is active.
+ These are completely independent of one another, allowing fine control of system behavior.
+ Support was added for `nogc` functionality; thanks to @rajkosto for the patches.
+ By default, `nogc` patches will automatically apply if the user is booting into 4.0.0+ with fuses from <= 3.0.2.
+ Users can override this functionality via the `nogc` entry in the `stratosphere` section of `BCT.ini`:
+ Setting `nogc = 1` will force enable `nogc` patches.
+ Setting `nogc = 0` will force disable `nogc` patches.
+ If patches are enabled but not found for the booting system, a fatal error will be thrown.
+ This should prevent running FS without `nogc` patches after updating to an unsupported system version.
+ An extension was added to `exosphere` allowing userland applications to cause the system to reboot into RCM:
+ This is done by calling smcSetConfig(id=65001, value=<nonzero>); user homebrew can use splSetConfig for this.
+ On fatal error, the user can now choose to perform a standard reboot via the power button, or a reboot into RCM via either volume button.
+ A custom message was added to `fatal` for when an Atmosphère API version mismatch is detected (2495-1623).
+ General system stability improvements to enhance the user's experience.
## 0.8.0
+ A custom `fatal` system module was added.
+ This re-implements and extends Nintendo's fatal module, with the following features:
+ Atmosphère's `fatal` does not create error reports.
+ Atmosphère's `fatal` draws a custom error screen, showing registers and a backtrace.
+ Atmosphère's `fatal` attempts to gather debugging info for all crashes, and not just ones that include info.
+ Atmosphère's `fatal` will attempt saving reports to the SD, if a crash report was not generated by `creport`.
+ Title flag handling was changed to prevent folder clutter.
+ Instead of living in `atmosphere/titles/<tid>/%s.flag`, flags are now located in `atmosphere/titles/<tid>/flags/%s.flag`
+ The old format will continue to be supported for some time, but is deprecated.
+ Flags can now be applied to HBL by placing them at `atmosphere/flags/hbl_%s.flag`.
+ Changes were made to the mitm API, greatly improving caller semantics.
+ `sm` now informs mitm services of a new session's process id, enabling custom handling based on title id/process id.
+ smhax is no longer enabled, because it is no longer needed and breaks significant functionality.
+ Users with updated HBL/homebrew should see no observable differences due to this change.
+ Functionality was added implementing basic protections for NAND from userland homebrew:
+ BOOT0 now has write protection for the BCT public key and keyblob regions.
+ The `ns` sysmodule is no longer allowed to write the BCT public keys; all other processes can.
+ This should prevent system updates from removing AutoRCM.
+ No processes should be allowed to write to the keyblob region.
+ By default, BIS partitions other than BOOT0 are now read-only, and CAL0 is neither readable nor writable.
+ Adding a `bis_write` flag for a title will allow it to write to BIS.
+ Adding a `cal_read` flag for a title will allow it to read CAL0.
+ An automatic backup is now made of CAL0 on boot.
+ `fs.mitm` maintains a file handle to this backup, so userland software cannot read it.
+ To facilitate this, `fs.mitm` now mitms all sessions for non-system modules; content overriding has been made separate from service interception.
+ Please note: these protections are basic, and sufficiently malicious homebrew ++can defeat them++.
+ Please be careful to only run homebrew software from sources that you trust.
+ A bug involving HDCP titles crashing on newer firmwares was fixed.
+ Support was added for system version 6.2.0; our thanks to @motezazer for his invaluable help.
+ By default, new keys will automatically be derived without user input.
+ Support is also present for loading new keys from `atmosphere/prod.keys` or `atmosphere/dev.keys`
+ General system stability improvements to enhance the user's experience.
## 0.7.5
+ DRAM training was added to fusee-secondary, courtesy @hexkyz.
+ This greatly improves the speed of memory accesses during boot, resulting in a boot time that is ~200-400% faster.
+ creport has had its code region detection improved.
+ Instead of only checking one of the crashing thread's PC/LR for code region presence, creport now checks both + every address in the stacktrace. This is also now done for every thread.
+ This matches the improvement Nintendo added to official creport in 6.1.0.
+ The code region detection heuristic was further improved by checking whether an address points to .rodata or .rwdata, instead of just .text.
+ This means that a crash appears in a loaded NRO (or otherwise discontiguous) code region, creport will be able to detect all active code regions, and not just that one.
## 0.7.4
+ [libstratosphere](https://github.com/Atmosphere-NX/libstratosphere) has been completely refactored/rewritten, and split into its own, separate submodule.
+ While this is mostly "under the hood" for end-users, the refactor is faster (improving both boot-time and runtime performance), more accurate (many of the internal IPC structures are now bug-for-bug compatible with Nintendo's implementations), and significantly more stable (it fixes a large number of bugs present in the old library).
+ The refactored API is significantly cleaner and easier to write system module code for, which should improve/speed up development of stratosphere.
+ Developers looking to write their own custom system modules for the Switch can now easily include libstratosphere as a submodule in their projects.
+ Loader was extended to add a new generic way to redirect content (ExternalContentSources), courtesy @misson20000:
+ A new command was added to ldr:shel, taking in a tid to redirect and returning a session handle.
+ When the requested TID is loading, Loader will query the handle as though it were an IFileSystem.
+ This allows clients to generically define their own filesystems, and override content with them in loader.
+ fs.mitm has gotten several optimizations that should improve its performance and stability:
+ RomFS redirection now only occurs when there is content to redirect, even if the title is being mitm'd elsewhere.
+ A cache is now maintained of the active data storage, if any, for all opened title IDs. This means if two processes both try to open the same archive, fs.mitm won't duplicate any of its work.
+ RomFS metadata is now cached to the SD card on build instead of being persisted in memory -- this greatly reduces memory footprint and allows fs.mitm to redirect more titles simultaneously than before.
+ A number of bugs were fixed, including:
+ A resource leak was fixed in process creation. This fixes crashes that occur when a large number (>32) games have been launched since the last reboot.
+ fs.mitm no longer errors when receiving a zero-sized buffer. This fixes crashes in some games, including The Messenger.
+ Multi-threaded server semantics should no longer cause deadlocks in certain circumstances. This fixes crashes in some games, including NES Classics.
+ PM now only gives full FS permissions to the active KIPs. This fixes a potential crash where new processes might be unable to be registered with FS.
+ The `make dist` target now includes the branch in the generated zip name.
+ General system stability improvements to enhance the user's experience.
## 0.7.3
+ Loader and fs.mitm now try to reload loader.ini before reading it. This allows for changing the override button combination/HBL title id at runtime.
+ Added a MitM between set:sys and qlaunch, used to override the system version string displayed in system settings.
+ The displayed system version will now display `<Actual version> (AMS <x>.<y>.<z>)`.
+ General system stability improvements to enhance the user's experience.
## 0.7.2
+ Fixed a bug in fs.mitm's LayeredFS read implementation that caused some games to crash when trying to read files.
+ Fixed a bug affecting 1.0.0 that caused games to crash with fatal error 2001-0106 on boot.
+ Improved filenames output by the make dist target.
+ General system stability improvements to enhance the user's experience.
## 0.7.1
+ Fixed a bug preventing consoles on 4.0.0-4.1.0 from going to sleep and waking back up.
+ Fixed a bug preventing consoles on < 4.0.0 from booting without specific KIPs on the SD card.
+ An API was added to Atmosphère's Service Manager for deferring acquisition of all handles for specific services until after early initialization is completed.
+ General system stability improvements to enhance the user's experience.
## 0.7.0
+ First official release of Atmosphère.
+ Supports the following featureset:
+ Fusée, a custom bootloader.
+ Supports loading/customizing of arbitrary KIPs from the SD card.
+ Supports loading a custom kernel from the SD card ("/atmosphere/kernel.bin").
+ Supports compile-time defined kernel patches on a per-firmware basis.
+ All patches at paths like /atmosphere/kip_patches/<user-defined patch name>/<SHA256 of KIP>.ips will be applied to the relevant KIPs, allowing for easy distribution of patches supporting multiple versions.
+ Both the IPS and IPS32 formats are supported.
+ All patches at paths like /atmosphere/kernel_patches/<user-defined patch name>/<SHA256 of Kernel>.ips will be applied to the kernel, allowing for easy distribution of patches supporting multiple versions.
+ Both the IPS and IPS32 formats are supported.
+ Configurable by editing BCT.ini on the SD card.
+ Atmosphère should also be launchable by the alternative hekate bootloader, for those who prefer it.
+ Exosphère, a fully-featured custom secure monitor.
+ Exosphere is a re-implementation of Nintendo's TrustZone firmware, fully replicating all of its features.
+ In addition, it has been extended to provide information on current Atmosphere API version, for homebrew wishing to make use of it.
+ Stratosphère, a set of custom system modules. This includes:
+ A loader system module.
+ Reimplementation of Nintendo's loader, fully replicating all original functionality.
+ Configurable by editing /atmosphere/loader.ini
+ First class support for the Homebrew Loader.
+ An exefs NSP (default "/atmosphere/hbl.nsp") will be used in place of the victim title's exefs.
+ By default, HBL will replace the album applet, but any application should also be supported.
+ Extended to support arbitrary redirection of executable content to the SD card.
+ Files will be preferentially loaded from /atmosphere/titles/<titleid>/exefs/, if present.
+ Files present in the original exefs a user wants to mark as not present may be "stubbed" by creating a .stub file on the SD.
+ If present, a PFS0 at /atmosphere/titles/<titleid>/exefs.nsp will fully replace the original exefs.
+ Redirection is optionally toggleable by holding down certain buttons (by default, holding R disables redirection).
+ Full support for patching NSO content is implemented.
+ All patches at paths like /atmosphere/exefs_patches/<user-defined patch name>/<Hex Build-ID for NSO to patch>.ips will be applied, allowing for easy distribution of patches supporting multiple firmware versions and/or titles.
+ Both the IPS and IPS32 formats are supported.
+ Extended to support launching content from loose executable files on the SD card, without requiring any official installation.
+ This is done by specifying FsStorageId_None on launch.
+ A service manager system module.
+ Reimplementation of Nintendo's service manager, fully replicating all original functionality.
+ Compile-time support for reintroduction of "smhax", allowing clients to optionally skip service access verification by skipping initialization.
+ Extended to allow homebrew to acquire more handles to privileged services than Nintendo natively allows.
+ Extended to add a new API for installing Man-In-The-Middle listeners for arbitrary services.
+ API can additionally be used to safely detect whether a service has been registered in a non-blocking way with no side-effects.
+ Full API documentation to come.
+ A process manager system module.
+ Reimplementation of Nintendo's process manager, fully replicating all original functionality.
+ Extended to allow homebrew to acquire handles to arbitrary processes, and thus read/modify system memory without blocking execution.
+ Extended to allow homebrew to retrieve information about system resource limits.
+ Extended by embedding a full, extended implementation of Nintendo's boot2 system module.
+ Title launch order has been optimized in order to grant access to the SD card faster.
+ The error-collection system module is intentionally not launched, preventing many system telemetry error reports from being generated at all.
+ Users may place their own custom sysmodules on the SD card and flag them for automatic boot2 launch by creating a /atmosphere/titles/<title ID>/boot2.flag file on their SD card.
+ A custom fs.mitm system module.
+ Uses Atmosphère's MitM API in order to provide an easy means for users to modify game content.
+ Intercepts all FS commands sent by games, with special handling for commands used to mount RomFS/DLC content to enable easy creation and distribution of game/DLC mods.
+ fs.mitm will parse the base RomFS image for a game, a RomFS image located at /atmosphere/titles/<title ID>/romfs.bin, and all loose files in /atmosphere/titles/<title ID>/romfs/, and merge them together into a single RomFS image.
+ When merging, loose files are preferred to content in the SD card romfs.bin image, and files from the SD card image are preferred to those in the base image.
+ Can additionally be used to intercept commands sent by arbitrary system titles (excepting those launched before SD card is active), by creating a /atmosphere/titles/<title ID>/fsmitm.flag file on the SD card.
+ Can be forcibly disabled for any title, by creating a /atmosphere/titles/<title ID>/fsmitm_disable.flag file on the SD card.
+ Redirection is optionally toggleable by holding down certain buttons (by default, holding R disables redirection).
+ A custom crash report system module.
+ Serves as a drop-in replacement for Nintendo's own creport system module.
+ Generates detailed, human-readable reports on system crashes, saving to /atmosphere/crash_reports/<timestamp>_<title ID>.log.
+ Because reports are not sent to the erpt sysmodule, this disables all crash report related telemetry.
+ General system stability improvements to enhance the user's experience.
================================================
FILE: docs/components/detail/exosphere_memory_layout.txt
================================================
exosphere, storage requirements:
Nonvolatile memory:
0xE000
Volatile memory: 0x2000
Physical Address Space:
-0x7C010000-0x7C012000 - boot code/volatile memory
-0x7C012000-0x7C01E000 - program region
-0x7C01E000-0x7C01F000 - global data/context
-0x7C01F000-0x7C020000 - L2/L3 page table
-0x7C020000-0x7C040000 - Mariko-only program region
-0x7C040000-0x7C048000 - Mariko-only program stack
-0x7C048000-0x7C050000 - Reserved Mariko TZRAM (SE context carveouts, etc)
Virtual Address Space:
L1: 0x40 bytes.
L1 Entries:
-0 (0x000000000-0x040000000): Empty
-1 (0x040000000-0x080000000): Identity Mapping/Empty
-2 (0x080000000-0x0C0000000): DRAM Mapping/Empty
-3 (0x0C0000000-0x100000000): DRAM Mapping/Empty
-4 (0x100000000-0x140000000): Empty
-5 (0x140000000-0x180000000): Empty
-6 (0x180000000-0x1C0000000): Empty
-7 (0x1C0000000-0x200000000): Virtual Region
L2 Page and L3 page are both0x7C01F000
L2 Entries:
-0x040000000 (Identity IRAM Table)
- Entry Used: 0x000
-0x07C000000 (Identity TZRAM Table)
- Entry Used: 0x1E0
-0x1F0000000 (Virtual Region Table)
- Entry Used: 0x180
L3 Entries:
- Identity TZRAM mapping (0x7C010000-0x7C020000)
- Entry Used: 0x010-0x01F
- Identity IRAM mapping (0x40020000-0x40040000)
- Entry Used: 0x020-0x03F
- Virtual Device region (0x1F0040000-0x1F0080000)
- Entry Used: 0x040-0x07F
- Read Only TZRAM Alias (0x1F00A0000-0x1F00B0000)
- Entry Used: 0x0A0-0x0AF
- Program region (0x1F00C0000-0x1F00CC000)
- Entry Used: 0x0C0-0x0CB
- Mariko Program region (0x1F00D0000-0x1F00F0000)
- Entry Used: 0x0D0-0x0EF
- Mariko Program stack (0x1F00F4000-0x1F00FC000)
- Entry Used: 0x0F4-0x0FB
- Secure DRAM Storage (0x1F0100000-0x1F0110000)
- Entry Used: 0x100-0x10F
- Debug DRAM Storage (0x1F0110000-0x1F0114000)
- Entry Used: 0x110-0x113
- SC7 IRAM Work Space (0x1F0120000-0x1F0130000)
- Entry Used: 0x120-0x12F
- SC7 IRAM Firmware (0x1F0140000-0x1F0141000)
- Entry Used: 0x140-0x140
- Debug Code (0x1F0150000-0x1F0154000)
- Entry Used: 0x150-0x153
- Reserved For Debug (0x1F0160000-0x1F0170000)
- Entry Used: 0x160-0x16F
- Boot Code (0x1F01C0000-0x1F01C2000)
- Entry Used: 0x1C0-0x1C1
- AMS IRAM Page (0x1F01F2000-0x1F01F2000)
- Entry Used: 0x1F2-0x1F2
- AMS User Page (0x1F01F4000-0x1F01F4000)
- Entry Used: 0x1F4-0x1F4
- SMC User Page (0x1F01F6000-0x1F01F6000)
- Entry Used: 0x1F6-0x1F6
- Volatile (Data) (0x1F01F8000-0x1F01F9000)
- Entry Used: 0x1F8-0x1F8
- Volatile (Stacks) (0x1F01FA000-0x1F01FB000)
- Entry Used: 0x1FA-0x1FA
- Global Data (0x1F01FC000-0x1F01FD000)
NV Global Data needs:
Exosphere + Emummc Config (<=0x200)
Boot Config[0x400]
RSA Context(0x100)
Old Device Keys[0x20][0x10];
Old Master Keys[0x20][0x10];
Imported Rsa Keys[4][0x200];
CPU Ctx[4][0x100];
Total: 0x1700
Global Data Page (accessible via X18):
0x000-0x200: Exosphere Config
0x200-0x400: Emummc Config
0x400-0x800: Sealed AES Keys
0x800-0xC00: Boot Config
0xC00-0xFFF: CPU contexts. Can be replaced, but this fits exactly so minimizes program space waste.
Volatile Global Data needs:
Random Cache 0x400 bytes
================================================
FILE: docs/components/emummc.md
================================================
# emummc
emummc is a collaborative project that provides eMMC storage emulation.
Please refer to the project's repository [here](https://github.com/m4xw/emuMMC) for detailed instructions and documentation.
================================================
FILE: docs/components/exosphere.md
================================================
# exosphère
exosphère is a customized reimplementation of the Horizon OS's Secure Monitor.
The Secure Monitor follows the same design principle as Arm's TrustZone and both terms can be used interchangeably in this context. It runs at the highest privilege mode (EL3) available to the main processor and is responsible for all the sensitive cryptographic operations needed by the system as well as power management for each CPU.
## Extensions
exosphère expands the original Secure Monitor design by providing custom SMCs (Secure Monitor Calls) necessary to the homebrew ecosystem. Currently, these are:
```
uint32_t smc_ams_iram_copy(smc_args_t *args);
uint32_t smc_ams_write_address(smc_args_t *args);
uint32_t smc_ams_get_emummc_config(smc_args_t *args);
```
Additionally, exosphère expands the functionality of two SMCs provided by the Horizon OS for getting/setting configuration items. The following custom configuration items are provided by exosphère:
```
CONFIGITEM_EXOSPHERE_VERSION = 65000,
CONFIGITEM_NEEDS_REBOOT = 65001,
CONFIGITEM_NEEDS_SHUTDOWN = 65002,
CONFIGITEM_EXOSPHERE_VERHASH = 65003,
CONFIGITEM_HAS_RCM_BUG_PATCH = 65004,
CONFIGITEM_SHOULD_BLANK_PRODINFO = 65005,
CONFIGITEM_ALLOW_CAL_WRITES = 65006,
```
### smc_ams_iram_copy
This function implements a copy of up to one page between DRAM and IRAM. Its arguments are:
```
args->X[1] = DRAM address (translated by kernel), must be 4-byte aligned.
args->X[2] = IRAM address, must be 4-byte aligned.
args->X[3] = Size (must be <= 0x1000 and 4-byte aligned).
args->X[4] = 0 for read, 1 for write.
```
### smc_ams_write_address
This function implements a write to a DRAM page. Its arguments are:
```
args->X[1] = Virtual address, must be size-bytes aligned and readable by EL0.
args->X[2] = Value.
args->X[3] = Size (must be 1, 2, 4, or 8).
```
### smc_ams_get_emummc_config
This function retrieves configuration for the current [emummc](emummc.md) context. Its arguments are:
```
args->X[1] = MMC id, must be size-bytes aligned and readable by EL0.
args->X[2] = Pointer to output (for paths for filebased + nintendo dir), must be at least 0x100 bytes.
```
### CONFIGITEM_EXOSPHERE_VERSION
This custom configuration item gets information about the current exosphere version.
### CONFIGITEM_NEEDS_REBOOT
This custom configuration item is used to issue a system reboot into RCM or into a warmboot payload leveraging a secondary vulnerability to achieve code execution from warm booting.
### CONFIGITEM_NEEDS_SHUTDOWN
This custom configuration item is used to issue a system shutdown with a warmboot payload leveraging a secondary vulnerability to achieve code execution from warm booting.
### CONFIGITEM_EXOSPHERE_VERHASH
This custom configuration item gets information about the current exosphere git commit hash.
### CONFIGITEM_HAS_RCM_BUG_PATCH
This custom configuration item gets whether the unit has the CVE-2018-6242 vulnerability patched.
### CONFIGITEM_SHOULD_BLANK_PRODINFO
This custom configuration item gets whether the unit should simulate a "blanked" PRODINFO. See [here](../features/configurations.md) for more information.
### CONFIGITEM_ALLOW_CAL_WRITES
This custom configuration item gets whether the unit should allow writing to the calibration partition.
## lp0fw
This is a small, built-in payload that is responsible for waking up the system during a warm boot.
## sc7fw
This is a small, built-in payload that is responsible for putting the system to sleep during a warm boot.
## rebootstub
This is a small, built-in payload that provides functionality to reboot the system into any payload of choice.
================================================
FILE: docs/components/fusee.md
================================================
# fusée
fusée is a custom bootloader used to start the Atmosphère environment.
## fusée
fusée is the first piece of Atmosphère's code that runs on the hardware.
It is distributed as a standalone payload designed to be launched via RCM by abusing the CVE-2018-6242 vulnerability.
This payload is responsible for all the low-level hardware initialization required by the Nintendo Switch, setting up the cryptosystem, mounting/emulating the eMMC, injecting/patching system modules, and launching the exosphère component.
================================================
FILE: docs/components/libraries.md
================================================
# libraries
This is a collection of libraries for doing operating system development for the Nintendo Switch.
## libmesosphere
libmesosphere is a work-in-progress C++ library implementing functionality for the Horizon Kernel.
## libstratosphere
libstratosphere is a work-in-progress C++ library for development of system modules for the Nintendo Switch.
## libvapours
Common boilerplate code for various purposes.
================================================
FILE: docs/components/mesosphere.md
================================================
# mesosphère
mesosphère is a work in progress customized kernel reimplementation.
The Horizon OS's kernel follows microkernel design principles and runs at the EL1 level. It is currently subdivided into a loader (kernel_ldr) and the main kernel code.
================================================
FILE: docs/components/modules/ams_mitm.md
================================================
# ams_mitm
This module provides methods to intercept services provided by other system modules. It is further sub-divided according to the service it targets.
## bpc_mitm
bpc_mitm enables intercepting requests to power control services. It currently intercepts:
+ `am` system module (to intercept the Reboot/Power buttons in the overlay menu)
+ `fatal` system module (to simplify payload reboot logic significantly)
+ [nx-hbloader](https://github.com/switchbrew/nx-hbloader) (to allow homebrew to take advantage of the feature)
## fs_mitm
fs_mitm enables intercepting file system operations. It can deny, delay, replace, or redirect any request made to the file system. It enables LayeredFS to function, which allows for replacement of game assets.
## hid_mitm
hid_mitm enables intercepting requests to controller device services. It is currently disabled by default. If enabled, it intercepts:
+ [nx-hbloader](https://github.com/switchbrew/nx-hbloader) (to help homebrew not need to be recompiled due to a breaking change introduced in the past)
Note that hid_mitm is currently deprecated and might be removed entirely in the future.
## ns_mitm
ns_mitm enables intercepting requests to application control services. It currently intercepts:
+ Web Applets (to facilitate nx-hbloader web browser launching)
## set_mitm
set_mitm enables intercepting requests to the system settings service. It currently intercepts:
+ `ns` system module and games (to allow for overriding game locales)
+ All firmware debug settings requests (to allow modification of system settings not directly exposed to the user)
### Firmware Version
set_
gitextract_x8an86a0/
├── .gitattributes
├── .gitignore
├── .gitmodules
├── LICENSE
├── Makefile
├── README.md
├── atmosphere.mk
├── config_templates/
│ ├── exosphere.ini
│ ├── hbl_html/
│ │ └── accessible-urls/
│ │ └── accessible-urls.txt
│ ├── override_config.ini
│ ├── stratosphere.ini
│ └── system_settings.ini
├── docs/
│ ├── building.md
│ ├── changelog.md
│ ├── components/
│ │ ├── detail/
│ │ │ └── exosphere_memory_layout.txt
│ │ ├── emummc.md
│ │ ├── exosphere.md
│ │ ├── fusee.md
│ │ ├── libraries.md
│ │ ├── mesosphere.md
│ │ ├── modules/
│ │ │ ├── ams_mitm.md
│ │ │ ├── boot.md
│ │ │ ├── boot2.md
│ │ │ ├── creport.md
│ │ │ ├── dmnt.md
│ │ │ ├── eclct.stub.md
│ │ │ ├── erpt.md
│ │ │ ├── fatal.md
│ │ │ ├── jpegdec.md
│ │ │ ├── loader.md
│ │ │ ├── ncm.md
│ │ │ ├── pgl.md
│ │ │ ├── pm.md
│ │ │ ├── ro.md
│ │ │ ├── sm.md
│ │ │ └── spl.md
│ │ ├── stratosphere.md
│ │ ├── thermosphere.md
│ │ └── troposphere.md
│ ├── faq.md
│ ├── features/
│ │ ├── cheats.md
│ │ ├── configurations.md
│ │ └── dns_mitm.md
│ ├── licensing_exemptions/
│ │ └── MIT_LICENSE
│ ├── main.md
│ └── roadmap.md
├── emummc/
│ ├── .gitignore
│ ├── .gitrepo
│ ├── LICENSE
│ ├── Makefile
│ ├── README.md
│ ├── build.sh
│ ├── emummc.json
│ ├── emummc.ld
│ ├── emummc.specs
│ ├── source/
│ │ ├── FS/
│ │ │ ├── FS.h
│ │ │ ├── FS_offsets.c
│ │ │ ├── FS_offsets.h
│ │ │ ├── FS_structs.h
│ │ │ ├── FS_versions.h
│ │ │ └── offsets/
│ │ │ ├── 100.h
│ │ │ ├── 1000.h
│ │ │ ├── 1000_exfat.h
│ │ │ ├── 1020.h
│ │ │ ├── 1020_exfat.h
│ │ │ ├── 1100.h
│ │ │ ├── 1100_exfat.h
│ │ │ ├── 1200.h
│ │ │ ├── 1200_exfat.h
│ │ │ ├── 1203.h
│ │ │ ├── 1203_exfat.h
│ │ │ ├── 1300.h
│ │ │ ├── 1300_exfat.h
│ │ │ ├── 1310.h
│ │ │ ├── 1310_exfat.h
│ │ │ ├── 1400.h
│ │ │ ├── 1400_exfat.h
│ │ │ ├── 1500.h
│ │ │ ├── 1500_exfat.h
│ │ │ ├── 1600.h
│ │ │ ├── 1600_exfat.h
│ │ │ ├── 1603.h
│ │ │ ├── 1603_exfat.h
│ │ │ ├── 1700.h
│ │ │ ├── 1700_exfat.h
│ │ │ ├── 1800.h
│ │ │ ├── 1800_exfat.h
│ │ │ ├── 1810.h
│ │ │ ├── 1810_exfat.h
│ │ │ ├── 1900.h
│ │ │ ├── 1900_exfat.h
│ │ │ ├── 200.h
│ │ │ ├── 2000.h
│ │ │ ├── 2000_exfat.h
│ │ │ ├── 200_exfat.h
│ │ │ ├── 2010.h
│ │ │ ├── 2010_exfat.h
│ │ │ ├── 210.h
│ │ │ ├── 2100.h
│ │ │ ├── 2100_exfat.h
│ │ │ ├── 210_exfat.h
│ │ │ ├── 2120.h
│ │ │ ├── 2120_exfat.h
│ │ │ ├── 300.h
│ │ │ ├── 300_exfat.h
│ │ │ ├── 301.h
│ │ │ ├── 301_exfat.h
│ │ │ ├── 400.h
│ │ │ ├── 400_exfat.h
│ │ │ ├── 410.h
│ │ │ ├── 410_exfat.h
│ │ │ ├── 500.h
│ │ │ ├── 500_exfat.h
│ │ │ ├── 510.h
│ │ │ ├── 510_exfat.h
│ │ │ ├── 600.h
│ │ │ ├── 600_exfat.h
│ │ │ ├── 700.h
│ │ │ ├── 700_exfat.h
│ │ │ ├── 800.h
│ │ │ ├── 800_exfat.h
│ │ │ ├── 810.h
│ │ │ ├── 810_exfat.h
│ │ │ ├── 900.h
│ │ │ ├── 900_exfat.h
│ │ │ ├── 910.h
│ │ │ └── 910_exfat.h
│ │ ├── emmc/
│ │ │ ├── mmc.h
│ │ │ ├── nx_emmc.c
│ │ │ ├── nx_emmc.h
│ │ │ ├── nx_sd.c
│ │ │ ├── nx_sd.h
│ │ │ ├── sd.h
│ │ │ ├── sdmmc.c
│ │ │ ├── sdmmc.h
│ │ │ ├── sdmmc_driver.c
│ │ │ ├── sdmmc_driver.h
│ │ │ └── sdmmc_t210.h
│ │ ├── emuMMC/
│ │ │ ├── emummc.c
│ │ │ ├── emummc.h
│ │ │ └── emummc_ctx.h
│ │ ├── libs/
│ │ │ └── fatfs/
│ │ │ ├── diskio.c
│ │ │ ├── diskio.h
│ │ │ ├── ff.c
│ │ │ ├── ff.h
│ │ │ ├── ffconf.h
│ │ │ ├── ffsystem.c
│ │ │ └── ffunicode.c
│ │ ├── main.c
│ │ ├── nx/
│ │ │ ├── cache.h
│ │ │ ├── cache.s
│ │ │ ├── counter.h
│ │ │ ├── dynamic.c
│ │ │ ├── smc.c
│ │ │ ├── smc.h
│ │ │ ├── start.s
│ │ │ ├── svc.h
│ │ │ └── svc.s
│ │ ├── power/
│ │ │ ├── max77620.h
│ │ │ ├── max7762x.c
│ │ │ └── max7762x.h
│ │ ├── soc/
│ │ │ ├── clock.c
│ │ │ ├── clock.h
│ │ │ ├── gpio.c
│ │ │ ├── gpio.h
│ │ │ ├── i2c.c
│ │ │ ├── i2c.h
│ │ │ ├── pinmux.c
│ │ │ ├── pinmux.h
│ │ │ ├── pmc.h
│ │ │ ├── pmc_lp0_t210.h
│ │ │ └── t210.h
│ │ └── utils/
│ │ ├── fatal.c
│ │ ├── fatal.h
│ │ ├── types.h
│ │ ├── util.c
│ │ └── util.h
│ └── tools/
│ ├── fs_ida_nintendo_folder_xref_formatter.au3
│ └── kip1converter.py
├── exosphere/
│ ├── Makefile
│ ├── exosphere.mk
│ ├── loader_stub/
│ │ ├── Makefile
│ │ ├── loader_stub.ld
│ │ ├── loader_stub.mk
│ │ ├── loader_stub.specs
│ │ └── source/
│ │ ├── secmon_loader_error.cpp
│ │ ├── secmon_loader_error.hpp
│ │ ├── secmon_loader_main.cpp
│ │ ├── secmon_loader_uncompress.cpp
│ │ ├── secmon_loader_uncompress.hpp
│ │ └── start.s
│ ├── mariko_fatal/
│ │ ├── Makefile
│ │ ├── mariko_fatal.ld
│ │ ├── mariko_fatal.mk
│ │ ├── mariko_fatal.specs
│ │ └── source/
│ │ ├── fatal_abort_impl.cpp
│ │ ├── fatal_crt0.s
│ │ ├── fatal_crt0_cpp.cpp
│ │ ├── fatal_device_page_table.cpp
│ │ ├── fatal_device_page_table.hpp
│ │ ├── fatal_display.cpp
│ │ ├── fatal_display.hpp
│ │ ├── fatal_display_config.inc
│ │ ├── fatal_font.inc
│ │ ├── fatal_main.cpp
│ │ ├── fatal_print.cpp
│ │ ├── fatal_print.hpp
│ │ ├── fatal_registers_di.hpp
│ │ ├── fatal_save_context.cpp
│ │ ├── fatal_save_context.hpp
│ │ ├── fatal_sdmmc.cpp
│ │ ├── fatal_sdmmc.hpp
│ │ ├── fatal_sdmmc_c.cpp
│ │ ├── fatal_sdmmc_c.h
│ │ ├── fatal_sound.cpp
│ │ ├── fatal_sound.hpp
│ │ ├── fatfs/
│ │ │ ├── 00history.txt
│ │ │ ├── 00readme.txt
│ │ │ ├── diskio.c
│ │ │ ├── diskio.h
│ │ │ ├── ff.c
│ │ │ ├── ff.h
│ │ │ ├── ffconf.h
│ │ │ ├── ffsystem.c
│ │ │ └── ffunicode.c
│ │ └── fs/
│ │ ├── fatal_fs_api.cpp
│ │ └── fatal_fs_api.hpp
│ ├── program/
│ │ ├── Makefile
│ │ ├── program.ld
│ │ ├── program.mk
│ │ ├── program.specs
│ │ ├── rebootstub/
│ │ │ ├── Makefile
│ │ │ ├── rebootstub.ld
│ │ │ ├── rebootstub.mk
│ │ │ ├── rebootstub.specs
│ │ │ └── source/
│ │ │ ├── rebootstub_exception_vectors.s
│ │ │ ├── rebootstub_main.s
│ │ │ └── rebootstub_power_off.cpp
│ │ ├── sc7fw/
│ │ │ ├── Makefile
│ │ │ ├── sc7fw.ld
│ │ │ ├── sc7fw.mk
│ │ │ ├── sc7fw.specs
│ │ │ └── source/
│ │ │ ├── sc7fw_dram.cpp
│ │ │ ├── sc7fw_dram.hpp
│ │ │ ├── sc7fw_exception_vectors.s
│ │ │ ├── sc7fw_main.cpp
│ │ │ ├── sc7fw_start.s
│ │ │ ├── sc7fw_util.hpp
│ │ │ └── sc7fw_util_asm.s
│ │ ├── source/
│ │ │ ├── boot/
│ │ │ │ ├── secmon_boot.hpp
│ │ │ │ ├── secmon_boot_cache.cpp
│ │ │ │ ├── secmon_boot_cache.hpp
│ │ │ │ ├── secmon_boot_config.cpp
│ │ │ │ ├── secmon_boot_functions.cpp
│ │ │ │ ├── secmon_boot_functions.hpp
│ │ │ │ ├── secmon_boot_key_data.s
│ │ │ │ ├── secmon_boot_rsa.cpp
│ │ │ │ ├── secmon_boot_setup.cpp
│ │ │ │ ├── secmon_crt0.s
│ │ │ │ ├── secmon_crt0_cpp.cpp
│ │ │ │ ├── secmon_main.cpp
│ │ │ │ ├── secmon_make_page_table.cpp
│ │ │ │ ├── secmon_package2.cpp
│ │ │ │ └── secmon_size_data.s
│ │ │ ├── secmon_cache.cpp
│ │ │ ├── secmon_cache.hpp
│ │ │ ├── secmon_cache.inc
│ │ │ ├── secmon_cache_impl.inc
│ │ │ ├── secmon_cpu_context.cpp
│ │ │ ├── secmon_cpu_context.hpp
│ │ │ ├── secmon_error.cpp
│ │ │ ├── secmon_error.hpp
│ │ │ ├── secmon_exception_handler.cpp
│ │ │ ├── secmon_exception_vectors.s
│ │ │ ├── secmon_interrupt_handler.cpp
│ │ │ ├── secmon_interrupt_handler.hpp
│ │ │ ├── secmon_key_storage.cpp
│ │ │ ├── secmon_key_storage.hpp
│ │ │ ├── secmon_map.cpp
│ │ │ ├── secmon_map.hpp
│ │ │ ├── secmon_mariko_fatal_error.cpp
│ │ │ ├── secmon_mariko_fatal_error.hpp
│ │ │ ├── secmon_misc.cpp
│ │ │ ├── secmon_misc.hpp
│ │ │ ├── secmon_page_mapper.cpp
│ │ │ ├── secmon_page_mapper.hpp
│ │ │ ├── secmon_setup.cpp
│ │ │ ├── secmon_setup.hpp
│ │ │ ├── secmon_setup_warm.cpp
│ │ │ ├── secmon_spinlock.hpp
│ │ │ ├── secmon_spinlock.s
│ │ │ ├── secmon_stack_warm.s
│ │ │ ├── secmon_start_virtual.s
│ │ │ ├── secmon_start_warm.s
│ │ │ ├── secmon_user_power_management.cpp
│ │ │ ├── secmon_user_power_management.hpp
│ │ │ └── smc/
│ │ │ ├── secmon_define_access_table.inc
│ │ │ ├── secmon_define_mc01_access_table.inc
│ │ │ ├── secmon_define_mc_access_table.inc
│ │ │ ├── secmon_define_pmc_access_table.inc
│ │ │ ├── secmon_mc01_access_table_data.inc
│ │ │ ├── secmon_mc_access_table_data.inc
│ │ │ ├── secmon_pmc_access_table_data.inc
│ │ │ ├── secmon_random_cache.cpp
│ │ │ ├── secmon_random_cache.hpp
│ │ │ ├── secmon_smc_aes.cpp
│ │ │ ├── secmon_smc_aes.hpp
│ │ │ ├── secmon_smc_carveout.cpp
│ │ │ ├── secmon_smc_carveout.hpp
│ │ │ ├── secmon_smc_common.hpp
│ │ │ ├── secmon_smc_cpu_asm.s
│ │ │ ├── secmon_smc_device_unique_data.cpp
│ │ │ ├── secmon_smc_device_unique_data.hpp
│ │ │ ├── secmon_smc_error.cpp
│ │ │ ├── secmon_smc_error.hpp
│ │ │ ├── secmon_smc_handler.cpp
│ │ │ ├── secmon_smc_handler.hpp
│ │ │ ├── secmon_smc_info.cpp
│ │ │ ├── secmon_smc_info.hpp
│ │ │ ├── secmon_smc_memory_access.cpp
│ │ │ ├── secmon_smc_memory_access.hpp
│ │ │ ├── secmon_smc_power_management.cpp
│ │ │ ├── secmon_smc_power_management.hpp
│ │ │ ├── secmon_smc_random.cpp
│ │ │ ├── secmon_smc_random.hpp
│ │ │ ├── secmon_smc_register_access.cpp
│ │ │ ├── secmon_smc_register_access.hpp
│ │ │ ├── secmon_smc_result.cpp
│ │ │ ├── secmon_smc_result.hpp
│ │ │ ├── secmon_smc_rsa.cpp
│ │ │ ├── secmon_smc_rsa.hpp
│ │ │ ├── secmon_smc_se_lock.cpp
│ │ │ └── secmon_smc_se_lock.hpp
│ │ └── split_program.py
│ ├── sdmmc_test/
│ │ ├── Makefile
│ │ ├── sdmmc_test.ld
│ │ ├── sdmmc_test.specs
│ │ └── source/
│ │ ├── sdmmc_test_main.cpp
│ │ └── sdmmc_test_start.s
│ └── warmboot/
│ ├── Makefile
│ ├── source/
│ │ ├── warmboot_bootrom_workaround.cpp
│ │ ├── warmboot_bootrom_workaround.hpp
│ │ ├── warmboot_clkrst.cpp
│ │ ├── warmboot_clkrst.hpp
│ │ ├── warmboot_cpu_cluster.cpp
│ │ ├── warmboot_cpu_cluster.hpp
│ │ ├── warmboot_dram.cpp
│ │ ├── warmboot_dram.hpp
│ │ ├── warmboot_exception_vectors.s
│ │ ├── warmboot_main.cpp
│ │ ├── warmboot_main.hpp
│ │ ├── warmboot_misc.cpp
│ │ ├── warmboot_misc.hpp
│ │ ├── warmboot_secure_monitor.cpp
│ │ ├── warmboot_secure_monitor.hpp
│ │ ├── warmboot_start.s
│ │ ├── warmboot_util.hpp
│ │ └── warmboot_util_asm.s
│ ├── warmboot.ld
│ ├── warmboot.mk
│ └── warmboot.specs
├── fusee/
│ ├── Makefile
│ ├── build_package3.py
│ ├── fusee.mk
│ ├── loader_stub/
│ │ ├── Makefile
│ │ ├── loader_stub.ld
│ │ ├── loader_stub.mk
│ │ ├── loader_stub.specs
│ │ └── source/
│ │ ├── fusee_loader_error.cpp
│ │ ├── fusee_loader_error.hpp
│ │ ├── fusee_loader_main.cpp
│ │ ├── fusee_loader_start.s
│ │ ├── fusee_loader_uncompress.cpp
│ │ └── fusee_loader_uncompress.hpp
│ └── program/
│ ├── Makefile
│ ├── lz4_compress.py
│ ├── program.ld
│ ├── program.mk
│ ├── program.specs
│ ├── program_ovl.ld
│ ├── source/
│ │ ├── fatfs/
│ │ │ ├── diskio.c
│ │ │ ├── diskio.h
│ │ │ ├── diskio_cpp.h
│ │ │ ├── ff.c
│ │ │ ├── ff.h
│ │ │ ├── ffconf.h
│ │ │ ├── ffsystem.c
│ │ │ ├── ffunicode.c
│ │ │ └── fusee_diskio.cpp
│ │ ├── fs/
│ │ │ ├── fusee_fs_api.cpp
│ │ │ ├── fusee_fs_api.hpp
│ │ │ ├── fusee_fs_file_storage.cpp
│ │ │ └── fusee_fs_storage.hpp
│ │ ├── fusee_cpu.cpp
│ │ ├── fusee_cpu.hpp
│ │ ├── fusee_crt0.cpp
│ │ ├── fusee_display.cpp
│ │ ├── fusee_display.hpp
│ │ ├── fusee_display_config.inc
│ │ ├── fusee_emummc.cpp
│ │ ├── fusee_emummc.hpp
│ │ ├── fusee_exception_handler.cpp
│ │ ├── fusee_exception_handler.hpp
│ │ ├── fusee_exception_handler_asm.s
│ │ ├── fusee_external_package.hpp
│ │ ├── fusee_fatal.cpp
│ │ ├── fusee_fatal.hpp
│ │ ├── fusee_font.inc
│ │ ├── fusee_ini.cpp
│ │ ├── fusee_ini.hpp
│ │ ├── fusee_key_derivation.cpp
│ │ ├── fusee_key_derivation.hpp
│ │ ├── fusee_main.cpp
│ │ ├── fusee_malloc.cpp
│ │ ├── fusee_malloc.hpp
│ │ ├── fusee_mmc.cpp
│ │ ├── fusee_mmc.hpp
│ │ ├── fusee_overlay_manager.cpp
│ │ ├── fusee_overlay_manager.hpp
│ │ ├── fusee_package2.cpp
│ │ ├── fusee_package2.hpp
│ │ ├── fusee_print.cpp
│ │ ├── fusee_print.hpp
│ │ ├── fusee_registers_di.hpp
│ │ ├── fusee_sd_card.cpp
│ │ ├── fusee_sd_card.hpp
│ │ ├── fusee_secmon_sync.cpp
│ │ ├── fusee_secmon_sync.hpp
│ │ ├── fusee_setup_horizon.cpp
│ │ ├── fusee_setup_horizon.hpp
│ │ ├── fusee_start.s
│ │ ├── fusee_stratosphere.cpp
│ │ ├── fusee_stratosphere.hpp
│ │ ├── fusee_uncompress.cpp
│ │ ├── fusee_uncompress.hpp
│ │ ├── mtc/
│ │ │ ├── fusee_mtc.cpp
│ │ │ ├── fusee_mtc.hpp
│ │ │ ├── fusee_mtc_erista.cpp
│ │ │ ├── fusee_mtc_mariko.cpp
│ │ │ ├── fusee_mtc_ram_training_pattern.inc
│ │ │ ├── fusee_mtc_tables_erista.inc
│ │ │ ├── fusee_mtc_tables_mariko.inc
│ │ │ ├── fusee_mtc_timing_table_common.hpp
│ │ │ ├── fusee_mtc_timing_table_erista.hpp
│ │ │ └── fusee_mtc_timing_table_mariko.hpp
│ │ ├── sdram/
│ │ │ ├── fusee_sdram.cpp
│ │ │ ├── fusee_sdram.hpp
│ │ │ ├── fusee_sdram_params.inc
│ │ │ ├── fusee_sdram_params_lp0_erista.inc
│ │ │ └── fusee_sdram_params_lp0_mariko.inc
│ │ └── sein/
│ │ ├── fusee_secure_initialize.cpp
│ │ └── fusee_secure_initialize.hpp
│ ├── update_mtc_tables.py
│ └── update_sdram_params.py
├── img/
│ └── atmosphere.sketch
├── libraries/
│ ├── .gitignore
│ ├── .gitmodules
│ ├── .gitrepo
│ ├── LICENSE
│ ├── README.md
│ ├── config/
│ │ ├── arch/
│ │ │ ├── arm/
│ │ │ │ ├── arch.mk
│ │ │ │ └── cpu/
│ │ │ │ └── arm7tdmi/
│ │ │ │ └── cpu.mk
│ │ │ ├── arm64/
│ │ │ │ ├── arch.mk
│ │ │ │ ├── base_rules
│ │ │ │ ├── base_tools
│ │ │ │ └── cpu/
│ │ │ │ ├── cortex_a57/
│ │ │ │ │ └── cpu.mk
│ │ │ │ └── generic_arm64/
│ │ │ │ └── cpu.mk
│ │ │ ├── armv4t/
│ │ │ │ └── arch.mk
│ │ │ ├── armv8a/
│ │ │ │ └── arch.mk
│ │ │ └── x64/
│ │ │ ├── arch.mk
│ │ │ ├── base_rules
│ │ │ ├── base_tools
│ │ │ └── cpu/
│ │ │ └── generic_x64/
│ │ │ └── cpu.mk
│ │ ├── board/
│ │ │ ├── generic/
│ │ │ │ ├── linux/
│ │ │ │ │ └── board.mk
│ │ │ │ ├── macos/
│ │ │ │ │ └── board.mk
│ │ │ │ └── windows/
│ │ │ │ └── board.mk
│ │ │ ├── nintendo/
│ │ │ │ ├── nx/
│ │ │ │ │ └── board.mk
│ │ │ │ └── nx_bpmp/
│ │ │ │ └── board.mk
│ │ │ └── qemu/
│ │ │ └── virt/
│ │ │ └── board.mk
│ │ ├── common.mk
│ │ ├── os/
│ │ │ ├── horizon/
│ │ │ │ └── os.mk
│ │ │ ├── linux/
│ │ │ │ └── os.mk
│ │ │ ├── macos/
│ │ │ │ └── os.mk
│ │ │ └── windows/
│ │ │ └── os.mk
│ │ └── templates/
│ │ ├── exosphere.mk
│ │ ├── mesosphere.mk
│ │ └── stratosphere.mk
│ ├── libexosphere/
│ │ ├── Makefile
│ │ ├── include/
│ │ │ ├── exosphere/
│ │ │ │ ├── actmon.hpp
│ │ │ │ ├── br/
│ │ │ │ │ ├── br_types.hpp
│ │ │ │ │ └── impl/
│ │ │ │ │ ├── br_common_types.hpp
│ │ │ │ │ ├── br_erista_types.hpp
│ │ │ │ │ └── br_mariko_types.hpp
│ │ │ │ ├── br.hpp
│ │ │ │ ├── charger.hpp
│ │ │ │ ├── clkrst.hpp
│ │ │ │ ├── common.hpp
│ │ │ │ ├── diag/
│ │ │ │ │ └── diag_detailed_assertion_impl.inc
│ │ │ │ ├── flow.hpp
│ │ │ │ ├── fuse.hpp
│ │ │ │ ├── gic.hpp
│ │ │ │ ├── hw/
│ │ │ │ │ ├── hw_arm.hpp
│ │ │ │ │ ├── hw_arm64.hpp
│ │ │ │ │ ├── hw_arm64_cache.hpp
│ │ │ │ │ └── hw_arm64_system_registers.hpp
│ │ │ │ ├── hw.hpp
│ │ │ │ ├── i2c.hpp
│ │ │ │ ├── log.hpp
│ │ │ │ ├── mmu/
│ │ │ │ │ ├── mmu_api.arch.arm.hpp
│ │ │ │ │ ├── mmu_api.arch.arm64.hpp
│ │ │ │ │ └── mmu_api.hpp
│ │ │ │ ├── mmu.hpp
│ │ │ │ ├── pinmux.hpp
│ │ │ │ ├── pkg1/
│ │ │ │ │ ├── pkg1_api.hpp
│ │ │ │ │ ├── pkg1_boot_config.hpp
│ │ │ │ │ ├── pkg1_bootloader_parameters.hpp
│ │ │ │ │ ├── pkg1_error_types.hpp
│ │ │ │ │ ├── pkg1_key_generation.hpp
│ │ │ │ │ └── pkg1_se_key_slots.hpp
│ │ │ │ ├── pkg1.hpp
│ │ │ │ ├── pkg2.hpp
│ │ │ │ ├── pmc.hpp
│ │ │ │ ├── pmic.hpp
│ │ │ │ ├── pmic_setup.hpp
│ │ │ │ ├── rtc.hpp
│ │ │ │ ├── se/
│ │ │ │ │ ├── se_aes.hpp
│ │ │ │ │ ├── se_common.hpp
│ │ │ │ │ ├── se_hash.hpp
│ │ │ │ │ ├── se_management.hpp
│ │ │ │ │ ├── se_oaep.hpp
│ │ │ │ │ ├── se_rng.hpp
│ │ │ │ │ ├── se_rsa.hpp
│ │ │ │ │ └── se_suspend.hpp
│ │ │ │ ├── se.hpp
│ │ │ │ ├── secmon/
│ │ │ │ │ ├── secmon_configuration_context.arch.arm64.hpp
│ │ │ │ │ ├── secmon_configuration_context.hpp
│ │ │ │ │ ├── secmon_emummc_context.hpp
│ │ │ │ │ ├── secmon_log.hpp
│ │ │ │ │ ├── secmon_memory_layout.hpp
│ │ │ │ │ ├── secmon_monitor_context.hpp
│ │ │ │ │ └── secmon_volatile_context.hpp
│ │ │ │ ├── secmon.hpp
│ │ │ │ ├── tsec.hpp
│ │ │ │ ├── uart.hpp
│ │ │ │ ├── util.hpp
│ │ │ │ └── wdt.hpp
│ │ │ └── exosphere.hpp
│ │ ├── libexosphere.mk
│ │ └── source/
│ │ ├── actmon/
│ │ │ ├── actmon_api.cpp
│ │ │ └── actmon_registers.hpp
│ │ ├── charger/
│ │ │ └── charger_api.cpp
│ │ ├── clkrst/
│ │ │ └── clkrst_api.cpp
│ │ ├── crypto/
│ │ │ └── crypto_aes_impl_security_engine.cpp
│ │ ├── flow/
│ │ │ └── flow_api.cpp
│ │ ├── fuse/
│ │ │ ├── fuse_api.cpp
│ │ │ └── fuse_registers.hpp
│ │ ├── gic/
│ │ │ └── gic_api.cpp
│ │ ├── hw/
│ │ │ ├── hw_cache.arch.arm.cpp
│ │ │ └── hw_cache.arch.arm64.cpp
│ │ ├── i2c/
│ │ │ └── i2c_api.cpp
│ │ ├── impl/
│ │ │ └── ams_impl_unexpected_default.cpp
│ │ ├── kfuse/
│ │ │ └── kfuse_registers.hpp
│ │ ├── libc/
│ │ │ ├── libc.c
│ │ │ └── libexo_cxx.cpp
│ │ ├── log/
│ │ │ └── log_api.cpp
│ │ ├── pinmux/
│ │ │ └── pinmux_api.cpp
│ │ ├── pkg1/
│ │ │ └── pkg1_api.cpp
│ │ ├── pmc/
│ │ │ ├── pmc_api.cpp
│ │ │ └── pmc_secure_scratch_test.inc
│ │ ├── pmic/
│ │ │ ├── max77620.h
│ │ │ ├── max7762x.h
│ │ │ └── pmic_api.cpp
│ │ ├── rtc/
│ │ │ ├── max77620-rtc.h
│ │ │ └── rtc_api.cpp
│ │ ├── se/
│ │ │ ├── se_aes.cpp
│ │ │ ├── se_execute.cpp
│ │ │ ├── se_execute.hpp
│ │ │ ├── se_hash.cpp
│ │ │ ├── se_management.cpp
│ │ │ ├── se_oaep.cpp
│ │ │ ├── se_registers.hpp
│ │ │ ├── se_rng.cpp
│ │ │ ├── se_rsa.cpp
│ │ │ └── se_suspend.cpp
│ │ ├── tsec/
│ │ │ ├── tsec_api.cpp
│ │ │ └── tsec_registers.hpp
│ │ ├── uart/
│ │ │ ├── uart_api.cpp
│ │ │ └── uart_registers.hpp
│ │ ├── util/
│ │ │ └── util_api.cpp
│ │ └── wdt/
│ │ └── wdt_api.cpp
│ ├── libmesosphere/
│ │ ├── Makefile
│ │ ├── README.md
│ │ ├── include/
│ │ │ ├── mesosphere/
│ │ │ │ ├── arch/
│ │ │ │ │ ├── arm/
│ │ │ │ │ │ ├── kern_generic_interrupt_controller.hpp
│ │ │ │ │ │ ├── kern_k_interrupt_controller.hpp
│ │ │ │ │ │ └── kern_k_memory_region_device_types.inc
│ │ │ │ │ └── arm64/
│ │ │ │ │ ├── init/
│ │ │ │ │ │ ├── kern_k_init_arguments.hpp
│ │ │ │ │ │ └── kern_k_init_page_table.hpp
│ │ │ │ │ ├── kern_assembly_macros.h
│ │ │ │ │ ├── kern_assembly_offsets.h
│ │ │ │ │ ├── kern_cpu.hpp
│ │ │ │ │ ├── kern_cpu_system_registers.hpp
│ │ │ │ │ ├── kern_k_debug.hpp
│ │ │ │ │ ├── kern_k_exception_context.hpp
│ │ │ │ │ ├── kern_k_hardware_timer.hpp
│ │ │ │ │ ├── kern_k_interrupt_controller.hpp
│ │ │ │ │ ├── kern_k_interrupt_manager.hpp
│ │ │ │ │ ├── kern_k_interrupt_name.hpp
│ │ │ │ │ ├── kern_k_memory_region_device_types.inc
│ │ │ │ │ ├── kern_k_page_table.hpp
│ │ │ │ │ ├── kern_k_page_table_entry.hpp
│ │ │ │ │ ├── kern_k_page_table_impl.hpp
│ │ │ │ │ ├── kern_k_process_page_table.hpp
│ │ │ │ │ ├── kern_k_slab_heap_impl.hpp
│ │ │ │ │ ├── kern_k_spin_lock.hpp
│ │ │ │ │ ├── kern_k_supervisor_page_table.hpp
│ │ │ │ │ ├── kern_k_thread_context.hpp
│ │ │ │ │ ├── kern_secure_monitor_base.hpp
│ │ │ │ │ └── kern_userspace_memory_access.hpp
│ │ │ │ ├── board/
│ │ │ │ │ ├── generic/
│ │ │ │ │ │ └── kern_k_device_page_table.hpp
│ │ │ │ │ ├── nintendo/
│ │ │ │ │ │ └── nx/
│ │ │ │ │ │ ├── kern_cpu_map.hpp
│ │ │ │ │ │ ├── kern_k_device_page_table.hpp
│ │ │ │ │ │ ├── kern_k_memory_layout.hpp
│ │ │ │ │ │ ├── kern_k_memory_region_device_types.inc
│ │ │ │ │ │ └── kern_k_system_control.hpp
│ │ │ │ │ └── qemu/
│ │ │ │ │ └── virt/
│ │ │ │ │ ├── kern_cpu_map.hpp
│ │ │ │ │ ├── kern_k_memory_layout.hpp
│ │ │ │ │ ├── kern_k_memory_region_device_types.inc
│ │ │ │ │ └── kern_k_system_control.hpp
│ │ │ │ ├── init/
│ │ │ │ │ ├── kern_init_arguments_select.hpp
│ │ │ │ │ ├── kern_init_elf.hpp
│ │ │ │ │ ├── kern_init_elf64.hpp
│ │ │ │ │ ├── kern_init_layout.hpp
│ │ │ │ │ ├── kern_init_page_table_select.hpp
│ │ │ │ │ └── kern_init_slab_setup.hpp
│ │ │ │ ├── kern_build_config.hpp
│ │ │ │ ├── kern_common.hpp
│ │ │ │ ├── kern_debug_log.hpp
│ │ │ │ ├── kern_initial_process.hpp
│ │ │ │ ├── kern_k_address_arbiter.hpp
│ │ │ │ ├── kern_k_address_space_info.hpp
│ │ │ │ ├── kern_k_affinity_mask.hpp
│ │ │ │ ├── kern_k_auto_object.hpp
│ │ │ │ ├── kern_k_auto_object_container.hpp
│ │ │ │ ├── kern_k_auto_object_impls.hpp
│ │ │ │ ├── kern_k_capabilities.hpp
│ │ │ │ ├── kern_k_class_token.hpp
│ │ │ │ ├── kern_k_client_port.hpp
│ │ │ │ ├── kern_k_client_session.hpp
│ │ │ │ ├── kern_k_code_memory.hpp
│ │ │ │ ├── kern_k_condition_variable.hpp
│ │ │ │ ├── kern_k_current_context.hpp
│ │ │ │ ├── kern_k_debug_base.hpp
│ │ │ │ ├── kern_k_device_address_space.hpp
│ │ │ │ ├── kern_k_dpc_manager.hpp
│ │ │ │ ├── kern_k_dump_object.hpp
│ │ │ │ ├── kern_k_dynamic_page_manager.hpp
│ │ │ │ ├── kern_k_dynamic_resource_manager.hpp
│ │ │ │ ├── kern_k_dynamic_slab_heap.hpp
│ │ │ │ ├── kern_k_event.hpp
│ │ │ │ ├── kern_k_event_info.hpp
│ │ │ │ ├── kern_k_exception_context.hpp
│ │ │ │ ├── kern_k_handle_table.hpp
│ │ │ │ ├── kern_k_hardware_timer_base.hpp
│ │ │ │ ├── kern_k_initial_process_reader.hpp
│ │ │ │ ├── kern_k_interrupt_event.hpp
│ │ │ │ ├── kern_k_interrupt_task.hpp
│ │ │ │ ├── kern_k_interrupt_task_manager.hpp
│ │ │ │ ├── kern_k_io_pool.hpp
│ │ │ │ ├── kern_k_io_region.hpp
│ │ │ │ ├── kern_k_light_client_session.hpp
│ │ │ │ ├── kern_k_light_condition_variable.hpp
│ │ │ │ ├── kern_k_light_lock.hpp
│ │ │ │ ├── kern_k_light_server_session.hpp
│ │ │ │ ├── kern_k_light_session.hpp
│ │ │ │ ├── kern_k_memory_block.hpp
│ │ │ │ ├── kern_k_memory_block_manager.hpp
│ │ │ │ ├── kern_k_memory_layout.hpp
│ │ │ │ ├── kern_k_memory_manager.hpp
│ │ │ │ ├── kern_k_memory_region.hpp
│ │ │ │ ├── kern_k_memory_region_type.hpp
│ │ │ │ ├── kern_k_object_name.hpp
│ │ │ │ ├── kern_k_page_bitmap.hpp
│ │ │ │ ├── kern_k_page_buffer.hpp
│ │ │ │ ├── kern_k_page_group.hpp
│ │ │ │ ├── kern_k_page_heap.hpp
│ │ │ │ ├── kern_k_page_table_base.hpp
│ │ │ │ ├── kern_k_page_table_manager.hpp
│ │ │ │ ├── kern_k_page_table_slab_heap.hpp
│ │ │ │ ├── kern_k_port.hpp
│ │ │ │ ├── kern_k_priority_queue.hpp
│ │ │ │ ├── kern_k_process.hpp
│ │ │ │ ├── kern_k_readable_event.hpp
│ │ │ │ ├── kern_k_resource_limit.hpp
│ │ │ │ ├── kern_k_scheduler.hpp
│ │ │ │ ├── kern_k_scheduler_impls.hpp
│ │ │ │ ├── kern_k_scheduler_lock.hpp
│ │ │ │ ├── kern_k_scoped_lock.hpp
│ │ │ │ ├── kern_k_scoped_resource_reservation.hpp
│ │ │ │ ├── kern_k_scoped_scheduler_lock_and_sleep.hpp
│ │ │ │ ├── kern_k_server_port.hpp
│ │ │ │ ├── kern_k_server_session.hpp
│ │ │ │ ├── kern_k_session.hpp
│ │ │ │ ├── kern_k_session_request.hpp
│ │ │ │ ├── kern_k_shared_memory.hpp
│ │ │ │ ├── kern_k_shared_memory_info.hpp
│ │ │ │ ├── kern_k_slab_heap.hpp
│ │ │ │ ├── kern_k_spin_lock.hpp
│ │ │ │ ├── kern_k_synchronization_object.hpp
│ │ │ │ ├── kern_k_system_control_base.hpp
│ │ │ │ ├── kern_k_system_resource.hpp
│ │ │ │ ├── kern_k_target_system.hpp
│ │ │ │ ├── kern_k_thread.hpp
│ │ │ │ ├── kern_k_thread_context.hpp
│ │ │ │ ├── kern_k_thread_local_page.hpp
│ │ │ │ ├── kern_k_thread_queue.hpp
│ │ │ │ ├── kern_k_timer_task.hpp
│ │ │ │ ├── kern_k_trace.hpp
│ │ │ │ ├── kern_k_transfer_memory.hpp
│ │ │ │ ├── kern_k_typed_address.hpp
│ │ │ │ ├── kern_k_unsafe_memory.hpp
│ │ │ │ ├── kern_k_unused_slab_memory.hpp
│ │ │ │ ├── kern_k_wait_object.hpp
│ │ │ │ ├── kern_k_worker_task.hpp
│ │ │ │ ├── kern_k_worker_task_manager.hpp
│ │ │ │ ├── kern_kernel.hpp
│ │ │ │ ├── kern_main.hpp
│ │ │ │ ├── kern_panic.hpp
│ │ │ │ ├── kern_select_assembly_macros.h
│ │ │ │ ├── kern_select_assembly_offsets.h
│ │ │ │ ├── kern_select_cpu.hpp
│ │ │ │ ├── kern_select_debug.hpp
│ │ │ │ ├── kern_select_device_page_table.hpp
│ │ │ │ ├── kern_select_hardware_timer.hpp
│ │ │ │ ├── kern_select_interrupt_controller.hpp
│ │ │ │ ├── kern_select_interrupt_manager.hpp
│ │ │ │ ├── kern_select_interrupt_name.hpp
│ │ │ │ ├── kern_select_page_table.hpp
│ │ │ │ ├── kern_select_page_table_impl.hpp
│ │ │ │ ├── kern_select_system_control.hpp
│ │ │ │ ├── kern_select_userspace_memory_access.hpp
│ │ │ │ ├── kern_slab_helpers.hpp
│ │ │ │ ├── kern_svc.hpp
│ │ │ │ └── svc/
│ │ │ │ ├── kern_svc_k_user_pointer.hpp
│ │ │ │ ├── kern_svc_prototypes.hpp
│ │ │ │ ├── kern_svc_results.hpp
│ │ │ │ └── kern_svc_tables.hpp
│ │ │ └── mesosphere.hpp
│ │ ├── libmesosphere.mk
│ │ └── source/
│ │ ├── arch/
│ │ │ ├── arm/
│ │ │ │ ├── kern_generic_interrupt_controller.inc
│ │ │ │ └── kern_k_interrupt_controller.board.generic.cpp
│ │ │ └── arm64/
│ │ │ ├── kern_cpu.cpp
│ │ │ ├── kern_cpu_asm.s
│ │ │ ├── kern_exception_handlers.cpp
│ │ │ ├── kern_k_debug.cpp
│ │ │ ├── kern_k_hardware_timer.cpp
│ │ │ ├── kern_k_interrupt_controller.board.generic.cpp
│ │ │ ├── kern_k_interrupt_manager.cpp
│ │ │ ├── kern_k_page_table.cpp
│ │ │ ├── kern_k_page_table_impl.cpp
│ │ │ ├── kern_k_supervisor_page_table.cpp
│ │ │ ├── kern_k_thread_context.cpp
│ │ │ ├── kern_panic_asm.s
│ │ │ ├── kern_userspace_memory_access_asm.s
│ │ │ └── svc/
│ │ │ ├── kern_svc_address_arbiter_asm.s
│ │ │ ├── kern_svc_call_secure_monitor_asm.s
│ │ │ ├── kern_svc_exception_asm.s
│ │ │ ├── kern_svc_handlers.cpp
│ │ │ ├── kern_svc_handlers_asm.s
│ │ │ ├── kern_svc_light_ipc_asm.s
│ │ │ └── kern_svc_tables.cpp
│ │ ├── board/
│ │ │ ├── nintendo/
│ │ │ │ └── nx/
│ │ │ │ ├── kern_atomics_registers.hpp
│ │ │ │ ├── kern_bpmp_api.hpp
│ │ │ │ ├── kern_ictlr_registers.hpp
│ │ │ │ ├── kern_k_device_page_table.cpp
│ │ │ │ ├── kern_k_io_pool.board.nintendo_nx.inc
│ │ │ │ ├── kern_k_sleep_manager.cpp
│ │ │ │ ├── kern_k_sleep_manager.hpp
│ │ │ │ ├── kern_k_sleep_manager_asm.s
│ │ │ │ ├── kern_k_system_control.cpp
│ │ │ │ ├── kern_lps_driver.cpp
│ │ │ │ ├── kern_lps_driver.hpp
│ │ │ │ ├── kern_secure_monitor.cpp
│ │ │ │ ├── kern_secure_monitor.hpp
│ │ │ │ └── kern_sema_registers.hpp
│ │ │ └── qemu/
│ │ │ └── virt/
│ │ │ ├── kern_k_system_control.cpp
│ │ │ ├── kern_secure_monitor.cpp
│ │ │ └── kern_secure_monitor.hpp
│ │ ├── init/
│ │ │ ├── kern_init_elf.cpp
│ │ │ └── kern_init_slab_setup.cpp
│ │ ├── kern_debug_log.cpp
│ │ ├── kern_debug_log_impl.arch.arm64.s
│ │ ├── kern_debug_log_impl.board.nintendo_nx.cpp
│ │ ├── kern_debug_log_impl.board.qemu_virt.cpp
│ │ ├── kern_debug_log_impl.hpp
│ │ ├── kern_initial_process.cpp
│ │ ├── kern_k_address_arbiter.cpp
│ │ ├── kern_k_address_space_info.cpp
│ │ ├── kern_k_capabilities.cpp
│ │ ├── kern_k_class_token.cpp
│ │ ├── kern_k_client_port.cpp
│ │ ├── kern_k_client_session.cpp
│ │ ├── kern_k_code_memory.cpp
│ │ ├── kern_k_condition_variable.cpp
│ │ ├── kern_k_debug_base.cpp
│ │ ├── kern_k_device_address_space.cpp
│ │ ├── kern_k_dpc_manager.cpp
│ │ ├── kern_k_dump_object.cpp
│ │ ├── kern_k_event.cpp
│ │ ├── kern_k_handle_table.cpp
│ │ ├── kern_k_initial_process_reader.cpp
│ │ ├── kern_k_interrupt_event.cpp
│ │ ├── kern_k_interrupt_task_manager.cpp
│ │ ├── kern_k_io_pool.cpp
│ │ ├── kern_k_io_pool.unsupported.inc
│ │ ├── kern_k_io_region.cpp
│ │ ├── kern_k_light_client_session.cpp
│ │ ├── kern_k_light_condition_variable.cpp
│ │ ├── kern_k_light_lock.cpp
│ │ ├── kern_k_light_server_session.cpp
│ │ ├── kern_k_light_session.cpp
│ │ ├── kern_k_memory_block_manager.cpp
│ │ ├── kern_k_memory_layout.board.nintendo_nx.cpp
│ │ ├── kern_k_memory_layout.board.qemu_virt.cpp
│ │ ├── kern_k_memory_layout.cpp
│ │ ├── kern_k_memory_manager.cpp
│ │ ├── kern_k_object_name.cpp
│ │ ├── kern_k_page_group.cpp
│ │ ├── kern_k_page_heap.cpp
│ │ ├── kern_k_page_table_base.cpp
│ │ ├── kern_k_port.cpp
│ │ ├── kern_k_process.cpp
│ │ ├── kern_k_readable_event.cpp
│ │ ├── kern_k_resource_limit.cpp
│ │ ├── kern_k_scheduler.cpp
│ │ ├── kern_k_scoped_disable_dispatch.cpp
│ │ ├── kern_k_server_port.cpp
│ │ ├── kern_k_server_session.cpp
│ │ ├── kern_k_session.cpp
│ │ ├── kern_k_session_request.cpp
│ │ ├── kern_k_shared_memory.cpp
│ │ ├── kern_k_synchronization_object.cpp
│ │ ├── kern_k_system_control_base.cpp
│ │ ├── kern_k_system_resource.cpp
│ │ ├── kern_k_thread.cpp
│ │ ├── kern_k_thread_local_page.cpp
│ │ ├── kern_k_thread_queue.cpp
│ │ ├── kern_k_trace.cpp
│ │ ├── kern_k_transfer_memory.cpp
│ │ ├── kern_k_unused_slab_memory.cpp
│ │ ├── kern_k_wait_object.cpp
│ │ ├── kern_k_worker_task_manager.cpp
│ │ ├── kern_kernel.cpp
│ │ ├── kern_main.cpp
│ │ ├── kern_panic.cpp
│ │ ├── libc/
│ │ │ └── kern_cxx.cpp
│ │ └── svc/
│ │ ├── kern_svc_activity.cpp
│ │ ├── kern_svc_address_arbiter.cpp
│ │ ├── kern_svc_address_translation.cpp
│ │ ├── kern_svc_cache.cpp
│ │ ├── kern_svc_code_memory.cpp
│ │ ├── kern_svc_condition_variable.cpp
│ │ ├── kern_svc_debug.cpp
│ │ ├── kern_svc_debug_string.cpp
│ │ ├── kern_svc_device_address_space.cpp
│ │ ├── kern_svc_event.cpp
│ │ ├── kern_svc_exception.cpp
│ │ ├── kern_svc_info.cpp
│ │ ├── kern_svc_insecure_memory.cpp
│ │ ├── kern_svc_interrupt_event.cpp
│ │ ├── kern_svc_io_pool.cpp
│ │ ├── kern_svc_ipc.cpp
│ │ ├── kern_svc_kernel_debug.cpp
│ │ ├── kern_svc_light_ipc.cpp
│ │ ├── kern_svc_lock.cpp
│ │ ├── kern_svc_memory.cpp
│ │ ├── kern_svc_physical_memory.cpp
│ │ ├── kern_svc_port.cpp
│ │ ├── kern_svc_power_management.cpp
│ │ ├── kern_svc_process.cpp
│ │ ├── kern_svc_process_memory.cpp
│ │ ├── kern_svc_processor.cpp
│ │ ├── kern_svc_query_memory.cpp
│ │ ├── kern_svc_register.cpp
│ │ ├── kern_svc_resource_limit.cpp
│ │ ├── kern_svc_secure_monitor_call.cpp
│ │ ├── kern_svc_session.cpp
│ │ ├── kern_svc_shared_memory.cpp
│ │ ├── kern_svc_synchronization.cpp
│ │ ├── kern_svc_thread.cpp
│ │ ├── kern_svc_thread_profiler.cpp
│ │ ├── kern_svc_tick.cpp
│ │ └── kern_svc_transfer_memory.cpp
│ ├── libstratosphere/
│ │ ├── Makefile
│ │ ├── README.md
│ │ ├── discard-ehframe.ld
│ │ ├── include/
│ │ │ ├── stratosphere/
│ │ │ │ ├── ams/
│ │ │ │ │ ├── ams_emummc_api.hpp
│ │ │ │ │ ├── ams_environment.hpp
│ │ │ │ │ ├── ams_exosphere_api.hpp
│ │ │ │ │ ├── ams_types.hpp
│ │ │ │ │ └── impl/
│ │ │ │ │ └── ams_system_thread_definitions.hpp
│ │ │ │ ├── ams.hpp
│ │ │ │ ├── boot2/
│ │ │ │ │ └── boot2_api.hpp
│ │ │ │ ├── boot2.hpp
│ │ │ │ ├── cal/
│ │ │ │ │ └── cal_battery_api.hpp
│ │ │ │ ├── cal.hpp
│ │ │ │ ├── capsrv/
│ │ │ │ │ ├── capsrv_screen_shot_control_api.hpp
│ │ │ │ │ ├── capsrv_screen_shot_decode_option.hpp
│ │ │ │ │ └── server/
│ │ │ │ │ ├── capsrv_server_config.hpp
│ │ │ │ │ └── capsrv_server_decoder_api.hpp
│ │ │ │ ├── capsrv.hpp
│ │ │ │ ├── cfg/
│ │ │ │ │ ├── cfg_api.hpp
│ │ │ │ │ ├── cfg_locale_types.hpp
│ │ │ │ │ └── cfg_types.hpp
│ │ │ │ ├── cfg.hpp
│ │ │ │ ├── clkrst/
│ │ │ │ │ ├── clkrst_api.hpp
│ │ │ │ │ ├── clkrst_session_api.hpp
│ │ │ │ │ └── clkrst_types.hpp
│ │ │ │ ├── clkrst.hpp
│ │ │ │ ├── cs/
│ │ │ │ │ ├── cs_audio_server.hpp
│ │ │ │ │ ├── cs_command_processor.hpp
│ │ │ │ │ ├── cs_hid_server.hpp
│ │ │ │ │ ├── cs_remote_video_server.hpp
│ │ │ │ │ └── cs_target_io_server.hpp
│ │ │ │ ├── cs.hpp
│ │ │ │ ├── dd/
│ │ │ │ │ ├── dd_device_address_space.hpp
│ │ │ │ │ ├── dd_device_address_space_api.hpp
│ │ │ │ │ ├── dd_device_address_space_common.hpp
│ │ │ │ │ ├── dd_device_address_space_types.hpp
│ │ │ │ │ ├── dd_io_mappings.hpp
│ │ │ │ │ ├── dd_process_handle.hpp
│ │ │ │ │ └── dd_types.hpp
│ │ │ │ ├── dd.hpp
│ │ │ │ ├── ddsf/
│ │ │ │ │ ├── ddsf_device_code_entry.hpp
│ │ │ │ │ ├── ddsf_device_code_entry_manager.hpp
│ │ │ │ │ ├── ddsf_event_handler_manager.hpp
│ │ │ │ │ ├── ddsf_i_castable.hpp
│ │ │ │ │ ├── ddsf_i_device.hpp
│ │ │ │ │ ├── ddsf_i_driver.hpp
│ │ │ │ │ ├── ddsf_i_event_handler.hpp
│ │ │ │ │ ├── ddsf_i_session.hpp
│ │ │ │ │ ├── ddsf_memory_api.hpp
│ │ │ │ │ ├── ddsf_types.hpp
│ │ │ │ │ └── impl/
│ │ │ │ │ ├── ddsf_for_each.hpp
│ │ │ │ │ └── ddsf_type_tag.hpp
│ │ │ │ ├── ddsf.hpp
│ │ │ │ ├── diag/
│ │ │ │ │ ├── diag_abort_observer.hpp
│ │ │ │ │ ├── diag_assertion_failure_handler.hpp
│ │ │ │ │ ├── diag_backtrace.hpp
│ │ │ │ │ ├── diag_log.hpp
│ │ │ │ │ ├── diag_log_observer.hpp
│ │ │ │ │ ├── diag_log_types.hpp
│ │ │ │ │ ├── diag_sdk_log.hpp
│ │ │ │ │ ├── diag_symbol.hpp
│ │ │ │ │ └── impl/
│ │ │ │ │ ├── diag_backtrace_impl.os.horizon.hpp
│ │ │ │ │ ├── diag_backtrace_impl.os.linux.hpp
│ │ │ │ │ ├── diag_backtrace_impl.os.macos.hpp
│ │ │ │ │ ├── diag_backtrace_impl.os.windows.hpp
│ │ │ │ │ ├── diag_impl_build_config.hpp
│ │ │ │ │ ├── diag_impl_log.hpp
│ │ │ │ │ ├── diag_impl_structured_log.hpp
│ │ │ │ │ ├── diag_impl_structured_sdk_log.hpp
│ │ │ │ │ └── diag_utf8_util.hpp
│ │ │ │ ├── diag.hpp
│ │ │ │ ├── dmnt/
│ │ │ │ │ └── dmnt_cheat_types.hpp
│ │ │ │ ├── dmnt.hpp
│ │ │ │ ├── erpt/
│ │ │ │ │ ├── erpt_ids.autogen.hpp
│ │ │ │ │ ├── erpt_multiple_category_context.hpp
│ │ │ │ │ ├── erpt_types.hpp
│ │ │ │ │ ├── sf/
│ │ │ │ │ │ ├── erpt_sf_i_attachment.hpp
│ │ │ │ │ │ ├── erpt_sf_i_context.hpp
│ │ │ │ │ │ ├── erpt_sf_i_manager.hpp
│ │ │ │ │ │ ├── erpt_sf_i_report.hpp
│ │ │ │ │ │ └── erpt_sf_i_session.hpp
│ │ │ │ │ └── srv/
│ │ │ │ │ ├── erpt_srv_api.hpp
│ │ │ │ │ └── erpt_srv_types.hpp
│ │ │ │ ├── erpt.hpp
│ │ │ │ ├── err/
│ │ │ │ │ ├── err_error_context.hpp
│ │ │ │ │ ├── err_system_api.hpp
│ │ │ │ │ └── err_types.hpp
│ │ │ │ ├── err.hpp
│ │ │ │ ├── fat/
│ │ │ │ │ └── fat_file_system.hpp
│ │ │ │ ├── fat.hpp
│ │ │ │ ├── fatal/
│ │ │ │ │ ├── fatal_types.hpp
│ │ │ │ │ └── impl/
│ │ │ │ │ ├── fatal_i_private_service.hpp
│ │ │ │ │ └── fatal_i_service.hpp
│ │ │ │ ├── fatal.hpp
│ │ │ │ ├── fs/
│ │ │ │ │ ├── common/
│ │ │ │ │ │ ├── fs_dbm_hierarchical_rom_file_table.hpp
│ │ │ │ │ │ ├── fs_dbm_rom_key_value_storage.hpp
│ │ │ │ │ │ ├── fs_dbm_rom_path_tool.hpp
│ │ │ │ │ │ ├── fs_dbm_rom_types.hpp
│ │ │ │ │ │ ├── fs_directory_path_parser.hpp
│ │ │ │ │ │ └── fs_file_storage.hpp
│ │ │ │ │ ├── fs_access_log.hpp
│ │ │ │ │ ├── fs_api.hpp
│ │ │ │ │ ├── fs_application.hpp
│ │ │ │ │ ├── fs_bis.hpp
│ │ │ │ │ ├── fs_code.hpp
│ │ │ │ │ ├── fs_code_verification_data.hpp
│ │ │ │ │ ├── fs_common.hpp
│ │ │ │ │ ├── fs_content.hpp
│ │ │ │ │ ├── fs_content_attributes.hpp
│ │ │ │ │ ├── fs_content_storage.hpp
│ │ │ │ │ ├── fs_content_storage_id.hpp
│ │ │ │ │ ├── fs_context.hpp
│ │ │ │ │ ├── fs_device_save_data.hpp
│ │ │ │ │ ├── fs_directory.hpp
│ │ │ │ │ ├── fs_error_info.hpp
│ │ │ │ │ ├── fs_file.hpp
│ │ │ │ │ ├── fs_filesystem.hpp
│ │ │ │ │ ├── fs_filesystem_for_debug.hpp
│ │ │ │ │ ├── fs_filesystem_utils.hpp
│ │ │ │ │ ├── fs_game_card.hpp
│ │ │ │ │ ├── fs_host.hpp
│ │ │ │ │ ├── fs_i_buffer_manager.hpp
│ │ │ │ │ ├── fs_i_event_notifier.hpp
│ │ │ │ │ ├── fs_image_directory.hpp
│ │ │ │ │ ├── fs_istorage.hpp
│ │ │ │ │ ├── fs_memory_management.hpp
│ │ │ │ │ ├── fs_memory_report_info.hpp
│ │ │ │ │ ├── fs_memory_storage.hpp
│ │ │ │ │ ├── fs_mmc.hpp
│ │ │ │ │ ├── fs_mount.hpp
│ │ │ │ │ ├── fs_operate_range.hpp
│ │ │ │ │ ├── fs_path.hpp
│ │ │ │ │ ├── fs_path_utility.hpp
│ │ │ │ │ ├── fs_priority.hpp
│ │ │ │ │ ├── fs_program_id.hpp
│ │ │ │ │ ├── fs_program_index_map_info.hpp
│ │ │ │ │ ├── fs_query_range.hpp
│ │ │ │ │ ├── fs_read_only_filesystem.hpp
│ │ │ │ │ ├── fs_remote_filesystem.hpp
│ │ │ │ │ ├── fs_remote_storage.hpp
│ │ │ │ │ ├── fs_result_config.hpp
│ │ │ │ │ ├── fs_rights_id.hpp
│ │ │ │ │ ├── fs_romfs_filesystem.hpp
│ │ │ │ │ ├── fs_save_data_management.hpp
│ │ │ │ │ ├── fs_save_data_transaction.hpp
│ │ │ │ │ ├── fs_save_data_types.hpp
│ │ │ │ │ ├── fs_sd_card.hpp
│ │ │ │ │ ├── fs_signed_system_partition.hpp
│ │ │ │ │ ├── fs_speed_emulation.hpp
│ │ │ │ │ ├── fs_storage_type.hpp
│ │ │ │ │ ├── fs_substorage.hpp
│ │ │ │ │ ├── fs_system_data.hpp
│ │ │ │ │ ├── fs_system_save_data.hpp
│ │ │ │ │ ├── fsa/
│ │ │ │ │ │ ├── fs_idirectory.hpp
│ │ │ │ │ │ ├── fs_ifile.hpp
│ │ │ │ │ │ ├── fs_ifilesystem.hpp
│ │ │ │ │ │ └── fs_registrar.hpp
│ │ │ │ │ └── impl/
│ │ │ │ │ ├── fs_access_log_impl.hpp
│ │ │ │ │ ├── fs_common_mount_name.hpp
│ │ │ │ │ ├── fs_data.hpp
│ │ │ │ │ ├── fs_filesystem_proxy_type.hpp
│ │ │ │ │ ├── fs_fs_inline_context_utils.hpp
│ │ │ │ │ ├── fs_hash_generator_factory_selector.hpp
│ │ │ │ │ ├── fs_newable.hpp
│ │ │ │ │ ├── fs_priority_utils.hpp
│ │ │ │ │ ├── fs_result_utils.hpp
│ │ │ │ │ ├── fs_service_name.hpp
│ │ │ │ │ └── fs_storage_service_object_adapter.hpp
│ │ │ │ ├── fs.hpp
│ │ │ │ ├── fssrv/
│ │ │ │ │ ├── fscreator/
│ │ │ │ │ │ ├── fssrv_local_file_system_creator.hpp
│ │ │ │ │ │ ├── fssrv_partition_file_system_creator.hpp
│ │ │ │ │ │ ├── fssrv_rom_file_system_creator.hpp
│ │ │ │ │ │ ├── fssrv_storage_on_nca_creator.hpp
│ │ │ │ │ │ └── fssrv_subdirectory_file_system_creator.hpp
│ │ │ │ │ ├── fssrv_file_system_proxy_api.hpp
│ │ │ │ │ ├── fssrv_file_system_proxy_impl.hpp
│ │ │ │ │ ├── fssrv_file_system_proxy_server_session_resource_manager.hpp
│ │ │ │ │ ├── fssrv_i_file_system_creator.hpp
│ │ │ │ │ ├── fssrv_interface_adapters.hpp
│ │ │ │ │ ├── fssrv_memory_resource_from_exp_heap.hpp
│ │ │ │ │ ├── fssrv_memory_resource_from_standard_allocator.hpp
│ │ │ │ │ ├── fssrv_nca_crypto_configuration.hpp
│ │ │ │ │ ├── fssrv_nca_file_system_service_impl.hpp
│ │ │ │ │ ├── fssrv_program_registry_impl.hpp
│ │ │ │ │ ├── fssrv_program_registry_service.hpp
│ │ │ │ │ ├── impl/
│ │ │ │ │ │ ├── fssrv_access_control.hpp
│ │ │ │ │ │ ├── fssrv_access_control_bits.hpp
│ │ │ │ │ │ ├── fssrv_external_key_manager.hpp
│ │ │ │ │ │ ├── fssrv_file_system_proxy_service_object.hpp
│ │ │ │ │ │ └── fssrv_impl_program_index_map_info_manager.hpp
│ │ │ │ │ ├── interface_adapters/
│ │ │ │ │ │ ├── fssrv_filesystem_interface_adapter.hpp
│ │ │ │ │ │ └── fssrv_storage_interface_adapter.hpp
│ │ │ │ │ └── sf/
│ │ │ │ │ ├── fssrv_sf_i_device_operator.hpp
│ │ │ │ │ ├── fssrv_sf_i_event_notifier.hpp
│ │ │ │ │ ├── fssrv_sf_i_file_system_proxy.hpp
│ │ │ │ │ ├── fssrv_sf_i_file_system_proxy_for_loader.hpp
│ │ │ │ │ ├── fssrv_sf_i_program_registry.hpp
│ │ │ │ │ ├── fssrv_sf_idirectory.hpp
│ │ │ │ │ ├── fssrv_sf_ifile.hpp
│ │ │ │ │ ├── fssrv_sf_ifilesystem.hpp
│ │ │ │ │ ├── fssrv_sf_istorage.hpp
│ │ │ │ │ └── fssrv_sf_path.hpp
│ │ │ │ ├── fssrv.hpp
│ │ │ │ ├── fssystem/
│ │ │ │ │ ├── buffers/
│ │ │ │ │ │ ├── fssystem_buffer_manager_utils.hpp
│ │ │ │ │ │ ├── fssystem_file_system_buddy_heap.hpp
│ │ │ │ │ │ └── fssystem_file_system_buffer_manager.hpp
│ │ │ │ │ ├── fssystem_aes_ctr_counter_extended_storage.hpp
│ │ │ │ │ ├── fssystem_aes_ctr_storage.hpp
│ │ │ │ │ ├── fssystem_aes_ctr_storage_external.hpp
│ │ │ │ │ ├── fssystem_aes_xts_storage.hpp
│ │ │ │ │ ├── fssystem_aes_xts_storage_external.hpp
│ │ │ │ │ ├── fssystem_alignment_matching_storage.hpp
│ │ │ │ │ ├── fssystem_alignment_matching_storage_impl.hpp
│ │ │ │ │ ├── fssystem_allocator_utility.hpp
│ │ │ │ │ ├── fssystem_asynchronous_access.hpp
│ │ │ │ │ ├── fssystem_bitmap_utils.hpp
│ │ │ │ │ ├── fssystem_block_cache_buffered_storage.hpp
│ │ │ │ │ ├── fssystem_bucket_tree.hpp
│ │ │ │ │ ├── fssystem_bucket_tree_template_impl.hpp
│ │ │ │ │ ├── fssystem_bucket_tree_utils.hpp
│ │ │ │ │ ├── fssystem_buffered_storage.hpp
│ │ │ │ │ ├── fssystem_compressed_storage.hpp
│ │ │ │ │ ├── fssystem_compression_common.hpp
│ │ │ │ │ ├── fssystem_compression_configuration.hpp
│ │ │ │ │ ├── fssystem_crypto_configuration.hpp
│ │ │ │ │ ├── fssystem_directory_redirection_filesystem.hpp
│ │ │ │ │ ├── fssystem_directory_savedata_filesystem.hpp
│ │ │ │ │ ├── fssystem_external_code.hpp
│ │ │ │ │ ├── fssystem_file_system_proxy_api.hpp
│ │ │ │ │ ├── fssystem_forwarding_file_system.hpp
│ │ │ │ │ ├── fssystem_hierarchical_integrity_verification_storage.hpp
│ │ │ │ │ ├── fssystem_i_hash_256_generator.hpp
│ │ │ │ │ ├── fssystem_indirect_storage.hpp
│ │ │ │ │ ├── fssystem_indirect_storage_template_impl.hpp
│ │ │ │ │ ├── fssystem_integrity_romfs_storage.hpp
│ │ │ │ │ ├── fssystem_integrity_verification_storage.hpp
│ │ │ │ │ ├── fssystem_local_file_system.hpp
│ │ │ │ │ ├── fssystem_nca_file_system_driver.hpp
│ │ │ │ │ ├── fssystem_nca_header.hpp
│ │ │ │ │ ├── fssystem_partition_file_system.hpp
│ │ │ │ │ ├── fssystem_partition_file_system_meta.hpp
│ │ │ │ │ ├── fssystem_pimpl.hpp
│ │ │ │ │ ├── fssystem_pooled_buffer.hpp
│ │ │ │ │ ├── fssystem_romfs_file_system.hpp
│ │ │ │ │ ├── fssystem_service_context.hpp
│ │ │ │ │ ├── fssystem_sha_hash_generator.hpp
│ │ │ │ │ ├── fssystem_sparse_storage.hpp
│ │ │ │ │ ├── fssystem_speed_emulation_configuration.hpp
│ │ │ │ │ ├── fssystem_subdirectory_filesystem.hpp
│ │ │ │ │ ├── fssystem_switch_storage.hpp
│ │ │ │ │ ├── fssystem_thread_priority_changer.hpp
│ │ │ │ │ ├── fssystem_utility.hpp
│ │ │ │ │ ├── impl/
│ │ │ │ │ │ └── fssystem_block_cache_manager.hpp
│ │ │ │ │ └── save/
│ │ │ │ │ ├── fssystem_i_save_file.hpp
│ │ │ │ │ └── fssystem_i_save_file_system_driver.hpp
│ │ │ │ ├── fssystem.hpp
│ │ │ │ ├── gc/
│ │ │ │ │ ├── gc.hpp
│ │ │ │ │ └── impl/
│ │ │ │ │ ├── gc_embedded_data_holder.hpp
│ │ │ │ │ ├── gc_gc_crypto.hpp
│ │ │ │ │ └── gc_types.hpp
│ │ │ │ ├── gc.hpp
│ │ │ │ ├── gpio/
│ │ │ │ │ ├── driver/
│ │ │ │ │ │ ├── board/
│ │ │ │ │ │ │ └── nintendo/
│ │ │ │ │ │ │ └── nx/
│ │ │ │ │ │ │ └── gpio_driver_api.hpp
│ │ │ │ │ │ ├── gpio_driver_client_api.hpp
│ │ │ │ │ │ ├── gpio_driver_service_api.hpp
│ │ │ │ │ │ ├── gpio_i_gpio_driver.hpp
│ │ │ │ │ │ ├── gpio_pad.hpp
│ │ │ │ │ │ ├── gpio_pad_accessor.hpp
│ │ │ │ │ │ ├── gpio_select_driver_api.hpp
│ │ │ │ │ │ └── impl/
│ │ │ │ │ │ ├── gpio_event_holder.hpp
│ │ │ │ │ │ └── gpio_pad_session_impl.hpp
│ │ │ │ │ ├── gpio_api.hpp
│ │ │ │ │ ├── gpio_pad_api.hpp
│ │ │ │ │ ├── gpio_pad_name.board.nintendo_nx.hpp
│ │ │ │ │ ├── gpio_pad_name.generic.hpp
│ │ │ │ │ ├── gpio_select_pad_name.hpp
│ │ │ │ │ ├── gpio_types.hpp
│ │ │ │ │ ├── server/
│ │ │ │ │ │ └── gpio_server_api.hpp
│ │ │ │ │ └── sf/
│ │ │ │ │ ├── gpio_sf_i_manager.hpp
│ │ │ │ │ └── gpio_sf_i_pad_session.hpp
│ │ │ │ ├── gpio.hpp
│ │ │ │ ├── hid/
│ │ │ │ │ └── hid_api.hpp
│ │ │ │ ├── hid.hpp
│ │ │ │ ├── hos/
│ │ │ │ │ ├── hos_stratosphere_api.hpp
│ │ │ │ │ ├── hos_types.hpp
│ │ │ │ │ └── hos_version_api.hpp
│ │ │ │ ├── hos.hpp
│ │ │ │ ├── htc/
│ │ │ │ │ ├── server/
│ │ │ │ │ │ ├── htc_htcmisc_channel_ids.hpp
│ │ │ │ │ │ └── htc_htcmisc_hipc_server.hpp
│ │ │ │ │ └── tenv/
│ │ │ │ │ ├── htc_tenv.hpp
│ │ │ │ │ ├── htc_tenv_i_service.hpp
│ │ │ │ │ ├── htc_tenv_i_service_manager.hpp
│ │ │ │ │ ├── htc_tenv_service_manager.hpp
│ │ │ │ │ └── htc_tenv_types.hpp
│ │ │ │ ├── htc.hpp
│ │ │ │ ├── htcfs/
│ │ │ │ │ └── htcfs_hipc_server.hpp
│ │ │ │ ├── htcfs.hpp
│ │ │ │ ├── htclow/
│ │ │ │ │ ├── htclow_channel_types.hpp
│ │ │ │ │ ├── htclow_manager_holder.hpp
│ │ │ │ │ ├── htclow_module_types.hpp
│ │ │ │ │ ├── htclow_types.hpp
│ │ │ │ │ └── impl/
│ │ │ │ │ └── htclow_internal_types.hpp
│ │ │ │ ├── htclow.hpp
│ │ │ │ ├── htcs/
│ │ │ │ │ ├── htcs_api.hpp
│ │ │ │ │ ├── htcs_socket.hpp
│ │ │ │ │ ├── htcs_types.hpp
│ │ │ │ │ ├── impl/
│ │ │ │ │ │ ├── htcs_channel_ids.hpp
│ │ │ │ │ │ └── htcs_manager_holder.hpp
│ │ │ │ │ └── server/
│ │ │ │ │ └── htcs_hipc_server.hpp
│ │ │ │ ├── htcs.hpp
│ │ │ │ ├── i2c/
│ │ │ │ │ ├── driver/
│ │ │ │ │ │ ├── board/
│ │ │ │ │ │ │ └── nintendo/
│ │ │ │ │ │ │ └── nx/
│ │ │ │ │ │ │ └── i2c_driver_api.hpp
│ │ │ │ │ │ ├── i2c_bus_api.hpp
│ │ │ │ │ │ ├── i2c_driver_client_api.hpp
│ │ │ │ │ │ ├── i2c_driver_service_api.hpp
│ │ │ │ │ │ ├── i2c_i2c_device_property.hpp
│ │ │ │ │ │ ├── i2c_i_i2c_driver.hpp
│ │ │ │ │ │ ├── i2c_select_driver_api.hpp
│ │ │ │ │ │ └── impl/
│ │ │ │ │ │ └── i2c_i2c_session_impl.hpp
│ │ │ │ │ ├── i2c_api.hpp
│ │ │ │ │ ├── i2c_bus_api.hpp
│ │ │ │ │ ├── i2c_command_list_formatter.hpp
│ │ │ │ │ ├── i2c_device_name.board.nintendo_nx.hpp
│ │ │ │ │ ├── i2c_device_name.generic.hpp
│ │ │ │ │ ├── i2c_register_accessor.hpp
│ │ │ │ │ ├── i2c_select_device_name.hpp
│ │ │ │ │ ├── i2c_types.hpp
│ │ │ │ │ ├── server/
│ │ │ │ │ │ └── i2c_server_api.hpp
│ │ │ │ │ └── sf/
│ │ │ │ │ ├── i2c_sf_i_manager.hpp
│ │ │ │ │ └── i2c_sf_i_session.hpp
│ │ │ │ ├── i2c.hpp
│ │ │ │ ├── init/
│ │ │ │ │ └── init_malloc.hpp
│ │ │ │ ├── init.hpp
│ │ │ │ ├── kvdb/
│ │ │ │ │ ├── kvdb_archive.hpp
│ │ │ │ │ ├── kvdb_auto_buffer.hpp
│ │ │ │ │ ├── kvdb_bounded_string.hpp
│ │ │ │ │ ├── kvdb_file_key_value_cache.hpp
│ │ │ │ │ ├── kvdb_file_key_value_store.hpp
│ │ │ │ │ └── kvdb_memory_key_value_store.hpp
│ │ │ │ ├── kvdb.hpp
│ │ │ │ ├── ldr/
│ │ │ │ │ ├── impl/
│ │ │ │ │ │ ├── ldr_debug_monitor_interface.hpp
│ │ │ │ │ │ ├── ldr_process_manager_interface.hpp
│ │ │ │ │ │ └── ldr_shell_interface.hpp
│ │ │ │ │ ├── ldr_pm_api.hpp
│ │ │ │ │ ├── ldr_shell_api.hpp
│ │ │ │ │ └── ldr_types.hpp
│ │ │ │ ├── ldr.hpp
│ │ │ │ ├── lm/
│ │ │ │ │ ├── lm_api.hpp
│ │ │ │ │ ├── lm_log_getter.hpp
│ │ │ │ │ └── lm_types.hpp
│ │ │ │ ├── lm.hpp
│ │ │ │ ├── lmem/
│ │ │ │ │ ├── impl/
│ │ │ │ │ │ └── lmem_impl_common.hpp
│ │ │ │ │ ├── lmem_common.hpp
│ │ │ │ │ ├── lmem_exp_heap.hpp
│ │ │ │ │ └── lmem_unit_heap.hpp
│ │ │ │ ├── lmem.hpp
│ │ │ │ ├── lr/
│ │ │ │ │ ├── lr_add_on_content_location_resolver.hpp
│ │ │ │ │ ├── lr_api.hpp
│ │ │ │ │ ├── lr_i_add_on_content_location_resolver.hpp
│ │ │ │ │ ├── lr_i_location_resolver.hpp
│ │ │ │ │ ├── lr_i_location_resolver_manager.hpp
│ │ │ │ │ ├── lr_i_registered_location_resolver.hpp
│ │ │ │ │ ├── lr_location_resolver.hpp
│ │ │ │ │ ├── lr_location_resolver_manager_impl.hpp
│ │ │ │ │ ├── lr_registered_location_resolver.hpp
│ │ │ │ │ └── lr_types.hpp
│ │ │ │ ├── lr.hpp
│ │ │ │ ├── mem/
│ │ │ │ │ ├── impl/
│ │ │ │ │ │ ├── heap/
│ │ │ │ │ │ │ ├── mem_impl_heap_cached_heap.hpp
│ │ │ │ │ │ │ └── mem_impl_heap_central_heap.hpp
│ │ │ │ │ │ ├── mem_impl_common.hpp
│ │ │ │ │ │ ├── mem_impl_declarations.hpp
│ │ │ │ │ │ └── mem_impl_heap.hpp
│ │ │ │ │ └── mem_standard_allocator.hpp
│ │ │ │ ├── mem.hpp
│ │ │ │ ├── mitm/
│ │ │ │ │ ├── impl/
│ │ │ │ │ │ └── mitm_pm_interface.hpp
│ │ │ │ │ └── mitm_pm_api.hpp
│ │ │ │ ├── mitm.hpp
│ │ │ │ ├── ncm/
│ │ │ │ │ ├── ncm_api.hpp
│ │ │ │ │ ├── ncm_auto_buffer.hpp
│ │ │ │ │ ├── ncm_bounded_map.hpp
│ │ │ │ │ ├── ncm_content_id.hpp
│ │ │ │ │ ├── ncm_content_id_utils.hpp
│ │ │ │ │ ├── ncm_content_info.hpp
│ │ │ │ │ ├── ncm_content_info_data.hpp
│ │ │ │ │ ├── ncm_content_info_utils.hpp
│ │ │ │ │ ├── ncm_content_management_utils.hpp
│ │ │ │ │ ├── ncm_content_manager_config.hpp
│ │ │ │ │ ├── ncm_content_manager_impl.hpp
│ │ │ │ │ ├── ncm_content_meta.hpp
│ │ │ │ │ ├── ncm_content_meta_database.hpp
│ │ │ │ │ ├── ncm_content_meta_extended_data.hpp
│ │ │ │ │ ├── ncm_content_meta_id.hpp
│ │ │ │ │ ├── ncm_content_meta_key.hpp
│ │ │ │ │ ├── ncm_content_meta_platform.hpp
│ │ │ │ │ ├── ncm_content_meta_type.hpp
│ │ │ │ │ ├── ncm_content_meta_utils.hpp
│ │ │ │ │ ├── ncm_content_storage.hpp
│ │ │ │ │ ├── ncm_content_type.hpp
│ │ │ │ │ ├── ncm_data_id.hpp
│ │ │ │ │ ├── ncm_firmware_variation.hpp
│ │ │ │ │ ├── ncm_i_content_manager.hpp
│ │ │ │ │ ├── ncm_i_content_meta_database.hpp
│ │ │ │ │ ├── ncm_i_content_storage.hpp
│ │ │ │ │ ├── ncm_ids.hpp
│ │ │ │ │ ├── ncm_install_progress.hpp
│ │ │ │ │ ├── ncm_install_task_base.hpp
│ │ │ │ │ ├── ncm_install_task_data.hpp
│ │ │ │ │ ├── ncm_install_task_occupied_size.hpp
│ │ │ │ │ ├── ncm_integrated_content_meta_database_impl.hpp
│ │ │ │ │ ├── ncm_integrated_content_storage_impl.hpp
│ │ │ │ │ ├── ncm_integrated_list.hpp
│ │ │ │ │ ├── ncm_make_path.hpp
│ │ │ │ │ ├── ncm_mapped_memory.hpp
│ │ │ │ │ ├── ncm_max_count.hpp
│ │ │ │ │ ├── ncm_memory_report.hpp
│ │ │ │ │ ├── ncm_package_install_task.hpp
│ │ │ │ │ ├── ncm_package_install_task_base.hpp
│ │ │ │ │ ├── ncm_package_system_downgrade_task.hpp
│ │ │ │ │ ├── ncm_package_system_update_task.hpp
│ │ │ │ │ ├── ncm_path.hpp
│ │ │ │ │ ├── ncm_path_string.hpp
│ │ │ │ │ ├── ncm_placeholder_id.hpp
│ │ │ │ │ ├── ncm_program_id.hpp
│ │ │ │ │ ├── ncm_program_location.hpp
│ │ │ │ │ ├── ncm_registered_host_content.hpp
│ │ │ │ │ ├── ncm_rights_id.hpp
│ │ │ │ │ ├── ncm_rights_id_cache.hpp
│ │ │ │ │ ├── ncm_storage_id.hpp
│ │ │ │ │ ├── ncm_storage_utils.hpp
│ │ │ │ │ ├── ncm_submission_package_install_task.hpp
│ │ │ │ │ ├── ncm_system_content_meta_id.hpp
│ │ │ │ │ └── ncm_system_update_task_apply_info.hpp
│ │ │ │ ├── ncm.hpp
│ │ │ │ ├── nim/
│ │ │ │ │ ├── nim_network_install_manager_api.hpp
│ │ │ │ │ ├── nim_system_update_task_id.hpp
│ │ │ │ │ └── nim_task_id_common.hpp
│ │ │ │ ├── nim.hpp
│ │ │ │ ├── ns/
│ │ │ │ │ └── impl/
│ │ │ │ │ └── ns_i_async.hpp
│ │ │ │ ├── ns.hpp
│ │ │ │ ├── nsd/
│ │ │ │ │ ├── impl/
│ │ │ │ │ │ └── device/
│ │ │ │ │ │ └── nsd_device.hpp
│ │ │ │ │ └── nsd_types.hpp
│ │ │ │ ├── nsd.hpp
│ │ │ │ ├── os/
│ │ │ │ │ ├── impl/
│ │ │ │ │ │ ├── os_internal_busy_mutex.hpp
│ │ │ │ │ │ ├── os_internal_busy_mutex_impl.os.generic.hpp
│ │ │ │ │ │ ├── os_internal_busy_mutex_impl.os.horizon.hpp
│ │ │ │ │ │ ├── os_internal_condition_variable.hpp
│ │ │ │ │ │ ├── os_internal_condition_variable_impl.os.horizon.hpp
│ │ │ │ │ │ ├── os_internal_condition_variable_impl.os.windows.hpp
│ │ │ │ │ │ ├── os_internal_condition_variable_impl.pthread.hpp
│ │ │ │ │ │ ├── os_internal_critical_section.hpp
│ │ │ │ │ │ ├── os_internal_critical_section_impl.os.horizon.hpp
│ │ │ │ │ │ ├── os_internal_critical_section_impl.os.windows.hpp
│ │ │ │ │ │ ├── os_internal_critical_section_impl.pthread.hpp
│ │ │ │ │ │ ├── os_internal_light_event.hpp
│ │ │ │ │ │ ├── os_internal_light_event_impl.os.generic.hpp
│ │ │ │ │ │ ├── os_internal_light_event_impl.os.horizon.hpp
│ │ │ │ │ │ ├── os_internal_rw_busy_mutex.hpp
│ │ │ │ │ │ ├── os_internal_rw_busy_mutex_impl.os.horizon.hpp
│ │ │ │ │ │ ├── os_internal_rw_busy_mutex_impl.os.linux.hpp
│ │ │ │ │ │ ├── os_internal_rw_busy_mutex_impl.os.macos.hpp
│ │ │ │ │ │ ├── os_internal_rw_busy_mutex_impl.os.windows.hpp
│ │ │ │ │ │ ├── os_internal_rw_busy_mutex_value.hpp
│ │ │ │ │ │ ├── os_memory_fence_api.os.generic.hpp
│ │ │ │ │ │ └── os_memory_fence_api.os.horizon.hpp
│ │ │ │ │ ├── os_argument.hpp
│ │ │ │ │ ├── os_barrier.hpp
│ │ │ │ │ ├── os_barrier_api.hpp
│ │ │ │ │ ├── os_barrier_types.hpp
│ │ │ │ │ ├── os_busy_mutex.hpp
│ │ │ │ │ ├── os_busy_mutex_api.hpp
│ │ │ │ │ ├── os_busy_mutex_types.hpp
│ │ │ │ │ ├── os_cache.hpp
│ │ │ │ │ ├── os_common_config.hpp
│ │ │ │ │ ├── os_common_types.hpp
│ │ │ │ │ ├── os_condition_variable.hpp
│ │ │ │ │ ├── os_condition_variable_api.hpp
│ │ │ │ │ ├── os_condition_variable_common.hpp
│ │ │ │ │ ├── os_condition_variable_types.hpp
│ │ │ │ │ ├── os_debug.hpp
│ │ │ │ │ ├── os_debug_api.hpp
│ │ │ │ │ ├── os_debug_types.hpp
│ │ │ │ │ ├── os_event.hpp
│ │ │ │ │ ├── os_event_api.hpp
│ │ │ │ │ ├── os_event_common.hpp
│ │ │ │ │ ├── os_event_types.hpp
│ │ │ │ │ ├── os_insecure_memory_api.hpp
│ │ │ │ │ ├── os_interrupt_event.hpp
│ │ │ │ │ ├── os_interrupt_event_api.hpp
│ │ │ │ │ ├── os_interrupt_event_common.hpp
│ │ │ │ │ ├── os_interrupt_event_types.hpp
│ │ │ │ │ ├── os_io_region.hpp
│ │ │ │ │ ├── os_io_region_api.hpp
│ │ │ │ │ ├── os_io_region_types.hpp
│ │ │ │ │ ├── os_light_event.hpp
│ │ │ │ │ ├── os_light_event_api.hpp
│ │ │ │ │ ├── os_light_event_types.hpp
│ │ │ │ │ ├── os_light_message_queue.hpp
│ │ │ │ │ ├── os_light_message_queue_api.hpp
│ │ │ │ │ ├── os_light_message_queue_types.hpp
│ │ │ │ │ ├── os_light_semaphore.hpp
│ │ │ │ │ ├── os_light_semaphore_api.hpp
│ │ │ │ │ ├── os_light_semaphore_types.hpp
│ │ │ │ │ ├── os_memory_attribute.hpp
│ │ │ │ │ ├── os_memory_common.hpp
│ │ │ │ │ ├── os_memory_fence.hpp
│ │ │ │ │ ├── os_memory_fence_api.hpp
│ │ │ │ │ ├── os_memory_heap.hpp
│ │ │ │ │ ├── os_memory_heap_api.hpp
│ │ │ │ │ ├── os_memory_heap_common.hpp
│ │ │ │ │ ├── os_memory_permission.hpp
│ │ │ │ │ ├── os_message_queue.hpp
│ │ │ │ │ ├── os_message_queue_api.hpp
│ │ │ │ │ ├── os_message_queue_common.hpp
│ │ │ │ │ ├── os_message_queue_types.hpp
│ │ │ │ │ ├── os_multiple_wait.hpp
│ │ │ │ │ ├── os_multiple_wait_api.hpp
│ │ │ │ │ ├── os_multiple_wait_types.hpp
│ │ │ │ │ ├── os_multiple_wait_utils.hpp
│ │ │ │ │ ├── os_mutex.hpp
│ │ │ │ │ ├── os_mutex_api.hpp
│ │ │ │ │ ├── os_mutex_common.hpp
│ │ │ │ │ ├── os_mutex_types.hpp
│ │ │ │ │ ├── os_native_handle.hpp
│ │ │ │ │ ├── os_native_handle_api.hpp
│ │ │ │ │ ├── os_native_handle_types.hpp
│ │ │ │ │ ├── os_process_code_memory_api.hpp
│ │ │ │ │ ├── os_process_handle_api.hpp
│ │ │ │ │ ├── os_process_memory_api.hpp
│ │ │ │ │ ├── os_random.hpp
│ │ │ │ │ ├── os_rw_busy_mutex.hpp
│ │ │ │ │ ├── os_rw_busy_mutex_api.hpp
│ │ │ │ │ ├── os_rw_busy_mutex_types.hpp
│ │ │ │ │ ├── os_rw_lock.hpp
│ │ │ │ │ ├── os_rw_lock_api.hpp
│ │ │ │ │ ├── os_rw_lock_common.hpp
│ │ │ │ │ ├── os_rw_lock_types.hpp
│ │ │ │ │ ├── os_sdk_condition_variable.hpp
│ │ │ │ │ ├── os_sdk_mutex.hpp
│ │ │ │ │ ├── os_sdk_recursive_mutex.hpp
│ │ │ │ │ ├── os_sdk_reply_and_receive.hpp
│ │ │ │ │ ├── os_sdk_thread_api.hpp
│ │ │ │ │ ├── os_sdk_thread_info.hpp
│ │ │ │ │ ├── os_sdk_thread_info_api.hpp
│ │ │ │ │ ├── os_sdk_thread_info_types.hpp
│ │ │ │ │ ├── os_sdk_thread_local_storage.hpp
│ │ │ │ │ ├── os_sdk_thread_local_storage_api.hpp
│ │ │ │ │ ├── os_sdk_thread_types.hpp
│ │ │ │ │ ├── os_semaphore.hpp
│ │ │ │ │ ├── os_semaphore_api.hpp
│ │ │ │ │ ├── os_semaphore_types.hpp
│ │ │ │ │ ├── os_shared_memory.hpp
│ │ │ │ │ ├── os_shared_memory_api.hpp
│ │ │ │ │ ├── os_shared_memory_types.hpp
│ │ │ │ │ ├── os_system_event.hpp
│ │ │ │ │ ├── os_system_event_api.hpp
│ │ │ │ │ ├── os_system_event_types.hpp
│ │ │ │ │ ├── os_thread.hpp
│ │ │ │ │ ├── os_thread_api.hpp
│ │ │ │ │ ├── os_thread_common.hpp
│ │ │ │ │ ├── os_thread_local_storage.hpp
│ │ │ │ │ ├── os_thread_local_storage_api.hpp
│ │ │ │ │ ├── os_thread_local_storage_common.hpp
│ │ │ │ │ ├── os_thread_types.hpp
│ │ │ │ │ ├── os_tick.hpp
│ │ │ │ │ ├── os_timer_event.hpp
│ │ │ │ │ ├── os_timer_event_api.hpp
│ │ │ │ │ ├── os_timer_event_types.hpp
│ │ │ │ │ ├── os_transfer_memory.hpp
│ │ │ │ │ ├── os_transfer_memory_api.hpp
│ │ │ │ │ ├── os_transfer_memory_types.hpp
│ │ │ │ │ ├── os_unsafe_memory_api.hpp
│ │ │ │ │ ├── os_virtual_address_memory.hpp
│ │ │ │ │ ├── os_virtual_address_memory_api.hpp
│ │ │ │ │ ├── os_virtual_address_memory_common.hpp
│ │ │ │ │ └── os_virtual_address_memory_types.hpp
│ │ │ │ ├── os.hpp
│ │ │ │ ├── osdbg/
│ │ │ │ │ ├── osdbg_thread.hpp
│ │ │ │ │ ├── osdbg_thread_api.hpp
│ │ │ │ │ ├── osdbg_thread_api_impl.hpp
│ │ │ │ │ └── osdbg_thread_types.hpp
│ │ │ │ ├── osdbg.hpp
│ │ │ │ ├── patcher/
│ │ │ │ │ └── patcher_api.hpp
│ │ │ │ ├── patcher.hpp
│ │ │ │ ├── pcv/
│ │ │ │ │ ├── pcv_api.hpp
│ │ │ │ │ └── pcv_types.hpp
│ │ │ │ ├── pcv.hpp
│ │ │ │ ├── pgl/
│ │ │ │ │ ├── pgl_event_observer.hpp
│ │ │ │ │ ├── pgl_shell_api.hpp
│ │ │ │ │ ├── pgl_types.hpp
│ │ │ │ │ ├── sf/
│ │ │ │ │ │ ├── pgl_sf_i_event_observer.hpp
│ │ │ │ │ │ └── pgl_sf_i_shell_interface.hpp
│ │ │ │ │ ├── srv/
│ │ │ │ │ │ ├── pgl_srv_api.hpp
│ │ │ │ │ │ └── pgl_srv_shell_interface.hpp
│ │ │ │ │ └── tipc/
│ │ │ │ │ ├── pgl_tipc_i_event_observer.hpp
│ │ │ │ │ └── pgl_tipc_i_shell_interface.hpp
│ │ │ │ ├── pgl.hpp
│ │ │ │ ├── pinmux/
│ │ │ │ │ ├── driver/
│ │ │ │ │ │ └── pinmux_driver_api.hpp
│ │ │ │ │ └── pinmux_api.hpp
│ │ │ │ ├── pinmux.hpp
│ │ │ │ ├── pm/
│ │ │ │ │ ├── impl/
│ │ │ │ │ │ ├── pm_boot_mode_interface.hpp
│ │ │ │ │ │ ├── pm_debug_monitor_interface.hpp
│ │ │ │ │ │ ├── pm_information_interface.hpp
│ │ │ │ │ │ └── pm_shell_interface.hpp
│ │ │ │ │ ├── pm_boot_mode_api.hpp
│ │ │ │ │ ├── pm_dmnt_api.hpp
│ │ │ │ │ ├── pm_info_api.hpp
│ │ │ │ │ ├── pm_shell_api.hpp
│ │ │ │ │ └── pm_types.hpp
│ │ │ │ ├── pm.hpp
│ │ │ │ ├── powctl/
│ │ │ │ │ ├── driver/
│ │ │ │ │ │ ├── impl/
│ │ │ │ │ │ │ ├── powctl_charge_arbiter.hpp
│ │ │ │ │ │ │ ├── powctl_charger_parameters.board.nintendo_nx.hpp
│ │ │ │ │ │ │ ├── powctl_charger_parameters.generic.hpp
│ │ │ │ │ │ │ └── powctl_select_charger_parameters.hpp
│ │ │ │ │ │ └── powctl_driver_api.hpp
│ │ │ │ │ ├── impl/
│ │ │ │ │ │ └── powctl_battery_charge_percentage.hpp
│ │ │ │ │ ├── powctl_battery_api.hpp
│ │ │ │ │ ├── powctl_charger_api.hpp
│ │ │ │ │ ├── powctl_devices.board.nintendo_nx.hpp
│ │ │ │ │ ├── powctl_select_devices.hpp
│ │ │ │ │ ├── powctl_session_api.hpp
│ │ │ │ │ └── powctl_types.hpp
│ │ │ │ ├── powctl.hpp
│ │ │ │ ├── psc/
│ │ │ │ │ ├── psc_pm_module.hpp
│ │ │ │ │ ├── psc_pm_module.os.generic.hpp
│ │ │ │ │ ├── psc_pm_module.os.horizon.hpp
│ │ │ │ │ ├── psc_pm_module_id.hpp
│ │ │ │ │ ├── psc_types.hpp
│ │ │ │ │ └── sf/
│ │ │ │ │ ├── psc_sf_i_pm_module.hpp
│ │ │ │ │ └── psc_sf_i_pm_service.hpp
│ │ │ │ ├── psc.hpp
│ │ │ │ ├── pwm/
│ │ │ │ │ ├── driver/
│ │ │ │ │ │ ├── board/
│ │ │ │ │ │ │ └── nintendo/
│ │ │ │ │ │ │ └── nx/
│ │ │ │ │ │ │ └── pwm_driver_api.hpp
│ │ │ │ │ │ ├── pwm_channel_api.hpp
│ │ │ │ │ │ ├── pwm_driver_client_api.hpp
│ │ │ │ │ │ ├── pwm_driver_service_api.hpp
│ │ │ │ │ │ ├── pwm_i_pwm_device.hpp
│ │ │ │ │ │ ├── pwm_i_pwm_driver.hpp
│ │ │ │ │ │ └── pwm_select_driver_api.hpp
│ │ │ │ │ ├── pwm_api.hpp
│ │ │ │ │ ├── pwm_channel_api.hpp
│ │ │ │ │ ├── pwm_channel_name.board.nintendo_nx.hpp
│ │ │ │ │ ├── pwm_channel_name.generic.hpp
│ │ │ │ │ ├── pwm_select_channel_name.hpp
│ │ │ │ │ ├── pwm_types.hpp
│ │ │ │ │ ├── server/
│ │ │ │ │ │ └── pwm_server_api.hpp
│ │ │ │ │ └── sf/
│ │ │ │ │ ├── pwm_sf_i_channel_session.hpp
│ │ │ │ │ └── pwm_sf_i_manager.hpp
│ │ │ │ ├── pwm.hpp
│ │ │ │ ├── rapidjson/
│ │ │ │ │ ├── allocators.h
│ │ │ │ │ ├── cursorstreamwrapper.h
│ │ │ │ │ ├── document.h
│ │ │ │ │ ├── encodedstream.h
│ │ │ │ │ ├── encodings.h
│ │ │ │ │ ├── error/
│ │ │ │ │ │ ├── en.h
│ │ │ │ │ │ └── error.h
│ │ │ │ │ ├── filereadstream.h
│ │ │ │ │ ├── filewritestream.h
│ │ │ │ │ ├── fwd.h
│ │ │ │ │ ├── internal/
│ │ │ │ │ │ ├── biginteger.h
│ │ │ │ │ │ ├── clzll.h
│ │ │ │ │ │ ├── diyfp.h
│ │ │ │ │ │ ├── dtoa.h
│ │ │ │ │ │ ├── ieee754.h
│ │ │ │ │ │ ├── itoa.h
│ │ │ │ │ │ ├── meta.h
│ │ │ │ │ │ ├── pow10.h
│ │ │ │ │ │ ├── regex.h
│ │ │ │ │ │ ├── stack.h
│ │ │ │ │ │ ├── strfunc.h
│ │ │ │ │ │ ├── strtod.h
│ │ │ │ │ │ └── swap.h
│ │ │ │ │ ├── istreamwrapper.h
│ │ │ │ │ ├── memorybuffer.h
│ │ │ │ │ ├── memorystream.h
│ │ │ │ │ ├── msinttypes/
│ │ │ │ │ │ ├── inttypes.h
│ │ │ │ │ │ └── stdint.h
│ │ │ │ │ ├── ostreamwrapper.h
│ │ │ │ │ ├── pointer.h
│ │ │ │ │ ├── prettywriter.h
│ │ │ │ │ ├── rapidjson.h
│ │ │ │ │ ├── reader.h
│ │ │ │ │ ├── schema.h
│ │ │ │ │ ├── stream.h
│ │ │ │ │ ├── stringbuffer.h
│ │ │ │ │ └── writer.h
│ │ │ │ ├── rapidjson.hpp
│ │ │ │ ├── regulator/
│ │ │ │ │ ├── regulator_api.hpp
│ │ │ │ │ ├── regulator_session_api.hpp
│ │ │ │ │ └── regulator_types.hpp
│ │ │ │ ├── regulator.hpp
│ │ │ │ ├── ro/
│ │ │ │ │ ├── impl/
│ │ │ │ │ │ ├── ro_debug_monitor_interface.hpp
│ │ │ │ │ │ ├── ro_ro_exception_info.hpp
│ │ │ │ │ │ └── ro_ro_interface.hpp
│ │ │ │ │ └── ro_types.hpp
│ │ │ │ ├── ro.hpp
│ │ │ │ ├── rocrt/
│ │ │ │ │ └── rocrt.hpp
│ │ │ │ ├── scs/
│ │ │ │ │ ├── scs_command_processor.hpp
│ │ │ │ │ ├── scs_server_manager.hpp
│ │ │ │ │ ├── scs_shell.hpp
│ │ │ │ │ ├── scs_shell_server.hpp
│ │ │ │ │ └── scs_tenv.hpp
│ │ │ │ ├── scs.hpp
│ │ │ │ ├── settings/
│ │ │ │ │ ├── factory/
│ │ │ │ │ │ ├── settings_configuration_id.hpp
│ │ │ │ │ │ ├── settings_device_certificate.hpp
│ │ │ │ │ │ └── settings_serial_number.hpp
│ │ │ │ │ ├── settings_fwdbg_api.hpp
│ │ │ │ │ ├── settings_fwdbg_types.hpp
│ │ │ │ │ ├── settings_types.hpp
│ │ │ │ │ └── system/
│ │ │ │ │ ├── settings_error_report.hpp
│ │ │ │ │ ├── settings_firmware_version.hpp
│ │ │ │ │ ├── settings_platform_region.hpp
│ │ │ │ │ ├── settings_product_model.hpp
│ │ │ │ │ ├── settings_region.hpp
│ │ │ │ │ └── settings_serial_number.hpp
│ │ │ │ ├── settings.hpp
│ │ │ │ ├── sf/
│ │ │ │ │ ├── cmif/
│ │ │ │ │ │ ├── sf_cmif_domain_api.hpp
│ │ │ │ │ │ ├── sf_cmif_domain_manager.hpp
│ │ │ │ │ │ ├── sf_cmif_domain_service_object.hpp
│ │ │ │ │ │ ├── sf_cmif_inline_context.hpp
│ │ │ │ │ │ ├── sf_cmif_pointer_and_size.hpp
│ │ │ │ │ │ ├── sf_cmif_server_message_processor.hpp
│ │ │ │ │ │ ├── sf_cmif_service_dispatch.hpp
│ │ │ │ │ │ └── sf_cmif_service_object_holder.hpp
│ │ │ │ │ ├── hipc/
│ │ │ │ │ │ ├── sf_hipc_api.hpp
│ │ │ │ │ │ ├── sf_hipc_server_domain_session_manager.hpp
│ │ │ │ │ │ ├── sf_hipc_server_manager.hpp
│ │ │ │ │ │ └── sf_hipc_server_session_manager.hpp
│ │ │ │ │ ├── impl/
│ │ │ │ │ │ ├── sf_impl_autogen_impl_macros.hpp
│ │ │ │ │ │ ├── sf_impl_autogen_interface_macros.hpp
│ │ │ │ │ │ ├── sf_impl_command_serialization.hpp
│ │ │ │ │ │ ├── sf_impl_template_base.hpp
│ │ │ │ │ │ └── sf_service_object_impl.hpp
│ │ │ │ │ ├── sf_allocation_policies.hpp
│ │ │ │ │ ├── sf_buffer_tags.hpp
│ │ │ │ │ ├── sf_buffers.hpp
│ │ │ │ │ ├── sf_common.hpp
│ │ │ │ │ ├── sf_default_allocation_policy.hpp
│ │ │ │ │ ├── sf_exp_heap_allocator.hpp
│ │ │ │ │ ├── sf_fs_inline_context.hpp
│ │ │ │ │ ├── sf_lmem_utility.hpp
│ │ │ │ │ ├── sf_mem_utility.hpp
│ │ │ │ │ ├── sf_memory_resource.hpp
│ │ │ │ │ ├── sf_mitm_config.hpp
│ │ │ │ │ ├── sf_mitm_dispatch.h
│ │ │ │ │ ├── sf_native_handle.hpp
│ │ │ │ │ ├── sf_object_factory.hpp
│ │ │ │ │ ├── sf_object_impl_factory.hpp
│ │ │ │ │ ├── sf_out.hpp
│ │ │ │ │ ├── sf_service_object.hpp
│ │ │ │ │ ├── sf_shared_object.hpp
│ │ │ │ │ ├── sf_standard_allocation_policy.hpp
│ │ │ │ │ ├── sf_std_allocation_policy.hpp
│ │ │ │ │ └── sf_types.hpp
│ │ │ │ ├── sf.hpp
│ │ │ │ ├── sm/
│ │ │ │ │ ├── impl/
│ │ │ │ │ │ ├── sm_manager_interface.hpp
│ │ │ │ │ │ └── sm_user_interface.hpp
│ │ │ │ │ ├── sm_api.hpp
│ │ │ │ │ ├── sm_manager_api.hpp
│ │ │ │ │ ├── sm_mitm_api.hpp
│ │ │ │ │ └── sm_types.hpp
│ │ │ │ ├── sm.hpp
│ │ │ │ ├── socket/
│ │ │ │ │ ├── impl/
│ │ │ │ │ │ └── socket_platform_types_translation.hpp
│ │ │ │ │ ├── socket_api.hpp
│ │ │ │ │ ├── socket_config.hpp
│ │ │ │ │ ├── socket_constants.hpp
│ │ │ │ │ ├── socket_errno.hpp
│ │ │ │ │ ├── socket_options.hpp
│ │ │ │ │ ├── socket_system_config.hpp
│ │ │ │ │ └── socket_types.hpp
│ │ │ │ ├── socket.hpp
│ │ │ │ ├── spl/
│ │ │ │ │ ├── impl/
│ │ │ │ │ │ ├── spl_api_impl.hpp
│ │ │ │ │ │ ├── spl_crypto_interface.hpp
│ │ │ │ │ │ ├── spl_deprecated_general_interface.hpp
│ │ │ │ │ │ ├── spl_device_unique_data_interface.hpp
│ │ │ │ │ │ ├── spl_es_interface.hpp
│ │ │ │ │ │ ├── spl_fs_interface.hpp
│ │ │ │ │ │ ├── spl_general_interface.hpp
│ │ │ │ │ │ ├── spl_manu_interface.hpp
│ │ │ │ │ │ ├── spl_random_interface.hpp
│ │ │ │ │ │ └── spl_ssl_interface.hpp
│ │ │ │ │ ├── smc/
│ │ │ │ │ │ └── spl_secure_monitor_api.hpp
│ │ │ │ │ ├── spl_api.hpp
│ │ │ │ │ └── spl_types.hpp
│ │ │ │ ├── spl.hpp
│ │ │ │ ├── sprofile/
│ │ │ │ │ ├── sprofile_types.hpp
│ │ │ │ │ └── srv/
│ │ │ │ │ └── sprofile_srv_api.hpp
│ │ │ │ ├── sprofile.hpp
│ │ │ │ ├── svc/
│ │ │ │ │ └── svc_stratosphere_shims.hpp
│ │ │ │ ├── time/
│ │ │ │ │ ├── impl/
│ │ │ │ │ │ └── util/
│ │ │ │ │ │ └── time_impl_util_api.hpp
│ │ │ │ │ ├── time_api.hpp
│ │ │ │ │ ├── time_calendar_time.hpp
│ │ │ │ │ ├── time_common.hpp
│ │ │ │ │ ├── time_posix_time.hpp
│ │ │ │ │ ├── time_standard_network_system_clock.hpp
│ │ │ │ │ ├── time_standard_steady_clock.hpp
│ │ │ │ │ ├── time_standard_user_system_clock.hpp
│ │ │ │ │ ├── time_steady_clock_time_point.hpp
│ │ │ │ │ ├── time_system_clock_common.hpp
│ │ │ │ │ └── time_timezone_api.hpp
│ │ │ │ ├── time.hpp
│ │ │ │ ├── tipc/
│ │ │ │ │ ├── impl/
│ │ │ │ │ │ ├── tipc_autogen_interface_macros.hpp
│ │ │ │ │ │ ├── tipc_impl_command_serialization.hpp
│ │ │ │ │ │ ├── tipc_impl_message_api.hpp
│ │ │ │ │ │ ├── tipc_impl_message_api.os.horizon.hpp
│ │ │ │ │ │ ├── tipc_impl_message_api.os.linux.hpp
│ │ │ │ │ │ ├── tipc_impl_message_api.os.macos.hpp
│ │ │ │ │ │ ├── tipc_impl_message_api.os.windows.hpp
│ │ │ │ │ │ └── tipc_impl_template_base.hpp
│ │ │ │ │ ├── tipc_allocators.hpp
│ │ │ │ │ ├── tipc_buffers.hpp
│ │ │ │ │ ├── tipc_common.hpp
│ │ │ │ │ ├── tipc_deferral_manager.hpp
│ │ │ │ │ ├── tipc_handles.hpp
│ │ │ │ │ ├── tipc_message_types.hpp
│ │ │ │ │ ├── tipc_object_holder.hpp
│ │ │ │ │ ├── tipc_object_manager.hpp
│ │ │ │ │ ├── tipc_out.hpp
│ │ │ │ │ ├── tipc_pointer_and_size.hpp
│ │ │ │ │ ├── tipc_server_manager.hpp
│ │ │ │ │ ├── tipc_service_object.hpp
│ │ │ │ │ └── tipc_service_object_base.hpp
│ │ │ │ ├── tipc.hpp
│ │ │ │ ├── tma/
│ │ │ │ │ ├── tma_i_directory_accessor.hpp
│ │ │ │ │ ├── tma_i_file_accessor.hpp
│ │ │ │ │ ├── tma_i_file_manager.hpp
│ │ │ │ │ ├── tma_i_htc_manager.hpp
│ │ │ │ │ ├── tma_i_htcs_manager.hpp
│ │ │ │ │ ├── tma_i_socket.hpp
│ │ │ │ │ └── tma_path.hpp
│ │ │ │ ├── tma.hpp
│ │ │ │ ├── updater/
│ │ │ │ │ ├── updater_api.hpp
│ │ │ │ │ └── updater_types.hpp
│ │ │ │ ├── updater.hpp
│ │ │ │ ├── usb/
│ │ │ │ │ ├── ds/
│ │ │ │ │ │ ├── usb_i_ds_endpoint.hpp
│ │ │ │ │ │ ├── usb_i_ds_interface.hpp
│ │ │ │ │ │ └── usb_i_ds_service.hpp
│ │ │ │ │ ├── usb_device.hpp
│ │ │ │ │ ├── usb_device_types.hpp
│ │ │ │ │ ├── usb_limits.hpp
│ │ │ │ │ └── usb_types.hpp
│ │ │ │ ├── usb.hpp
│ │ │ │ ├── util/
│ │ │ │ │ ├── util_compression.hpp
│ │ │ │ │ ├── util_ini.hpp
│ │ │ │ │ ├── util_lock_free_atomic_type.hpp
│ │ │ │ │ ├── util_singleton_traits.hpp
│ │ │ │ │ └── util_uuid_api.hpp
│ │ │ │ ├── util.hpp
│ │ │ │ ├── vi/
│ │ │ │ │ └── vi_layer_stack.hpp
│ │ │ │ ├── vi.hpp
│ │ │ │ ├── wec/
│ │ │ │ │ ├── wec_api.hpp
│ │ │ │ │ ├── wec_types.hpp
│ │ │ │ │ ├── wec_wake_event.board.nintendo_nx.hpp
│ │ │ │ │ └── wec_wake_event.generic.hpp
│ │ │ │ ├── wec.hpp
│ │ │ │ └── windows.hpp
│ │ │ └── stratosphere.hpp
│ │ ├── libstratosphere.mk
│ │ ├── source/
│ │ │ ├── ams/
│ │ │ │ ├── ams_bpc.os.horizon.c
│ │ │ │ ├── ams_bpc.os.horizon.h
│ │ │ │ ├── ams_emummc_api.cpp
│ │ │ │ ├── ams_environment.os.horizon.cpp
│ │ │ │ ├── ams_environment_weak.os.horizon.cpp
│ │ │ │ ├── ams_environment_weak.os.linux.cpp
│ │ │ │ ├── ams_environment_weak.os.macos.cpp
│ │ │ │ ├── ams_environment_weak.os.windows.cpp
│ │ │ │ └── ams_exosphere_api.cpp
│ │ │ ├── boot2/
│ │ │ │ └── boot2_api.board.nintendo_nx.cpp
│ │ │ ├── cal/
│ │ │ │ ├── cal_battery_api.cpp
│ │ │ │ ├── cal_crc_utils.cpp
│ │ │ │ ├── cal_crc_utils.hpp
│ │ │ │ ├── cal_fs_utils.cpp
│ │ │ │ └── cal_fs_utils.hpp
│ │ │ ├── capsrv/
│ │ │ │ ├── capsrv_screen_shot_control_api.cpp
│ │ │ │ └── server/
│ │ │ │ ├── capsrv_server_decoder_api.cpp
│ │ │ │ ├── decodersrv/
│ │ │ │ │ ├── decodersrv_decoder_control_server_manager.cpp
│ │ │ │ │ ├── decodersrv_decoder_control_server_manager.hpp
│ │ │ │ │ ├── decodersrv_decoder_control_service.cpp
│ │ │ │ │ ├── decodersrv_decoder_control_service.hpp
│ │ │ │ │ ├── decodersrv_decoder_server_object.cpp
│ │ │ │ │ ├── decodersrv_decoder_server_object.hpp
│ │ │ │ │ └── decodersrv_decoder_work_memory.hpp
│ │ │ │ └── jpeg/
│ │ │ │ ├── capsrv_server_jpeg_error_handler.hpp
│ │ │ │ ├── capsrv_server_jpeg_library_types.hpp
│ │ │ │ ├── decodersrv_software_jpeg_decoder.cpp
│ │ │ │ ├── decodersrv_software_jpeg_decoder.hpp
│ │ │ │ ├── decodersrv_software_jpeg_shrinker.cpp
│ │ │ │ └── decodersrv_software_jpeg_shrinker.hpp
│ │ │ ├── cfg/
│ │ │ │ ├── cfg_flags.board.nintendo_nx.inc
│ │ │ │ ├── cfg_flags.cpp
│ │ │ │ ├── cfg_flags.generic.inc
│ │ │ │ ├── cfg_override.board.nintendo_nx.inc
│ │ │ │ ├── cfg_override.cpp
│ │ │ │ ├── cfg_override.generic.inc
│ │ │ │ ├── cfg_sd_card.board.nintendo_nx.inc
│ │ │ │ ├── cfg_sd_card.cpp
│ │ │ │ └── cfg_sd_card.generic.inc
│ │ │ ├── crypto/
│ │ │ │ ├── crypto_csrng.os.generic.cpp
│ │ │ │ ├── crypto_csrng.os.horizon.cpp
│ │ │ │ └── crypto_csrng.os.windows.cpp
│ │ │ ├── cs/
│ │ │ │ ├── cs_audio_server.cpp
│ │ │ │ ├── cs_command_impl.hpp
│ │ │ │ ├── cs_command_impl.inc
│ │ │ │ ├── cs_command_processor.cpp
│ │ │ │ ├── cs_hid_server.cpp
│ │ │ │ ├── cs_remote_video_server.cpp
│ │ │ │ └── cs_target_io_server.cpp
│ │ │ ├── dd/
│ │ │ │ ├── dd_device_address_space.cpp
│ │ │ │ └── impl/
│ │ │ │ ├── dd_device_address_space_impl.generic.hpp
│ │ │ │ ├── dd_device_address_space_impl.hpp
│ │ │ │ ├── dd_device_address_space_impl.os.horizon.cpp
│ │ │ │ └── dd_device_address_space_impl.os.horizon.hpp
│ │ │ ├── ddsf/
│ │ │ │ ├── ddsf_device_code_entry_manager.cpp
│ │ │ │ ├── ddsf_event_handler.cpp
│ │ │ │ ├── ddsf_memory_api.cpp
│ │ │ │ └── ddsf_session_api.cpp
│ │ │ ├── diag/
│ │ │ │ ├── diag_abort_observer.cpp
│ │ │ │ ├── diag_assertion_impl.cpp
│ │ │ │ ├── diag_assertion_impl_for_nx_asm.board.nintendo_nx.s
│ │ │ │ ├── diag_backtrace.cpp
│ │ │ │ ├── diag_log.cpp
│ │ │ │ ├── diag_log_impl.hpp
│ │ │ │ ├── diag_log_observer.cpp
│ │ │ │ ├── diag_symbol.cpp
│ │ │ │ └── impl/
│ │ │ │ ├── diag_abort_observer_manager.cpp
│ │ │ │ ├── diag_abort_observer_manager.hpp
│ │ │ │ ├── diag_backtrace_impl.os.generic.cpp
│ │ │ │ ├── diag_backtrace_impl.os.horizon.cpp
│ │ │ │ ├── diag_default_abort_observer.cpp
│ │ │ │ ├── diag_dump_stack_trace.hpp
│ │ │ │ ├── diag_dump_stack_trace.os.generic.cpp
│ │ │ │ ├── diag_dump_stack_trace.os.horizon.cpp
│ │ │ │ ├── diag_get_all_backtrace.cpp
│ │ │ │ ├── diag_get_all_backtrace.hpp
│ │ │ │ ├── diag_invoke_abort.hpp
│ │ │ │ ├── diag_invoke_abort.os.generic.cpp
│ │ │ │ ├── diag_invoke_abort.os.horizon.cpp
│ │ │ │ ├── diag_module_impl.os.horizon.cpp
│ │ │ │ ├── diag_observer_manager.hpp
│ │ │ │ ├── diag_print_debug_string.hpp
│ │ │ │ ├── diag_print_debug_string.os.horizon.cpp
│ │ │ │ ├── diag_print_debug_string.os.linux.cpp
│ │ │ │ ├── diag_print_debug_string.os.macos.cpp
│ │ │ │ ├── diag_print_debug_string.os.windows.cpp
│ │ │ │ ├── diag_process.os.horizon.cpp
│ │ │ │ ├── diag_symbol_impl.hpp
│ │ │ │ ├── diag_symbol_impl.os.generic.cpp
│ │ │ │ ├── diag_symbol_impl.os.horizon.cpp
│ │ │ │ ├── diag_symbol_impl.os.macos.cpp
│ │ │ │ ├── diag_symbol_impl.os.windows.cpp
│ │ │ │ └── diag_utf8_util.cpp
│ │ │ ├── dmnt/
│ │ │ │ ├── dmntcht.h
│ │ │ │ └── dmntcht.os.horizon.c
│ │ │ ├── erpt/
│ │ │ │ └── srv/
│ │ │ │ ├── erpt_srv_allocator.hpp
│ │ │ │ ├── erpt_srv_attachment.cpp
│ │ │ │ ├── erpt_srv_attachment.hpp
│ │ │ │ ├── erpt_srv_attachment_impl.cpp
│ │ │ │ ├── erpt_srv_attachment_impl.hpp
│ │ │ │ ├── erpt_srv_cipher.cpp
│ │ │ │ ├── erpt_srv_cipher.hpp
│ │ │ │ ├── erpt_srv_context.cpp
│ │ │ │ ├── erpt_srv_context.hpp
│ │ │ │ ├── erpt_srv_context_impl.cpp
│ │ │ │ ├── erpt_srv_context_impl.hpp
│ │ │ │ ├── erpt_srv_context_record.cpp
│ │ │ │ ├── erpt_srv_context_record.hpp
│ │ │ │ ├── erpt_srv_forced_shutdown.cpp
│ │ │ │ ├── erpt_srv_forced_shutdown.hpp
│ │ │ │ ├── erpt_srv_formatter.hpp
│ │ │ │ ├── erpt_srv_fs_info.hpp
│ │ │ │ ├── erpt_srv_fs_info.os.horizon.cpp
│ │ │ │ ├── erpt_srv_journal.cpp
│ │ │ │ ├── erpt_srv_journal.hpp
│ │ │ │ ├── erpt_srv_journal_for_attachments.cpp
│ │ │ │ ├── erpt_srv_journal_for_meta.cpp
│ │ │ │ ├── erpt_srv_journal_for_reports.cpp
│ │ │ │ ├── erpt_srv_journal_record.hpp
│ │ │ │ ├── erpt_srv_keys.cpp
│ │ │ │ ├── erpt_srv_keys.hpp
│ │ │ │ ├── erpt_srv_main.cpp
│ │ │ │ ├── erpt_srv_manager_impl.cpp
│ │ │ │ ├── erpt_srv_manager_impl.hpp
│ │ │ │ ├── erpt_srv_ref_count.hpp
│ │ │ │ ├── erpt_srv_report.cpp
│ │ │ │ ├── erpt_srv_report.hpp
│ │ │ │ ├── erpt_srv_report_impl.cpp
│ │ │ │ ├── erpt_srv_report_impl.hpp
│ │ │ │ ├── erpt_srv_reporter.cpp
│ │ │ │ ├── erpt_srv_reporter.hpp
│ │ │ │ ├── erpt_srv_service.cpp
│ │ │ │ ├── erpt_srv_service.hpp
│ │ │ │ ├── erpt_srv_session_impl.cpp
│ │ │ │ ├── erpt_srv_session_impl.hpp
│ │ │ │ ├── erpt_srv_stream.cpp
│ │ │ │ └── erpt_srv_stream.hpp
│ │ │ ├── err/
│ │ │ │ ├── err_api.cpp
│ │ │ │ └── impl/
│ │ │ │ ├── err_string_util.cpp
│ │ │ │ └── err_string_util.hpp
│ │ │ ├── fs/
│ │ │ │ ├── common/
│ │ │ │ │ ├── fs_dbm_hierarchical_rom_file_table.cpp
│ │ │ │ │ ├── fs_dbm_rom_path_tool.cpp
│ │ │ │ │ └── fs_file_storage.cpp
│ │ │ │ ├── fs_access_log.cpp
│ │ │ │ ├── fs_api.cpp
│ │ │ │ ├── fs_application.cpp
│ │ │ │ ├── fs_bis.cpp
│ │ │ │ ├── fs_code.cpp
│ │ │ │ ├── fs_content.cpp
│ │ │ │ ├── fs_content_storage.cpp
│ │ │ │ ├── fs_context.cpp
│ │ │ │ ├── fs_data.cpp
│ │ │ │ ├── fs_device_save_data.cpp
│ │ │ │ ├── fs_error_info.cpp
│ │ │ │ ├── fs_file_path_hash.hpp
│ │ │ │ ├── fs_filesystem_utils.cpp
│ │ │ │ ├── fs_game_card.cpp
│ │ │ │ ├── fs_host.cpp
│ │ │ │ ├── fs_image_directory.cpp
│ │ │ │ ├── fs_memory_management.cpp
│ │ │ │ ├── fs_memory_report_info.cpp
│ │ │ │ ├── fs_mmc.cpp
│ │ │ │ ├── fs_priority.cpp
│ │ │ │ ├── fs_program_id.cpp
│ │ │ │ ├── fs_remote_file_system_proxy.cpp
│ │ │ │ ├── fs_remote_file_system_proxy.hpp
│ │ │ │ ├── fs_remote_file_system_proxy_for_loader.hpp
│ │ │ │ ├── fs_result_utils.cpp
│ │ │ │ ├── fs_rights_id.cpp
│ │ │ │ ├── fs_romfs_filesystem.cpp
│ │ │ │ ├── fs_save_data_management.cpp
│ │ │ │ ├── fs_scoped_setter.hpp
│ │ │ │ ├── fs_sd_card.cpp
│ │ │ │ ├── fs_signed_system_partition.cpp
│ │ │ │ ├── fs_system_data.cpp
│ │ │ │ ├── fs_system_save_data.cpp
│ │ │ │ ├── fsa/
│ │ │ │ │ ├── fs_directory_accessor.cpp
│ │ │ │ │ ├── fs_directory_accessor.hpp
│ │ │ │ │ ├── fs_file_accessor.cpp
│ │ │ │ │ ├── fs_file_accessor.hpp
│ │ │ │ │ ├── fs_filesystem_accessor.cpp
│ │ │ │ │ ├── fs_filesystem_accessor.hpp
│ │ │ │ │ ├── fs_mount_name.hpp
│ │ │ │ │ ├── fs_mount_table.cpp
│ │ │ │ │ ├── fs_mount_table.hpp
│ │ │ │ │ ├── fs_mount_utils.cpp
│ │ │ │ │ ├── fs_mount_utils.hpp
│ │ │ │ │ ├── fs_registrar.cpp
│ │ │ │ │ ├── fs_user_directory.cpp
│ │ │ │ │ ├── fs_user_file.cpp
│ │ │ │ │ ├── fs_user_filesystem.cpp
│ │ │ │ │ ├── fs_user_filesystem_for_debug.cpp
│ │ │ │ │ ├── fs_user_mount_table.cpp
│ │ │ │ │ └── fs_user_mount_table.hpp
│ │ │ │ ├── impl/
│ │ │ │ │ ├── fs_event_notifier_service_object_adapter.hpp
│ │ │ │ │ ├── fs_file_system_proxy_service_object.hpp
│ │ │ │ │ ├── fs_file_system_service_object_adapter.hpp
│ │ │ │ │ ├── fs_hash_generator_factory_selector.cpp
│ │ │ │ │ ├── fs_id_string_impl.os.generic.cpp
│ │ │ │ │ ├── fs_library.cpp
│ │ │ │ │ ├── fs_library.hpp
│ │ │ │ │ ├── fs_remote_device_operator.hpp
│ │ │ │ │ └── fs_remote_event_notifier.hpp
│ │ │ │ └── tests/
│ │ │ │ ├── fs_path_formatter_tests.cpp
│ │ │ │ ├── fs_path_normalizer_tests.cpp
│ │ │ │ └── fs_path_utility_tests.cpp
│ │ │ ├── fssrv/
│ │ │ │ ├── fscreator/
│ │ │ │ │ ├── fssrv_local_file_system_creator.cpp
│ │ │ │ │ ├── fssrv_partition_file_system_creator.cpp
│ │ │ │ │ ├── fssrv_rom_file_system_creator.cpp
│ │ │ │ │ ├── fssrv_storage_on_nca_creator.cpp
│ │ │ │ │ └── fssrv_subdirectory_file_system_creator.cpp
│ │ │ │ ├── fssrv_access_control.cpp
│ │ │ │ ├── fssrv_deferred_process_manager.hpp
│ │ │ │ ├── fssrv_file_system_proxy_api.cpp
│ │ │ │ ├── fssrv_file_system_proxy_impl.cpp
│ │ │ │ ├── fssrv_filesystem_interface_adapter.cpp
│ │ │ │ ├── fssrv_memory_resource_from_exp_heap.cpp
│ │ │ │ ├── fssrv_memory_resource_from_standard_allocator.cpp
│ │ │ │ ├── fssrv_nca_crypto_configuration.cpp
│ │ │ │ ├── fssrv_program_registry_impl.cpp
│ │ │ │ ├── fssrv_program_registry_service.cpp
│ │ │ │ ├── fssrv_retry_utility.hpp
│ │ │ │ ├── fssrv_storage_interface_adapter.cpp
│ │ │ │ └── impl/
│ │ │ │ ├── fssrv_allocator_for_service_framework.hpp
│ │ │ │ ├── fssrv_file_system_proxy_service_object.cpp
│ │ │ │ ├── fssrv_program_info.cpp
│ │ │ │ ├── fssrv_program_info.hpp
│ │ │ │ ├── fssrv_program_registry_manager.cpp
│ │ │ │ ├── fssrv_program_registry_manager.hpp
│ │ │ │ ├── fssrv_utility.cpp
│ │ │ │ └── fssrv_utility.hpp
│ │ │ ├── fssystem/
│ │ │ │ ├── buffers/
│ │ │ │ │ ├── fssystem_buffer_manager_utils.cpp
│ │ │ │ │ ├── fssystem_file_system_buddy_heap.cpp
│ │ │ │ │ └── fssystem_file_system_buffer_manager.cpp
│ │ │ │ ├── fssystem_aes_ctr_counter_extended_storage.cpp
│ │ │ │ ├── fssystem_aes_ctr_storage.cpp
│ │ │ │ ├── fssystem_aes_ctr_storage_external.cpp
│ │ │ │ ├── fssystem_aes_xts_storage.cpp
│ │ │ │ ├── fssystem_aes_xts_storage_external.cpp
│ │ │ │ ├── fssystem_alignment_matching_storage_impl.cpp
│ │ │ │ ├── fssystem_allocator_utility.cpp
│ │ │ │ ├── fssystem_block_cache_buffered_storage.cpp
│ │ │ │ ├── fssystem_bucket_tree.cpp
│ │ │ │ ├── fssystem_buffered_storage.cpp
│ │ │ │ ├── fssystem_compression_configuration.cpp
│ │ │ │ ├── fssystem_crypto_configuration.cpp
│ │ │ │ ├── fssystem_directory_savedata_filesystem.cpp
│ │ │ │ ├── fssystem_external_code.cpp
│ │ │ │ ├── fssystem_file_system_proxy_api.cpp
│ │ │ │ ├── fssystem_hierarchical_integrity_verification_storage.cpp
│ │ │ │ ├── fssystem_hierarchical_sha256_storage.cpp
│ │ │ │ ├── fssystem_hierarchical_sha256_storage.hpp
│ │ │ │ ├── fssystem_indirect_storage.cpp
│ │ │ │ ├── fssystem_integrity_romfs_storage.cpp
│ │ │ │ ├── fssystem_integrity_verification_storage.cpp
│ │ │ │ ├── fssystem_key_slot_cache.hpp
│ │ │ │ ├── fssystem_local_file_system.cpp
│ │ │ │ ├── fssystem_lru_list_cache.hpp
│ │ │ │ ├── fssystem_memory_resource_buffer_hold_storage.hpp
│ │ │ │ ├── fssystem_nca_file_system_driver.cpp
│ │ │ │ ├── fssystem_nca_header.cpp
│ │ │ │ ├── fssystem_nca_reader.cpp
│ │ │ │ ├── fssystem_partition_file_system.cpp
│ │ │ │ ├── fssystem_partition_file_system_meta.cpp
│ │ │ │ ├── fssystem_pooled_buffer.cpp
│ │ │ │ ├── fssystem_read_only_block_cache_storage.hpp
│ │ │ │ ├── fssystem_romfs_filesystem.cpp
│ │ │ │ ├── fssystem_service_context.cpp
│ │ │ │ ├── fssystem_sparse_storage.cpp
│ │ │ │ ├── fssystem_speed_emulation_configuration.cpp
│ │ │ │ ├── fssystem_thread_priority_changer.cpp
│ │ │ │ └── fssystem_utility.cpp
│ │ │ ├── gc/
│ │ │ │ └── impl/
│ │ │ │ ├── gc_embedded_data_holder.cpp
│ │ │ │ └── gc_gc_crypto.cpp
│ │ │ ├── gpio/
│ │ │ │ ├── driver/
│ │ │ │ │ ├── board/
│ │ │ │ │ │ └── nintendo/
│ │ │ │ │ │ └── nx/
│ │ │ │ │ │ ├── gpio_driver_api.cpp
│ │ │ │ │ │ └── impl/
│ │ │ │ │ │ ├── gpio_driver_impl.cpp
│ │ │ │ │ │ ├── gpio_driver_impl.hpp
│ │ │ │ │ │ ├── gpio_initial_config.cpp
│ │ │ │ │ │ ├── gpio_initial_config.hpp
│ │ │ │ │ │ ├── gpio_initial_config_aula.inc
│ │ │ │ │ │ ├── gpio_initial_config_calcio.inc
│ │ │ │ │ │ ├── gpio_initial_config_hoag.inc
│ │ │ │ │ │ ├── gpio_initial_config_icosa.inc
│ │ │ │ │ │ ├── gpio_initial_config_iowa.inc
│ │ │ │ │ │ ├── gpio_initial_wake_pin_config_aula.inc
│ │ │ │ │ │ ├── gpio_initial_wake_pin_config_calcio.inc
│ │ │ │ │ │ ├── gpio_initial_wake_pin_config_hoag.inc
│ │ │ │ │ │ ├── gpio_initial_wake_pin_config_icosa.inc
│ │ │ │ │ │ ├── gpio_initial_wake_pin_config_iowa.inc
│ │ │ │ │ │ ├── gpio_internal_pad_map_combination.inc
│ │ │ │ │ │ ├── gpio_register_accessor.hpp
│ │ │ │ │ │ ├── gpio_suspend_handler.cpp
│ │ │ │ │ │ ├── gpio_suspend_handler.hpp
│ │ │ │ │ │ ├── gpio_tegra_pad.hpp
│ │ │ │ │ │ └── gpio_wake_pin_config.hpp
│ │ │ │ │ ├── gpio_driver_client_api.cpp
│ │ │ │ │ ├── gpio_driver_service_api.cpp
│ │ │ │ │ ├── gpio_pad.cpp
│ │ │ │ │ ├── gpio_pad_api.cpp
│ │ │ │ │ └── impl/
│ │ │ │ │ ├── gpio_driver_core.cpp
│ │ │ │ │ ├── gpio_driver_core.hpp
│ │ │ │ │ └── gpio_pad_session_impl.cpp
│ │ │ │ ├── gpio_client_api.cpp
│ │ │ │ ├── gpio_remote_manager_impl.cpp
│ │ │ │ ├── gpio_remote_manager_impl.hpp
│ │ │ │ ├── gpio_remote_pad_session_impl.hpp
│ │ │ │ └── server/
│ │ │ │ ├── gpio_server_api.cpp
│ │ │ │ ├── gpio_server_manager_impl.cpp
│ │ │ │ ├── gpio_server_manager_impl.hpp
│ │ │ │ └── gpio_server_pad_session_impl.hpp
│ │ │ ├── hid/
│ │ │ │ └── hid_api.cpp
│ │ │ ├── hos/
│ │ │ │ ├── hos_stratosphere_api.cpp
│ │ │ │ ├── hos_version_api.cpp
│ │ │ │ ├── hos_version_api_private.cpp
│ │ │ │ └── hos_version_api_weak_for_unit_test.cpp
│ │ │ ├── htc/
│ │ │ │ ├── server/
│ │ │ │ │ ├── driver/
│ │ │ │ │ │ ├── htc_driver_manager.hpp
│ │ │ │ │ │ ├── htc_htclow_driver.cpp
│ │ │ │ │ │ ├── htc_htclow_driver.hpp
│ │ │ │ │ │ └── htc_i_driver.hpp
│ │ │ │ │ ├── htc_htc_service_object.cpp
│ │ │ │ │ ├── htc_htc_service_object.hpp
│ │ │ │ │ ├── htc_htcmisc_hipc_server.cpp
│ │ │ │ │ ├── htc_htcmisc_impl.cpp
│ │ │ │ │ ├── htc_htcmisc_impl.hpp
│ │ │ │ │ ├── htc_htcmisc_manager.cpp
│ │ │ │ │ ├── htc_htcmisc_manager.hpp
│ │ │ │ │ ├── htc_observer.cpp
│ │ │ │ │ ├── htc_observer.hpp
│ │ │ │ │ ├── htc_power_state_control.cpp
│ │ │ │ │ └── rpc/
│ │ │ │ │ ├── htc_htcmisc_rpc_server.cpp
│ │ │ │ │ ├── htc_htcmisc_rpc_server.hpp
│ │ │ │ │ ├── htc_htcmisc_rpc_tasks.cpp
│ │ │ │ │ ├── htc_htcmisc_rpc_tasks.hpp
│ │ │ │ │ ├── htc_rpc_client.cpp
│ │ │ │ │ ├── htc_rpc_client.hpp
│ │ │ │ │ ├── htc_rpc_task_id_free_list.hpp
│ │ │ │ │ ├── htc_rpc_task_queue.hpp
│ │ │ │ │ ├── htc_rpc_task_table.hpp
│ │ │ │ │ └── htc_rpc_tasks.hpp
│ │ │ │ └── tenv/
│ │ │ │ ├── htc_tenv.cpp
│ │ │ │ ├── htc_tenv_service.cpp
│ │ │ │ ├── htc_tenv_service.hpp
│ │ │ │ ├── htc_tenv_service_manager.cpp
│ │ │ │ └── impl/
│ │ │ │ ├── htc_tenv_allocator.cpp
│ │ │ │ ├── htc_tenv_allocator.hpp
│ │ │ │ ├── htc_tenv_definition_file_info.hpp
│ │ │ │ ├── htc_tenv_impl.cpp
│ │ │ │ └── htc_tenv_impl.hpp
│ │ │ ├── htcfs/
│ │ │ │ ├── htcfs_cache_manager.hpp
│ │ │ │ ├── htcfs_client.cpp
│ │ │ │ ├── htcfs_client.hpp
│ │ │ │ ├── htcfs_client_impl.cpp
│ │ │ │ ├── htcfs_client_impl.hpp
│ │ │ │ ├── htcfs_directory_service_object.cpp
│ │ │ │ ├── htcfs_directory_service_object.hpp
│ │ │ │ ├── htcfs_file_service_object.cpp
│ │ │ │ ├── htcfs_file_service_object.hpp
│ │ │ │ ├── htcfs_file_system_service_object.cpp
│ │ │ │ ├── htcfs_file_system_service_object.hpp
│ │ │ │ ├── htcfs_header_factory.hpp
│ │ │ │ ├── htcfs_hipc_server.cpp
│ │ │ │ ├── htcfs_result.hpp
│ │ │ │ ├── htcfs_result_utils.hpp
│ │ │ │ ├── htcfs_working_directory.cpp
│ │ │ │ └── htcfs_working_directory.hpp
│ │ │ ├── htclow/
│ │ │ │ ├── ctrl/
│ │ │ │ │ ├── htclow_ctrl_packet.hpp
│ │ │ │ │ ├── htclow_ctrl_packet_factory.cpp
│ │ │ │ │ ├── htclow_ctrl_packet_factory.hpp
│ │ │ │ │ ├── htclow_ctrl_send_buffer.cpp
│ │ │ │ │ ├── htclow_ctrl_send_buffer.hpp
│ │ │ │ │ ├── htclow_ctrl_service.cpp
│ │ │ │ │ ├── htclow_ctrl_service.hpp
│ │ │ │ │ ├── htclow_ctrl_service_channels.hpp
│ │ │ │ │ ├── htclow_ctrl_settings_holder.cpp
│ │ │ │ │ ├── htclow_ctrl_settings_holder.hpp
│ │ │ │ │ ├── htclow_ctrl_state.hpp
│ │ │ │ │ ├── htclow_ctrl_state_machine.cpp
│ │ │ │ │ ├── htclow_ctrl_state_machine.hpp
│ │ │ │ │ ├── htclow_json.cpp
│ │ │ │ │ ├── htclow_json.hpp
│ │ │ │ │ ├── htclow_service_channel_parser.cpp
│ │ │ │ │ └── htclow_service_channel_parser.hpp
│ │ │ │ ├── driver/
│ │ │ │ │ ├── htclow_driver_manager.cpp
│ │ │ │ │ ├── htclow_driver_manager.hpp
│ │ │ │ │ ├── htclow_driver_memory_management.cpp
│ │ │ │ │ ├── htclow_driver_memory_management.hpp
│ │ │ │ │ ├── htclow_i_driver.hpp
│ │ │ │ │ ├── htclow_socket_discovery_manager.cpp
│ │ │ │ │ ├── htclow_socket_discovery_manager.hpp
│ │ │ │ │ ├── htclow_socket_discovery_util.cpp
│ │ │ │ │ ├── htclow_socket_discovery_util.hpp
│ │ │ │ │ ├── htclow_socket_driver.cpp
│ │ │ │ │ ├── htclow_socket_driver.hpp
│ │ │ │ │ ├── htclow_usb_driver.cpp
│ │ │ │ │ ├── htclow_usb_driver.hpp
│ │ │ │ │ ├── htclow_usb_impl.cpp
│ │ │ │ │ └── htclow_usb_impl.hpp
│ │ │ │ ├── htclow_channel.cpp
│ │ │ │ ├── htclow_channel.hpp
│ │ │ │ ├── htclow_default_channel_config.hpp
│ │ │ │ ├── htclow_listener.cpp
│ │ │ │ ├── htclow_listener.hpp
│ │ │ │ ├── htclow_manager.cpp
│ │ │ │ ├── htclow_manager.hpp
│ │ │ │ ├── htclow_manager_holder.cpp
│ │ │ │ ├── htclow_manager_impl.cpp
│ │ │ │ ├── htclow_manager_impl.hpp
│ │ │ │ ├── htclow_packet.hpp
│ │ │ │ ├── htclow_packet_factory.cpp
│ │ │ │ ├── htclow_packet_factory.hpp
│ │ │ │ ├── htclow_worker.cpp
│ │ │ │ ├── htclow_worker.hpp
│ │ │ │ └── mux/
│ │ │ │ ├── htclow_mux.cpp
│ │ │ │ ├── htclow_mux.hpp
│ │ │ │ ├── htclow_mux_channel_impl.cpp
│ │ │ │ ├── htclow_mux_channel_impl.hpp
│ │ │ │ ├── htclow_mux_channel_impl_map.cpp
│ │ │ │ ├── htclow_mux_channel_impl_map.hpp
│ │ │ │ ├── htclow_mux_global_send_buffer.cpp
│ │ │ │ ├── htclow_mux_global_send_buffer.hpp
│ │ │ │ ├── htclow_mux_ring_buffer.cpp
│ │ │ │ ├── htclow_mux_ring_buffer.hpp
│ │ │ │ ├── htclow_mux_send_buffer.cpp
│ │ │ │ ├── htclow_mux_send_buffer.hpp
│ │ │ │ ├── htclow_mux_task_manager.cpp
│ │ │ │ └── htclow_mux_task_manager.hpp
│ │ │ ├── htcs/
│ │ │ │ ├── client/
│ │ │ │ │ ├── htcs_session.hpp
│ │ │ │ │ ├── htcs_session.os.horizon.cpp
│ │ │ │ │ ├── htcs_session.os.windows.cpp
│ │ │ │ │ ├── htcs_virtual_socket_collection.cpp
│ │ │ │ │ └── htcs_virtual_socket_collection.hpp
│ │ │ │ ├── htcs_socket.cpp
│ │ │ │ ├── impl/
│ │ │ │ │ ├── htcs_impl.cpp
│ │ │ │ │ ├── htcs_impl.hpp
│ │ │ │ │ ├── htcs_manager.cpp
│ │ │ │ │ ├── htcs_manager.hpp
│ │ │ │ │ ├── htcs_manager_holder.cpp
│ │ │ │ │ ├── htcs_manager_impl.cpp
│ │ │ │ │ ├── htcs_manager_impl.hpp
│ │ │ │ │ ├── htcs_monitor.cpp
│ │ │ │ │ ├── htcs_monitor.hpp
│ │ │ │ │ ├── htcs_service.cpp
│ │ │ │ │ ├── htcs_service.hpp
│ │ │ │ │ ├── htcs_util.cpp
│ │ │ │ │ ├── htcs_util.hpp
│ │ │ │ │ └── rpc/
│ │ │ │ │ ├── htcs_data_channel_manager.cpp
│ │ │ │ │ ├── htcs_data_channel_manager.hpp
│ │ │ │ │ ├── htcs_rpc_accept_task.cpp
│ │ │ │ │ ├── htcs_rpc_bind_task.cpp
│ │ │ │ │ ├── htcs_rpc_close_task.cpp
│ │ │ │ │ ├── htcs_rpc_connect_task.cpp
│ │ │ │ │ ├── htcs_rpc_fcntl_task.cpp
│ │ │ │ │ ├── htcs_rpc_listen_task.cpp
│ │ │ │ │ ├── htcs_rpc_receive_small_task.cpp
│ │ │ │ │ ├── htcs_rpc_receive_task.cpp
│ │ │ │ │ ├── htcs_rpc_select_task.cpp
│ │ │ │ │ ├── htcs_rpc_send_small_task.cpp
│ │ │ │ │ ├── htcs_rpc_send_task.cpp
│ │ │ │ │ ├── htcs_rpc_shutdown_task.cpp
│ │ │ │ │ ├── htcs_rpc_signaling_task.cpp
│ │ │ │ │ ├── htcs_rpc_socket_task.cpp
│ │ │ │ │ └── htcs_rpc_tasks.hpp
│ │ │ │ └── server/
│ │ │ │ ├── htcs_hipc_server.cpp
│ │ │ │ ├── htcs_manager_service_object.cpp
│ │ │ │ ├── htcs_manager_service_object.hpp
│ │ │ │ ├── htcs_manager_service_object_deprecated.cpp
│ │ │ │ ├── htcs_service_object_allocator.hpp
│ │ │ │ ├── htcs_socket_service_object.cpp
│ │ │ │ ├── htcs_socket_service_object.hpp
│ │ │ │ └── htcs_socket_service_object_deprecated.cpp
│ │ │ ├── i2c/
│ │ │ │ ├── driver/
│ │ │ │ │ ├── board/
│ │ │ │ │ │ └── nintendo/
│ │ │ │ │ │ └── nx/
│ │ │ │ │ │ ├── i2c_bus_device_map.inc
│ │ │ │ │ │ ├── i2c_driver_api.cpp
│ │ │ │ │ │ └── impl/
│ │ │ │ │ │ ├── i2c_bus_accessor.cpp
│ │ │ │ │ │ ├── i2c_bus_accessor.hpp
│ │ │ │ │ │ ├── i2c_bus_manager.hpp
│ │ │ │ │ │ ├── i2c_device_property_manager.hpp
│ │ │ │ │ │ ├── i2c_i2c_registers.hpp
│ │ │ │ │ │ └── i2c_i_allocator.hpp
│ │ │ │ │ ├── i2c_driver_bus_api.cpp
│ │ │ │ │ ├── i2c_driver_client_api.cpp
│ │ │ │ │ ├── i2c_driver_service_api.cpp
│ │ │ │ │ └── impl/
│ │ │ │ │ ├── i2c_driver_core.cpp
│ │ │ │ │ ├── i2c_driver_core.hpp
│ │ │ │ │ └── i2c_i2c_session_impl.cpp
│ │ │ │ ├── i2c_client_api.cpp
│ │ │ │ ├── i2c_command_list_formatter.cpp
│ │ │ │ ├── impl/
│ │ │ │ │ └── i2c_command_list_format.hpp
│ │ │ │ └── server/
│ │ │ │ ├── i2c_server_api.cpp
│ │ │ │ ├── i2c_server_manager_impl.cpp
│ │ │ │ ├── i2c_server_manager_impl.hpp
│ │ │ │ └── i2c_server_session_impl.hpp
│ │ │ ├── init/
│ │ │ │ ├── init_libnx_shim.os.horizon.cpp
│ │ │ │ ├── init_malloc.cpp
│ │ │ │ ├── init_operator_new.cpp
│ │ │ │ └── init_system_module.cpp
│ │ │ ├── kvdb/
│ │ │ │ ├── kvdb_archive.cpp
│ │ │ │ └── kvdb_file_key_value_store.cpp
│ │ │ ├── ldr/
│ │ │ │ ├── ldr_ams.os.horizon.c
│ │ │ │ ├── ldr_ams.os.horizon.h
│ │ │ │ ├── ldr_pm_api.os.horizon.cpp
│ │ │ │ └── ldr_shell_api.os.horizon.cpp
│ │ │ ├── lm/
│ │ │ │ ├── impl/
│ │ │ │ │ ├── lm_log_data_chunk.hpp
│ │ │ │ │ ├── lm_log_packet_header.hpp
│ │ │ │ │ ├── lm_log_packet_transmitter.hpp
│ │ │ │ │ ├── lm_log_packet_transmitter_base.cpp
│ │ │ │ │ └── lm_log_packet_transmitter_base.hpp
│ │ │ │ ├── lm_api.cpp
│ │ │ │ ├── lm_remote_log_service.cpp
│ │ │ │ ├── lm_remote_log_service.hpp
│ │ │ │ ├── lm_service_name.hpp
│ │ │ │ ├── sf/
│ │ │ │ │ ├── lm_i_log_getter.hpp
│ │ │ │ │ └── lm_i_log_service.hpp
│ │ │ │ └── srv/
│ │ │ │ ├── lm_custom_sink_buffer.cpp
│ │ │ │ ├── lm_custom_sink_buffer.hpp
│ │ │ │ ├── lm_event_log_transmitter.cpp
│ │ │ │ ├── lm_event_log_transmitter.hpp
│ │ │ │ ├── lm_flush_thread.cpp
│ │ │ │ ├── lm_ipc_server.cpp
│ │ │ │ ├── lm_log_buffer.cpp
│ │ │ │ ├── lm_log_buffer.hpp
│ │ │ │ ├── lm_log_getter.cpp
│ │ │ │ ├── lm_log_getter.hpp
│ │ │ │ ├── lm_log_getter_impl.cpp
│ │ │ │ ├── lm_log_getter_impl.hpp
│ │ │ │ ├── lm_log_packet_parser.cpp
│ │ │ │ ├── lm_log_packet_parser.hpp
│ │ │ │ ├── lm_log_server_proxy.cpp
│ │ │ │ ├── lm_log_server_proxy.hpp
│ │ │ │ ├── lm_log_service_impl.cpp
│ │ │ │ ├── lm_log_service_impl.hpp
│ │ │ │ ├── lm_logger_impl.cpp
│ │ │ │ ├── lm_logger_impl.hpp
│ │ │ │ ├── lm_sd_card_logger.cpp
│ │ │ │ ├── lm_sd_card_logger.hpp
│ │ │ │ ├── lm_time_util.cpp
│ │ │ │ └── lm_time_util.hpp
│ │ │ ├── lmem/
│ │ │ │ ├── impl/
│ │ │ │ │ ├── lmem_impl_common_heap.cpp
│ │ │ │ │ ├── lmem_impl_common_heap.hpp
│ │ │ │ │ ├── lmem_impl_exp_heap.cpp
│ │ │ │ │ ├── lmem_impl_exp_heap.hpp
│ │ │ │ │ ├── lmem_impl_unit_heap.cpp
│ │ │ │ │ └── lmem_impl_unit_heap.hpp
│ │ │ │ ├── lmem_common.cpp
│ │ │ │ ├── lmem_exp_heap.cpp
│ │ │ │ └── lmem_unit_heap.cpp
│ │ │ ├── lr/
│ │ │ │ ├── lr_add_on_content_location_resolver_impl.cpp
│ │ │ │ ├── lr_add_on_content_location_resolver_impl.hpp
│ │ │ │ ├── lr_api.cpp
│ │ │ │ ├── lr_content_location_resolver_impl.cpp
│ │ │ │ ├── lr_content_location_resolver_impl.hpp
│ │ │ │ ├── lr_location_redirector.cpp
│ │ │ │ ├── lr_location_redirector.hpp
│ │ │ │ ├── lr_location_resolver_impl_base.hpp
│ │ │ │ ├── lr_location_resolver_manager_factory.cpp
│ │ │ │ ├── lr_location_resolver_manager_factory.hpp
│ │ │ │ ├── lr_location_resolver_manager_impl.cpp
│ │ │ │ ├── lr_redirect_only_location_resolver_impl.cpp
│ │ │ │ ├── lr_redirect_only_location_resolver_impl.hpp
│ │ │ │ ├── lr_registered_data.hpp
│ │ │ │ ├── lr_registered_location_resolver_impl.cpp
│ │ │ │ ├── lr_registered_location_resolver_impl.hpp
│ │ │ │ ├── lr_remote_location_resolver_impl.hpp
│ │ │ │ ├── lr_remote_location_resolver_manager_impl.hpp
│ │ │ │ └── lr_remote_registered_location_resolver_impl.hpp
│ │ │ ├── mem/
│ │ │ │ ├── impl/
│ │ │ │ │ ├── heap/
│ │ │ │ │ │ ├── mem_impl_heap_cached_heap.cpp
│ │ │ │ │ │ ├── mem_impl_heap_central_heap.cpp
│ │ │ │ │ │ ├── mem_impl_heap_platform.hpp
│ │ │ │ │ │ ├── mem_impl_heap_tls_heap_cache.cpp
│ │ │ │ │ │ ├── mem_impl_heap_tls_heap_cache.hpp
│ │ │ │ │ │ ├── mem_impl_heap_tls_heap_central.cpp
│ │ │ │ │ │ ├── mem_impl_heap_tls_heap_central.hpp
│ │ │ │ │ │ └── mem_impl_heap_tls_heap_static.hpp
│ │ │ │ │ ├── mem_impl_platform.hpp
│ │ │ │ │ ├── mem_impl_platform.os.horizon.cpp
│ │ │ │ │ ├── mem_impl_platform.os.linux.cpp
│ │ │ │ │ ├── mem_impl_platform.os.macos.cpp
│ │ │ │ │ └── mem_impl_platform.os.windows.cpp
│ │ │ │ └── mem_standard_allocator.cpp
│ │ │ ├── mitm/
│ │ │ │ ├── mitm_pm.os.horizon.c
│ │ │ │ ├── mitm_pm.os.horizon.h
│ │ │ │ └── mitm_pm_api.cpp
│ │ │ ├── ncm/
│ │ │ │ ├── ncm_api.cpp
│ │ │ │ ├── ncm_content_id_utils.cpp
│ │ │ │ ├── ncm_content_info_utils.cpp
│ │ │ │ ├── ncm_content_management_utils.cpp
│ │ │ │ ├── ncm_content_manager_factory.cpp
│ │ │ │ ├── ncm_content_manager_factory.hpp
│ │ │ │ ├── ncm_content_manager_impl.cpp
│ │ │ │ ├── ncm_content_meta.cpp
│ │ │ │ ├── ncm_content_meta_database_impl.cpp
│ │ │ │ ├── ncm_content_meta_database_impl.hpp
│ │ │ │ ├── ncm_content_meta_database_impl_base.hpp
│ │ │ │ ├── ncm_content_meta_type.cpp
│ │ │ │ ├── ncm_content_meta_utils.cpp
│ │ │ │ ├── ncm_content_storage_impl.cpp
│ │ │ │ ├── ncm_content_storage_impl.hpp
│ │ │ │ ├── ncm_content_storage_impl_base.hpp
│ │ │ │ ├── ncm_extended_data_mapper.hpp
│ │ │ │ ├── ncm_file_mapper_file.hpp
│ │ │ │ ├── ncm_fs_utils.cpp
│ │ │ │ ├── ncm_fs_utils.hpp
│ │ │ │ ├── ncm_host_content_storage_impl.cpp
│ │ │ │ ├── ncm_host_content_storage_impl.hpp
│ │ │ │ ├── ncm_install_task_base.cpp
│ │ │ │ ├── ncm_install_task_data.cpp
│ │ │ │ ├── ncm_integrated_content_meta_database_impl.cpp
│ │ │ │ ├── ncm_integrated_content_storage_impl.cpp
│ │ │ │ ├── ncm_make_path.cpp
│ │ │ │ ├── ncm_memory_report.cpp
│ │ │ │ ├── ncm_on_memory_content_meta_database_impl.cpp
│ │ │ │ ├── ncm_on_memory_content_meta_database_impl.hpp
│ │ │ │ ├── ncm_package_install_task.cpp
│ │ │ │ ├── ncm_package_install_task_base.cpp
│ │ │ │ ├── ncm_package_system_downgrade_task.cpp
│ │ │ │ ├── ncm_package_system_update_task.cpp
│ │ │ │ ├── ncm_placeholder_accessor.cpp
│ │ │ │ ├── ncm_placeholder_accessor.hpp
│ │ │ │ ├── ncm_read_only_content_storage_impl.cpp
│ │ │ │ ├── ncm_read_only_content_storage_impl.hpp
│ │ │ │ ├── ncm_registered_host_content.cpp
│ │ │ │ ├── ncm_remote_content_manager_impl.hpp
│ │ │ │ ├── ncm_remote_content_meta_database_impl.hpp
│ │ │ │ ├── ncm_remote_content_storage_impl.hpp
│ │ │ │ ├── ncm_storage_utils.cpp
│ │ │ │ └── ncm_submission_package_install_task.cpp
│ │ │ ├── nim/
│ │ │ │ └── nim_network_install_manager_api.cpp
│ │ │ ├── nsd/
│ │ │ │ └── impl/
│ │ │ │ └── device/
│ │ │ │ └── nsd_device.cpp
│ │ │ ├── os/
│ │ │ │ ├── impl/
│ │ │ │ │ ├── os_address_space_allocator.cpp
│ │ │ │ │ ├── os_address_space_allocator.hpp
│ │ │ │ │ ├── os_address_space_allocator_forbidden_region.hpp
│ │ │ │ │ ├── os_address_space_allocator_impl.generic.hpp
│ │ │ │ │ ├── os_address_space_allocator_impl.os.horizon.hpp
│ │ │ │ │ ├── os_aslr_space_manager.hpp
│ │ │ │ │ ├── os_aslr_space_manager_impl.os.horizon.hpp
│ │ │ │ │ ├── os_aslr_space_manager_impl.os.linux.hpp
│ │ │ │ │ ├── os_aslr_space_manager_impl.os.macos.hpp
│ │ │ │ │ ├── os_aslr_space_manager_impl.os.windows.hpp
│ │ │ │ │ ├── os_aslr_space_manager_types.hpp
│ │ │ │ │ ├── os_cache_impl.hpp
│ │ │ │ │ ├── os_cache_impl.os.horizon.hpp
│ │ │ │ │ ├── os_cache_impl.os.linux.hpp
│ │ │ │ │ ├── os_cache_impl.os.macos.hpp
│ │ │ │ │ ├── os_cache_impl.os.windows.hpp
│ │ │ │ │ ├── os_debug_impl.hpp
│ │ │ │ │ ├── os_debug_impl.os.horizon.hpp
│ │ │ │ │ ├── os_debug_impl.os.linux.hpp
│ │ │ │ │ ├── os_debug_impl.os.macos.hpp
│ │ │ │ │ ├── os_debug_impl.os.windows.hpp
│ │ │ │ │ ├── os_disable_counter.os.horizon.hpp
│ │ │ │ │ ├── os_giant_lock.hpp
│ │ │ │ │ ├── os_giant_lock.os.horizon.hpp
│ │ │ │ │ ├── os_giant_lock.os.linux.cpp
│ │ │ │ │ ├── os_giant_lock.os.linux.hpp
│ │ │ │ │ ├── os_giant_lock.os.macos.cpp
│ │ │ │ │ ├── os_giant_lock.os.macos.hpp
│ │ │ │ │ ├── os_giant_lock.os.windows.cpp
│ │ │ │ │ ├── os_giant_lock.os.windows.hpp
│ │ │ │ │ ├── os_giant_lock_types.hpp
│ │ │ │ │ ├── os_initialize.os.horizon.cpp
│ │ │ │ │ ├── os_initialize.os.linux.cpp
│ │ │ │ │ ├── os_initialize.os.macos.cpp
│ │ │ │ │ ├── os_initialize.os.windows.cpp
│ │ │ │ │ ├── os_insecure_memory_impl.hpp
│ │ │ │ │ ├── os_insecure_memory_impl.os.horizon.cpp
│ │ │ │ │ ├── os_inter_process_event.cpp
│ │ │ │ │ ├── os_inter_process_event.hpp
│ │ │ │ │ ├── os_inter_process_event_impl.hpp
│ │ │ │ │ ├── os_inter_process_event_impl.os.horizon.cpp
│ │ │ │ │ ├── os_inter_process_event_impl.os.horizon.hpp
│ │ │ │ │ ├── os_inter_process_event_impl.os.linux.cpp
│ │ │ │ │ ├── os_inter_process_event_impl.os.linux.hpp
│ │ │ │ │ ├── os_inter_process_event_impl.os.macos.cpp
│ │ │ │ │ ├── os_inter_process_event_impl.os.macos.hpp
│ │ │ │ │ ├── os_inter_process_event_impl.os.windows.cpp
│ │ │ │ │ ├── os_inter_process_event_impl.os.windows.hpp
│ │ │ │ │ ├── os_internal_busy_mutex_impl.os.horizon.hpp
│ │ │ │ │ ├── os_internal_condition_variable_impl.os.horizon.cpp
│ │ │ │ │ ├── os_internal_condition_variable_impl.os.windows.cpp
│ │ │ │ │ ├── os_internal_condition_variable_impl.pthread.cpp
│ │ │ │ │ ├── os_internal_critical_section_impl.os.horizon.cpp
│ │ │ │ │ ├── os_internal_critical_section_impl.os.windows.cpp
│ │ │ │ │ ├── os_internal_critical_section_impl.os.windows.hpp
│ │ │ │ │ ├── os_internal_critical_section_impl.pthread.cpp
│ │ │ │ │ ├── os_internal_light_event_impl.os.generic.hpp
│ │ │ │ │ ├── os_internal_light_event_impl.os.horizon.hpp
│ │ │ │ │ ├── os_internal_rw_busy_mutex_impl.os.horizon.hpp
│ │ │ │ │ ├── os_internal_rw_busy_mutex_impl.os.linux.hpp
│ │ │ │ │ ├── os_internal_rw_busy_mutex_impl.os.macos.hpp
│ │ │ │ │ ├── os_internal_rw_busy_mutex_impl.os.windows.hpp
│ │ │ │ │ ├── os_interrupt_event_impl.hpp
│ │ │ │ │ ├── os_interrupt_event_target_impl.os.horizon.cpp
│ │ │ │ │ ├── os_interrupt_event_target_impl.os.horizon.hpp
│ │ │ │ │ ├── os_interrupt_event_target_impl.os.linux.hpp
│ │ │ │ │ ├── os_interrupt_event_target_impl.os.macos.hpp
│ │ │ │ │ ├── os_interrupt_event_target_impl.os.windows.cpp
│ │ │ │ │ ├── os_interrupt_event_target_impl.os.windows.hpp
│ │ │ │ │ ├── os_io_region_impl.hpp
│ │ │ │ │ ├── os_io_region_impl.os.horizon.cpp
│ │ │ │ │ ├── os_io_region_impl.os.windows.cpp
│ │ │ │ │ ├── os_memory_attribute_impl.hpp
│ │ │ │ │ ├── os_memory_attribute_impl.os.horizon.cpp
│ │ │ │ │ ├── os_memory_attribute_impl.os.linux.cpp
│ │ │ │ │ ├── os_memory_attribute_impl.os.macos.cpp
│ │ │ │ │ ├── os_memory_attribute_impl.os.windows.cpp
│ │ │ │ │ ├── os_memory_heap_manager.cpp
│ │ │ │ │ ├── os_memory_heap_manager.hpp
│ │ │ │ │ ├── os_memory_heap_manager_impl.os.horizon.hpp
│ │ │ │ │ ├── os_memory_heap_manager_impl.os.linux.hpp
│ │ │ │ │ ├── os_memory_heap_manager_impl.os.macos.hpp
│ │ │ │ │ ├── os_memory_heap_manager_impl.os.windows.hpp
│ │ │ │ │ ├── os_memory_heap_manager_types.hpp
│ │ │ │ │ ├── os_memory_permission_impl.hpp
│ │ │ │ │ ├── os_memory_permission_impl.os.horizon.cpp
│ │ │ │ │ ├── os_memory_permission_impl.os.linux.cpp
│ │ │ │ │ ├── os_memory_permission_impl.os.macos.cpp
│ │ │ │ │ ├── os_memory_permission_impl.os.windows.cpp
│ │ │ │ │ ├── os_message_queue_helper.hpp
│ │ │ │ │ ├── os_multiple_wait_holder_base.hpp
│ │ │ │ │ ├── os_multiple_wait_holder_impl.hpp
│ │ │ │ │ ├── os_multiple_wait_holder_of_event.hpp
│ │ │ │ │ ├── os_multiple_wait_holder_of_inter_process_event.hpp
│ │ │ │ │ ├── os_multiple_wait_holder_of_interrupt_event.cpp
│ │ │ │ │ ├── os_multiple_wait_holder_of_interrupt_event.hpp
│ │ │ │ │ ├── os_multiple_wait_holder_of_message_queue.hpp
│ │ │ │ │ ├── os_multiple_wait_holder_of_native_handle.hpp
│ │ │ │ │ ├── os_multiple_wait_holder_of_semaphore.hpp
│ │ │ │ │ ├── os_multiple_wait_holder_of_thread.hpp
│ │ │ │ │ ├── os_multiple_wait_holder_of_timer_event.hpp
│ │ │ │ │ ├── os_multiple_wait_impl.cpp
│ │ │ │ │ ├── os_multiple_wait_impl.hpp
│ │ │ │ │ ├── os_multiple_wait_object_list.hpp
│ │ │ │ │ ├── os_multiple_wait_target_impl.os.horizon.cpp
│ │ │ │ │ ├── os_multiple_wait_target_impl.os.horizon.hpp
│ │ │ │ │ ├── os_multiple_wait_target_impl.os.linux.cpp
│ │ │ │ │ ├── os_multiple_wait_target_impl.os.linux.hpp
│ │ │ │ │ ├── os_multiple_wait_target_impl.os.macos.cpp
│ │ │ │ │ ├── os_multiple_wait_target_impl.os.macos.hpp
│ │ │ │ │ ├── os_multiple_wait_target_impl.os.windows.cpp
│ │ │ │ │ ├── os_multiple_wait_target_impl.os.windows.hpp
│ │ │ │ │ ├── os_mutex_impl.hpp
│ │ │ │ │ ├── os_native_handle_impl.hpp
│ │ │ │ │ ├── os_native_handle_impl.os.horizon.hpp
│ │ │ │ │ ├── os_native_handle_impl.os.linux.hpp
│ │ │ │ │ ├── os_native_handle_impl.os.macos.hpp
│ │ │ │ │ ├── os_native_handle_impl.os.windows.hpp
│ │ │ │ │ ├── os_process_code_memory_impl.hpp
│ │ │ │ │ ├── os_process_code_memory_impl.os.horizon.cpp
│ │ │ │ │ ├── os_process_handle_impl.hpp
│ │ │ │ │ ├── os_process_handle_impl.os.horizon.hpp
│ │ │ │ │ ├── os_process_handle_impl.os.linux.hpp
│ │ │ │ │ ├── os_process_handle_impl.os.macos.hpp
│ │ │ │ │ ├── os_process_handle_impl.os.windows.hpp
│ │ │ │ │ ├── os_process_memory_impl.hpp
│ │ │ │ │ ├── os_process_memory_impl.os.horizon.cpp
│ │ │ │ │ ├── os_random_impl.hpp
│ │ │ │ │ ├── os_random_impl.os.horizon.cpp
│ │ │ │ │ ├── os_random_impl.os.linux.cpp
│ │ │ │ │ ├── os_random_impl.os.macos.cpp
│ │ │ │ │ ├── os_random_impl.os.windows.cpp
│ │ │ │ │ ├── os_resource_manager.cpp
│ │ │ │ │ ├── os_resource_manager.hpp
│ │ │ │ │ ├── os_rng_manager.hpp
│ │ │ │ │ ├── os_rng_manager_impl.cpp
│ │ │ │ │ ├── os_rng_manager_impl.hpp
│ │ │ │ │ ├── os_rng_manager_impl.os.horizon.cpp
│ │ │ │ │ ├── os_rng_manager_impl.os.linux.cpp
│ │ │ │ │ ├── os_rng_manager_impl.os.macos.cpp
│ │ │ │ │ ├── os_rng_manager_impl.os.windows.cpp
│ │ │ │ │ ├── os_rw_lock_impl.hpp
│ │ │ │ │ ├── os_rw_lock_target_impl.os.generic.cpp
│ │ │ │ │ ├── os_rw_lock_target_impl.os.generic.hpp
│ │ │ │ │ ├── os_rw_lock_target_impl.os.horizon.cpp
│ │ │ │ │ ├── os_rw_lock_target_impl.os.horizon.hpp
│ │ │ │ │ ├── os_shared_memory_impl.hpp
│ │ │ │ │ ├── os_shared_memory_impl.os.horizon.cpp
│ │ │ │ │ ├── os_stack_guard_manager.hpp
│ │ │ │ │ ├── os_stack_guard_manager_impl.os.horizon.hpp
│ │ │ │ │ ├── os_stack_guard_manager_impl.os.linux.hpp
│ │ │ │ │ ├── os_stack_guard_manager_impl.os.macos.hpp
│ │ │ │ │ ├── os_stack_guard_manager_impl.os.windows.hpp
│ │ │ │ │ ├── os_stack_guard_manager_types.hpp
│ │ │ │ │ ├── os_thread_manager.cpp
│ │ │ │ │ ├── os_thread_manager.hpp
│ │ │ │ │ ├── os_thread_manager_impl.os.horizon.cpp
│ │ │ │ │ ├── os_thread_manager_impl.os.horizon.hpp
│ │ │ │ │ ├── os_thread_manager_impl.os.windows.cpp
│ │ │ │ │ ├── os_thread_manager_impl.os.windows.hpp
│ │ │ │ │ ├── os_thread_manager_impl.pthread.cpp
│ │ │ │ │ ├── os_thread_manager_impl.pthread.hpp
│ │ │ │ │ ├── os_thread_manager_impl.pthread.inc
│ │ │ │ │ ├── os_thread_manager_types.hpp
│ │ │ │ │ ├── os_tick_manager.hpp
│ │ │ │ │ ├── os_tick_manager_impl.cpp
│ │ │ │ │ ├── os_tick_manager_impl.hpp
│ │ │ │ │ ├── os_tick_manager_impl.os.horizon.hpp
│ │ │ │ │ ├── os_tick_manager_impl.os.windows.hpp
│ │ │ │ │ ├── os_tick_manager_impl.std_chrono.hpp
│ │ │ │ │ ├── os_timeout_helper.cpp
│ │ │ │ │ ├── os_timeout_helper.hpp
│ │ │ │ │ ├── os_timeout_helper_impl.os.horizon.cpp
│ │ │ │ │ ├── os_timeout_helper_impl.os.horizon.hpp
│ │ │ │ │ ├── os_timeout_helper_impl.os.linux.cpp
│ │ │ │ │ ├── os_timeout_helper_impl.os.linux.hpp
│ │ │ │ │ ├── os_timeout_helper_impl.os.macos.cpp
│ │ │ │ │ ├── os_timeout_helper_impl.os.macos.hpp
│ │ │ │ │ ├── os_timeout_helper_impl.os.windows.cpp
│ │ │ │ │ ├── os_timeout_helper_impl.os.windows.hpp
│ │ │ │ │ ├── os_timer_event_helper.cpp
│ │ │ │ │ ├── os_timer_event_helper.hpp
│ │ │ │ │ ├── os_tls_manager.cpp
│ │ │ │ │ ├── os_tls_manager.hpp
│ │ │ │ │ ├── os_tls_manager_types.hpp
│ │ │ │ │ ├── os_transfer_memory_impl.hpp
│ │ │ │ │ ├── os_transfer_memory_impl.os.horizon.cpp
│ │ │ │ │ ├── os_unsafe_memory_impl.hpp
│ │ │ │ │ ├── os_unsafe_memory_impl.os.horizon.cpp
│ │ │ │ │ ├── os_utility.cpp
│ │ │ │ │ ├── os_utility.hpp
│ │ │ │ │ ├── os_vamm_manager.cpp
│ │ │ │ │ ├── os_vamm_manager.hpp
│ │ │ │ │ ├── os_vamm_manager_impl.os.horizon.hpp
│ │ │ │ │ ├── os_vamm_manager_impl.os.linux.hpp
│ │ │ │ │ ├── os_vamm_manager_impl.os.macos.hpp
│ │ │ │ │ ├── os_vamm_manager_impl.os.windows.hpp
│ │ │ │ │ └── os_vamm_manager_types.hpp
│ │ │ │ ├── os_argument.cpp
│ │ │ │ ├── os_barrier.cpp
│ │ │ │ ├── os_busy_mutex.cpp
│ │ │ │ ├── os_cache.cpp
│ │ │ │ ├── os_condition_variable.cpp
│ │ │ │ ├── os_debug.cpp
│ │ │ │ ├── os_event.cpp
│ │ │ │ ├── os_insecure_memory.cpp
│ │ │ │ ├── os_interrupt_event.cpp
│ │ │ │ ├── os_io_region.cpp
│ │ │ │ ├── os_light_event.cpp
│ │ │ │ ├── os_light_message_queue.cpp
│ │ │ │ ├── os_light_semaphore.cpp
│ │ │ │ ├── os_memory_attribute.cpp
│ │ │ │ ├── os_memory_heap.cpp
│ │ │ │ ├── os_memory_permission.cpp
│ │ │ │ ├── os_message_queue.cpp
│ │ │ │ ├── os_multiple_wait.cpp
│ │ │ │ ├── os_mutex.cpp
│ │ │ │ ├── os_native_handle_api.cpp
│ │ │ │ ├── os_process_code_memory.cpp
│ │ │ │ ├── os_process_handle_api.cpp
│ │ │ │ ├── os_process_memory.cpp
│ │ │ │ ├── os_random.cpp
│ │ │ │ ├── os_rw_busy_mutex.cpp
│ │ │ │ ├── os_rw_lock.cpp
│ │ │ │ ├── os_sdk_condition_variable.cpp
│ │ │ │ ├── os_sdk_mutex.cpp
│ │ │ │ ├── os_sdk_recursive_mutex.cpp
│ │ │ │ ├── os_sdk_reply_and_receive.cpp
│ │ │ │ ├── os_sdk_thread_local_storage_api.cpp
│ │ │ │ ├── os_semaphore.cpp
│ │ │ │ ├── os_shared_memory.cpp
│ │ │ │ ├── os_system_event.cpp
│ │ │ │ ├── os_thread.cpp
│ │ │ │ ├── os_thread_local_storage_api.cpp
│ │ │ │ ├── os_tick.cpp
│ │ │ │ ├── os_timer_event.cpp
│ │ │ │ ├── os_transfer_memory.cpp
│ │ │ │ ├── os_unsafe_memory.cpp
│ │ │ │ └── os_virtual_address_memory.cpp
│ │ │ ├── osdbg/
│ │ │ │ ├── impl/
│ │ │ │ │ ├── osdbg_thread_info.generic.hpp
│ │ │ │ │ ├── osdbg_thread_info.os.horizon.cpp
│ │ │ │ │ ├── osdbg_thread_info.os.horizon.hpp
│ │ │ │ │ ├── osdbg_thread_local_region.os.horizon.cpp
│ │ │ │ │ ├── osdbg_thread_local_region.os.horizon.hpp
│ │ │ │ │ ├── osdbg_thread_type.os.horizon.hpp
│ │ │ │ │ └── osdbg_types.hpp
│ │ │ │ └── osdbg_thread.cpp
│ │ │ ├── patcher/
│ │ │ │ └── patcher_api.cpp
│ │ │ ├── pgl/
│ │ │ │ ├── pgl_remote_event_observer.hpp
│ │ │ │ ├── pgl_shell_api.cpp
│ │ │ │ └── srv/
│ │ │ │ ├── pgl_srv_api.cpp
│ │ │ │ ├── pgl_srv_shell.cpp
│ │ │ │ ├── pgl_srv_shell.hpp
│ │ │ │ ├── pgl_srv_shell_event_observer.cpp
│ │ │ │ ├── pgl_srv_shell_event_observer.hpp
│ │ │ │ ├── pgl_srv_shell_host_utils.cpp
│ │ │ │ ├── pgl_srv_shell_host_utils.hpp
│ │ │ │ ├── pgl_srv_shell_interface.cpp
│ │ │ │ └── pgl_srv_tipc_utils.hpp
│ │ │ ├── pinmux/
│ │ │ │ └── driver/
│ │ │ │ ├── board/
│ │ │ │ │ └── nintendo/
│ │ │ │ │ └── nx/
│ │ │ │ │ ├── pinmux_board_driver_api.cpp
│ │ │ │ │ ├── pinmux_board_driver_api.hpp
│ │ │ │ │ ├── pinmux_drive_pad_characters.inc
│ │ │ │ │ ├── pinmux_initial_drive_pad_config.inc
│ │ │ │ │ ├── pinmux_initial_drive_pad_config_hoag.inc
│ │ │ │ │ ├── pinmux_initial_pad_config_aula.inc
│ │ │ │ │ ├── pinmux_initial_pad_config_calcio.inc
│ │ │ │ │ ├── pinmux_initial_pad_config_hoag.inc
│ │ │ │ │ ├── pinmux_initial_pad_config_icosa.inc
│ │ │ │ │ ├── pinmux_initial_pad_config_iowa.inc
│ │ │ │ │ ├── pinmux_pad_characters.inc
│ │ │ │ │ ├── pinmux_pad_index.hpp
│ │ │ │ │ ├── pinmux_platform_pads.cpp
│ │ │ │ │ └── pinmux_platform_pads.hpp
│ │ │ │ ├── pinmux_driver_api.cpp
│ │ │ │ └── pinmux_select_board_impl.hpp
│ │ │ ├── pm/
│ │ │ │ ├── pm_ams.os.horizon.c
│ │ │ │ ├── pm_ams.os.horizon.h
│ │ │ │ ├── pm_boot_mode_api.cpp
│ │ │ │ ├── pm_dmnt_api.cpp
│ │ │ │ ├── pm_info_api.cpp
│ │ │ │ ├── pm_info_api_weak.cpp
│ │ │ │ └── pm_shell_api.cpp
│ │ │ ├── powctl/
│ │ │ │ ├── driver/
│ │ │ │ │ └── impl/
│ │ │ │ │ ├── powctl_charger_parameters.board.nintendo_nx.cpp
│ │ │ │ │ └── powctl_charger_parameters.board.nintendo_nx.inc
│ │ │ │ ├── impl/
│ │ │ │ │ ├── board/
│ │ │ │ │ │ └── nintendo/
│ │ │ │ │ │ └── nx/
│ │ │ │ │ │ ├── powctl_battery_driver.cpp
│ │ │ │ │ │ ├── powctl_battery_driver.hpp
│ │ │ │ │ │ ├── powctl_board_impl.cpp
│ │ │ │ │ │ ├── powctl_board_impl.hpp
│ │ │ │ │ │ ├── powctl_bq24193_driver.cpp
│ │ │ │ │ │ ├── powctl_bq24193_driver.hpp
│ │ │ │ │ │ ├── powctl_charger_driver.cpp
│ │ │ │ │ │ ├── powctl_charger_driver.hpp
│ │ │ │ │ │ ├── powctl_interrupt_event_handler.cpp
│ │ │ │ │ │ ├── powctl_interrupt_event_handler.hpp
│ │ │ │ │ │ ├── powctl_max17050_custom_parameters.inc
│ │ │ │ │ │ ├── powctl_max17050_driver.cpp
│ │ │ │ │ │ ├── powctl_max17050_driver.hpp
│ │ │ │ │ │ └── powctl_retry_helper.hpp
│ │ │ │ │ ├── powctl_device_management.cpp
│ │ │ │ │ ├── powctl_device_management.hpp
│ │ │ │ │ ├── powctl_i_power_control_driver.hpp
│ │ │ │ │ └── powctl_select_board_driver.hpp
│ │ │ │ ├── powctl_battery_api.cpp
│ │ │ │ ├── powctl_charger_api.cpp
│ │ │ │ ├── powctl_driver_api.cpp
│ │ │ │ └── powctl_session_api.cpp
│ │ │ ├── psc/
│ │ │ │ ├── psc_pm_module.os.horizon.cpp
│ │ │ │ └── psc_remote_pm_module.hpp
│ │ │ ├── pwm/
│ │ │ │ ├── driver/
│ │ │ │ │ ├── board/
│ │ │ │ │ │ └── nintendo/
│ │ │ │ │ │ └── nx/
│ │ │ │ │ │ ├── impl/
│ │ │ │ │ │ │ ├── pwm_impl_pwm_driver_api.cpp
│ │ │ │ │ │ │ ├── pwm_impl_pwm_driver_api.hpp
│ │ │ │ │ │ │ ├── pwm_pwm_driver_impl.cpp
│ │ │ │ │ │ │ └── pwm_pwm_driver_impl.hpp
│ │ │ │ │ │ └── pwm_driver_api.cpp
│ │ │ │ │ ├── impl/
│ │ │ │ │ │ ├── pwm_channel_session_impl.cpp
│ │ │ │ │ │ ├── pwm_channel_session_impl.hpp
│ │ │ │ │ │ ├── pwm_driver_core.cpp
│ │ │ │ │ │ └── pwm_driver_core.hpp
│ │ │ │ │ ├── pwm_driver_channel_api.cpp
│ │ │ │ │ ├── pwm_driver_client_api.cpp
│ │ │ │ │ └── pwm_driver_service_api.cpp
│ │ │ │ ├── pwm_api.cpp
│ │ │ │ └── server/
│ │ │ │ ├── pwm_server_api.cpp
│ │ │ │ ├── pwm_server_channel_session_impl.hpp
│ │ │ │ ├── pwm_server_manager_impl.cpp
│ │ │ │ └── pwm_server_manager_impl.hpp
│ │ │ ├── ro/
│ │ │ │ └── impl/
│ │ │ │ └── ro_ro_exception_info.os.horizon.cpp
│ │ │ ├── scs/
│ │ │ │ ├── scs_command_processor.cpp
│ │ │ │ ├── scs_server_manager.cpp
│ │ │ │ ├── scs_shell.cpp
│ │ │ │ ├── scs_shell_server.cpp
│ │ │ │ └── scs_tenv.cpp
│ │ │ ├── service_guard.h
│ │ │ ├── settings/
│ │ │ │ ├── impl/
│ │ │ │ │ ├── settings_configuration_id_impl.cpp
│ │ │ │ │ ├── settings_configuration_id_impl.hpp
│ │ │ │ │ ├── settings_error_report_impl.cpp
│ │ │ │ │ ├── settings_error_report_impl.hpp
│ │ │ │ │ ├── settings_firmware_version_impl.cpp
│ │ │ │ │ ├── settings_firmware_version_impl.hpp
│ │ │ │ │ ├── settings_key_value_store.cpp
│ │ │ │ │ ├── settings_key_value_store.hpp
│ │ │ │ │ ├── settings_platform_region_impl.cpp
│ │ │ │ │ ├── settings_platform_region_impl.hpp
│ │ │ │ │ ├── settings_product_model_impl.cpp
│ │ │ │ │ ├── settings_product_model_impl.hpp
│ │ │ │ │ ├── settings_region_impl.cpp
│ │ │ │ │ ├── settings_region_impl.hpp
│ │ │ │ │ ├── settings_serial_number_impl.cpp
│ │ │ │ │ ├── settings_serial_number_impl.hpp
│ │ │ │ │ ├── settings_spl.cpp
│ │ │ │ │ ├── settings_spl.hpp
│ │ │ │ │ ├── settings_static_object.hpp
│ │ │ │ │ ├── settings_system_data.cpp
│ │ │ │ │ ├── settings_system_data.hpp
│ │ │ │ │ ├── settings_system_save_data.cpp
│ │ │ │ │ └── settings_system_save_data.hpp
│ │ │ │ ├── settings_configuration_id.cpp
│ │ │ │ ├── settings_error_report.cpp
│ │ │ │ ├── settings_firmware_version.cpp
│ │ │ │ ├── settings_fwdbg_api.cpp
│ │ │ │ ├── settings_platform_region.cpp
│ │ │ │ ├── settings_product_model.cpp
│ │ │ │ ├── settings_region.cpp
│ │ │ │ └── settings_serial_number.cpp
│ │ │ ├── sf/
│ │ │ │ ├── cmif/
│ │ │ │ │ ├── sf_cmif_domain_manager.cpp
│ │ │ │ │ ├── sf_cmif_domain_service_object.cpp
│ │ │ │ │ ├── sf_cmif_inline_context.cpp
│ │ │ │ │ ├── sf_cmif_service_dispatch.cpp
│ │ │ │ │ └── sf_cmif_service_object_holder.cpp
│ │ │ │ ├── hipc/
│ │ │ │ │ ├── sf_hipc_api.os.generic.cpp
│ │ │ │ │ ├── sf_hipc_api.os.horizon.cpp
│ │ │ │ │ ├── sf_hipc_mitm_query_api.cpp
│ │ │ │ │ ├── sf_hipc_mitm_query_api.hpp
│ │ │ │ │ ├── sf_hipc_server_domain_session_manager.cpp
│ │ │ │ │ ├── sf_hipc_server_manager.cpp
│ │ │ │ │ ├── sf_hipc_server_session_manager.cpp
│ │ │ │ │ └── sf_i_hipc_manager.hpp
│ │ │ │ ├── sf_default_allocation_policy.cpp
│ │ │ │ └── sf_interface_id_for_debug_enforcement.os.horizon.cpp
│ │ │ ├── sm/
│ │ │ │ ├── sm_ams.os.horizon.c
│ │ │ │ ├── sm_ams.os.horizon.h
│ │ │ │ ├── sm_api.cpp
│ │ │ │ ├── sm_manager_api.cpp
│ │ │ │ ├── sm_mitm_api.cpp
│ │ │ │ ├── sm_utils.cpp
│ │ │ │ ├── sm_utils.hpp
│ │ │ │ ├── smm_ams.os.horizon.c
│ │ │ │ └── smm_ams.os.horizon.h
│ │ │ ├── socket/
│ │ │ │ ├── impl/
│ │ │ │ │ ├── socket_allocator.hpp
│ │ │ │ │ ├── socket_api.hpp
│ │ │ │ │ ├── socket_api.os.horizon.cpp
│ │ │ │ │ ├── socket_api.os.windows.cpp
│ │ │ │ │ └── socket_platform_types_translation.os.windows.cpp
│ │ │ │ └── socket_api.cpp
│ │ │ ├── spl/
│ │ │ │ ├── impl/
│ │ │ │ │ ├── spl_api_impl.cpp
│ │ │ │ │ ├── spl_ctr_drbg.hpp
│ │ │ │ │ ├── spl_device_address_mapper.hpp
│ │ │ │ │ └── spl_key_slot_cache.hpp
│ │ │ │ ├── smc/
│ │ │ │ │ ├── spl_secure_monitor_api.os.generic.cpp
│ │ │ │ │ └── spl_secure_monitor_api.os.horizon.cpp
│ │ │ │ ├── spl_api.os.generic.cpp
│ │ │ │ └── spl_api.os.horizon.cpp
│ │ │ ├── sprofile/
│ │ │ │ └── srv/
│ │ │ │ ├── sprofile_srv_api.cpp
│ │ │ │ ├── sprofile_srv_fs_utils.cpp
│ │ │ │ ├── sprofile_srv_fs_utils.hpp
│ │ │ │ ├── sprofile_srv_i_profile_controller_for_debug.hpp
│ │ │ │ ├── sprofile_srv_i_profile_importer.hpp
│ │ │ │ ├── sprofile_srv_i_profile_reader.hpp
│ │ │ │ ├── sprofile_srv_i_profile_update_observer.hpp
│ │ │ │ ├── sprofile_srv_i_service_for_bg_agent.hpp
│ │ │ │ ├── sprofile_srv_i_service_for_system_process.hpp
│ │ │ │ ├── sprofile_srv_i_service_getter.hpp
│ │ │ │ ├── sprofile_srv_profile_controller_for_debug_impl.cpp
│ │ │ │ ├── sprofile_srv_profile_controller_for_debug_impl.hpp
│ │ │ │ ├── sprofile_srv_profile_importer.hpp
│ │ │ │ ├── sprofile_srv_profile_importer_impl.cpp
│ │ │ │ ├── sprofile_srv_profile_importer_impl.hpp
│ │ │ │ ├── sprofile_srv_profile_manager.cpp
│ │ │ │ ├── sprofile_srv_profile_manager.hpp
│ │ │ │ ├── sprofile_srv_profile_reader_impl.cpp
│ │ │ │ ├── sprofile_srv_profile_reader_impl.hpp
│ │ │ │ ├── sprofile_srv_profile_update_observer_impl.cpp
│ │ │ │ ├── sprofile_srv_profile_update_observer_impl.hpp
│ │ │ │ ├── sprofile_srv_service_for_bg_agent.cpp
│ │ │ │ ├── sprofile_srv_service_for_bg_agent.hpp
│ │ │ │ ├── sprofile_srv_service_for_system_process.cpp
│ │ │ │ ├── sprofile_srv_service_for_system_process.hpp
│ │ │ │ ├── sprofile_srv_service_getter.cpp
│ │ │ │ ├── sprofile_srv_service_getter.hpp
│ │ │ │ └── sprofile_srv_types.hpp
│ │ │ ├── time/
│ │ │ │ ├── impl/
│ │ │ │ │ └── util/
│ │ │ │ │ └── time_impl_util_api.cpp
│ │ │ │ ├── time_api.cpp
│ │ │ │ ├── time_calendar_time.cpp
│ │ │ │ ├── time_standard_network_system_clock.cpp
│ │ │ │ ├── time_standard_steady_clock.cpp
│ │ │ │ ├── time_standard_user_system_clock.cpp
│ │ │ │ └── time_timezone_api.cpp
│ │ │ ├── updater/
│ │ │ │ ├── updater_api.cpp
│ │ │ │ ├── updater_bis_management.cpp
│ │ │ │ ├── updater_bis_management.hpp
│ │ │ │ ├── updater_bis_save.cpp
│ │ │ │ ├── updater_bis_save.hpp
│ │ │ │ ├── updater_files.cpp
│ │ │ │ ├── updater_files.hpp
│ │ │ │ ├── updater_paths.cpp
│ │ │ │ └── updater_paths.hpp
│ │ │ ├── usb/
│ │ │ │ ├── impl/
│ │ │ │ │ └── usb_util.hpp
│ │ │ │ ├── usb_device.cpp
│ │ │ │ ├── usb_remote_ds_endpoint.cpp
│ │ │ │ ├── usb_remote_ds_endpoint.hpp
│ │ │ │ ├── usb_remote_ds_interface.cpp
│ │ │ │ ├── usb_remote_ds_interface.hpp
│ │ │ │ ├── usb_remote_ds_root_session.cpp
│ │ │ │ ├── usb_remote_ds_root_session.hpp
│ │ │ │ ├── usb_remote_ds_service.cpp
│ │ │ │ └── usb_remote_ds_service.hpp
│ │ │ ├── util/
│ │ │ │ ├── ini.c
│ │ │ │ ├── ini.h
│ │ │ │ ├── lz4.c
│ │ │ │ ├── lz4.h
│ │ │ │ ├── util_compression.cpp
│ │ │ │ ├── util_ini.cpp
│ │ │ │ └── util_uuid_api.cpp
│ │ │ └── wec/
│ │ │ └── wec_api.cpp
│ │ └── stratosphere.specs
│ └── libvapours/
│ ├── include/
│ │ ├── vapours/
│ │ │ ├── allocator.hpp
│ │ │ ├── ams/
│ │ │ │ ├── ams_api_version.h
│ │ │ │ ├── ams_fatal_error_context.hpp
│ │ │ │ └── ams_target_firmware.h
│ │ │ ├── ams_version.h
│ │ │ ├── assert.hpp
│ │ │ ├── common.hpp
│ │ │ ├── compiler.hpp
│ │ │ ├── crypto/
│ │ │ │ ├── crypto_aes_128_cmac_generator.hpp
│ │ │ │ ├── crypto_aes_cbc_encryptor_decryptor.hpp
│ │ │ │ ├── crypto_aes_ccm_encryptor_decryptor.hpp
│ │ │ │ ├── crypto_aes_ctr_encryptor_decryptor.hpp
│ │ │ │ ├── crypto_aes_decryptor.hpp
│ │ │ │ ├── crypto_aes_encryptor.hpp
│ │ │ │ ├── crypto_aes_gcm_encryptor.hpp
│ │ │ │ ├── crypto_aes_xts_encryptor_decryptor.hpp
│ │ │ │ ├── crypto_cbc_decryptor.hpp
│ │ │ │ ├── crypto_cbc_encryptor.hpp
│ │ │ │ ├── crypto_ccm_decryptor.hpp
│ │ │ │ ├── crypto_ccm_encryptor.hpp
│ │ │ │ ├── crypto_cmac_generator.hpp
│ │ │ │ ├── crypto_csrng.hpp
│ │ │ │ ├── crypto_ctr_decryptor.hpp
│ │ │ │ ├── crypto_ctr_encryptor.hpp
│ │ │ │ ├── crypto_gcm_encryptor.hpp
│ │ │ │ ├── crypto_hmac_generator.hpp
│ │ │ │ ├── crypto_hmac_sha1_generator.hpp
│ │ │ │ ├── crypto_hmac_sha256_generator.hpp
│ │ │ │ ├── crypto_md5_generator.hpp
│ │ │ │ ├── crypto_memory_clear.hpp
│ │ │ │ ├── crypto_memory_compare.hpp
│ │ │ │ ├── crypto_rsa_calculator.hpp
│ │ │ │ ├── crypto_rsa_oaep_decryptor.hpp
│ │ │ │ ├── crypto_rsa_oaep_encryptor.hpp
│ │ │ │ ├── crypto_rsa_oaep_sha256_decoder.hpp
│ │ │ │ ├── crypto_rsa_oaep_sha256_decryptor.hpp
│ │ │ │ ├── crypto_rsa_oaep_sha256_encryptor.hpp
│ │ │ │ ├── crypto_rsa_pkcs1_sha256_verifier.hpp
│ │ │ │ ├── crypto_rsa_pkcs1_verifier.hpp
│ │ │ │ ├── crypto_rsa_pss_sha256_verifier.hpp
│ │ │ │ ├── crypto_rsa_pss_verifier.hpp
│ │ │ │ ├── crypto_sha1_generator.hpp
│ │ │ │ ├── crypto_sha256_generator.hpp
│ │ │ │ ├── crypto_sha3_generator.hpp
│ │ │ │ ├── crypto_xts_decryptor.hpp
│ │ │ │ ├── crypto_xts_encryptor.hpp
│ │ │ │ └── impl/
│ │ │ │ ├── crypto_aes_impl.hpp
│ │ │ │ ├── crypto_bignum.hpp
│ │ │ │ ├── crypto_block_cipher.hpp
│ │ │ │ ├── crypto_cbc_mac_impl.hpp
│ │ │ │ ├── crypto_cbc_mode_impl.hpp
│ │ │ │ ├── crypto_ccm_mode_impl.hpp
│ │ │ │ ├── crypto_cmac_impl.hpp
│ │ │ │ ├── crypto_ctr_mode_impl.hpp
│ │ │ │ ├── crypto_gcm_mode_impl.hpp
│ │ │ │ ├── crypto_hash_function.hpp
│ │ │ │ ├── crypto_hmac_impl.hpp
│ │ │ │ ├── crypto_md5_impl.hpp
│ │ │ │ ├── crypto_rsa_oaep_impl.hpp
│ │ │ │ ├── crypto_rsa_pkcs1_impl.hpp
│ │ │ │ ├── crypto_rsa_pss_impl.hpp
│ │ │ │ ├── crypto_sha1_impl.hpp
│ │ │ │ ├── crypto_sha256_impl.hpp
│ │ │ │ ├── crypto_sha256_impl_constexpr.hpp
│ │ │ │ ├── crypto_sha3_impl.hpp
│ │ │ │ └── crypto_xts_mode_impl.hpp
│ │ │ ├── crypto.hpp
│ │ │ ├── dd/
│ │ │ │ ├── dd_cache.hpp
│ │ │ │ ├── dd_common_types.hpp
│ │ │ │ └── dd_io_mapping.hpp
│ │ │ ├── dd.hpp
│ │ │ ├── defines.hpp
│ │ │ ├── device_code.hpp
│ │ │ ├── freebsd/
│ │ │ │ └── tree.hpp
│ │ │ ├── impl/
│ │ │ │ ├── compiler_impl.clang.hpp
│ │ │ │ └── compiler_impl.gcc.hpp
│ │ │ ├── includes.hpp
│ │ │ ├── literals.hpp
│ │ │ ├── reg.hpp
│ │ │ ├── results/
│ │ │ │ ├── cal_results.hpp
│ │ │ │ ├── capsrv_results.hpp
│ │ │ │ ├── creport_results.hpp
│ │ │ │ ├── cs_results.hpp
│ │ │ │ ├── dd_results.hpp
│ │ │ │ ├── ddsf_results.hpp
│ │ │ │ ├── debug_results.hpp
│ │ │ │ ├── dmnt_results.hpp
│ │ │ │ ├── erpt_results.hpp
│ │ │ │ ├── err_results.hpp
│ │ │ │ ├── exosphere_results.hpp
│ │ │ │ ├── fatal_results.hpp
│ │ │ │ ├── fs_results.hpp
│ │ │ │ ├── gpio_results.hpp
│ │ │ │ ├── hipc_results.hpp
│ │ │ │ ├── htc_results.hpp
│ │ │ │ ├── htcfs_results.hpp
│ │ │ │ ├── htclow_results.hpp
│ │ │ │ ├── htcs_results.hpp
│ │ │ │ ├── i2c_results.hpp
│ │ │ │ ├── kvdb_results.hpp
│ │ │ │ ├── loader_results.hpp
│ │ │ │ ├── lr_results.hpp
│ │ │ │ ├── ncm_results.hpp
│ │ │ │ ├── nim_results.hpp
│ │ │ │ ├── ns_results.hpp
│ │ │ │ ├── os_results.hpp
│ │ │ │ ├── osdbg_results.hpp
│ │ │ │ ├── pcv_results.hpp
│ │ │ │ ├── pgl_results.hpp
│ │ │ │ ├── pm_results.hpp
│ │ │ │ ├── powctl_results.hpp
│ │ │ │ ├── psc_results.hpp
│ │ │ │ ├── pwm_results.hpp
│ │ │ │ ├── results_common.hpp
│ │ │ │ ├── ro_results.hpp
│ │ │ │ ├── scs_results.hpp
│ │ │ │ ├── sdmmc_results.hpp
│ │ │ │ ├── settings_results.hpp
│ │ │ │ ├── sf_results.hpp
│ │ │ │ ├── sm_results.hpp
│ │ │ │ ├── socket_results.hpp
│ │ │ │ ├── spl_results.hpp
│ │ │ │ ├── sprofile_results.hpp
│ │ │ │ ├── svc_results.hpp
│ │ │ │ ├── time_results.hpp
│ │ │ │ ├── tipc_results.hpp
│ │ │ │ ├── tma_results.hpp
│ │ │ │ ├── updater_results.hpp
│ │ │ │ ├── usb_results.hpp
│ │ │ │ └── vi_results.hpp
│ │ │ ├── results.hpp
│ │ │ ├── sdmmc/
│ │ │ │ ├── sdmmc_build_config.hpp
│ │ │ │ ├── sdmmc_common.hpp
│ │ │ │ ├── sdmmc_gc_asic.hpp
│ │ │ │ ├── sdmmc_mmc.hpp
│ │ │ │ └── sdmmc_sd_card.hpp
│ │ │ ├── sdmmc.hpp
│ │ │ ├── span.hpp
│ │ │ ├── svc/
│ │ │ │ ├── arch/
│ │ │ │ │ ├── arm/
│ │ │ │ │ │ └── svc_thread_local_region.hpp
│ │ │ │ │ └── arm64/
│ │ │ │ │ └── svc_thread_local_region.hpp
│ │ │ │ ├── board/
│ │ │ │ │ ├── generic/
│ │ │ │ │ │ └── svc_device_name.hpp
│ │ │ │ │ ├── nintendo/
│ │ │ │ │ │ └── nx/
│ │ │ │ │ │ ├── svc_device_name.hpp
│ │ │ │ │ │ ├── svc_hardware_constants.hpp
│ │ │ │ │ │ └── svc_io_pool_type.hpp
│ │ │ │ │ └── qemu/
│ │ │ │ │ └── virt/
│ │ │ │ │ └── svc_hardware_constants.hpp
│ │ │ │ ├── codegen/
│ │ │ │ │ ├── impl/
│ │ │ │ │ │ ├── svc_codegen_impl_code_generator.hpp
│ │ │ │ │ │ ├── svc_codegen_impl_common.hpp
│ │ │ │ │ │ ├── svc_codegen_impl_kernel_svc_wrapper.hpp
│ │ │ │ │ │ ├── svc_codegen_impl_layout.hpp
│ │ │ │ │ │ ├── svc_codegen_impl_layout_conversion.hpp
│ │ │ │ │ │ ├── svc_codegen_impl_meta_code.hpp
│ │ │ │ │ │ └── svc_codegen_impl_parameter.hpp
│ │ │ │ │ └── svc_codegen_kernel_svc_wrapper.hpp
│ │ │ │ ├── ipc/
│ │ │ │ │ └── svc_message_buffer.hpp
│ │ │ │ ├── svc_codegen.hpp
│ │ │ │ ├── svc_common.hpp
│ │ │ │ ├── svc_definition_macro.hpp
│ │ │ │ ├── svc_definitions.hpp
│ │ │ │ ├── svc_memory_map.hpp
│ │ │ │ ├── svc_select_device_name.hpp
│ │ │ │ ├── svc_select_hardware_constants.hpp
│ │ │ │ ├── svc_select_io_pool_type.hpp
│ │ │ │ ├── svc_select_thread_local_region.hpp
│ │ │ │ ├── svc_tick.hpp
│ │ │ │ ├── svc_types.hpp
│ │ │ │ ├── svc_types_base.hpp
│ │ │ │ ├── svc_types_common.hpp
│ │ │ │ ├── svc_types_dd.hpp
│ │ │ │ ├── svc_types_dmnt.hpp
│ │ │ │ ├── svc_types_priv.hpp
│ │ │ │ └── svc_version.hpp
│ │ │ ├── svc.hpp
│ │ │ ├── tegra/
│ │ │ │ ├── tegra_ahb_arbc.hpp
│ │ │ │ ├── tegra_apb_misc.hpp
│ │ │ │ ├── tegra_avp_cache.hpp
│ │ │ │ ├── tegra_clkrst.hpp
│ │ │ │ ├── tegra_emc.hpp
│ │ │ │ ├── tegra_evp.hpp
│ │ │ │ ├── tegra_flow_ctlr.hpp
│ │ │ │ ├── tegra_i2c.hpp
│ │ │ │ ├── tegra_i2s.hpp
│ │ │ │ ├── tegra_ictlr.hpp
│ │ │ │ ├── tegra_mc.hpp
│ │ │ │ ├── tegra_mipi_cal.hpp
│ │ │ │ ├── tegra_mselect.hpp
│ │ │ │ ├── tegra_pg_up.hpp
│ │ │ │ ├── tegra_pinmux.hpp
│ │ │ │ ├── tegra_pmc.hpp
│ │ │ │ ├── tegra_pwm.hpp
│ │ │ │ ├── tegra_sb.hpp
│ │ │ │ ├── tegra_sysctr0.hpp
│ │ │ │ └── tegra_timer.hpp
│ │ │ ├── tegra.hpp
│ │ │ ├── timespan.hpp
│ │ │ ├── types.hpp
│ │ │ ├── util/
│ │ │ │ ├── arch/
│ │ │ │ │ ├── arm64/
│ │ │ │ │ │ └── util_atomic.hpp
│ │ │ │ │ └── generic/
│ │ │ │ │ └── util_atomic.hpp
│ │ │ │ ├── impl/
│ │ │ │ │ ├── util_available_index_finder.hpp
│ │ │ │ │ └── util_enable_copy_move.hpp
│ │ │ │ ├── util_aligned_buffer.hpp
│ │ │ │ ├── util_alignment.hpp
│ │ │ │ ├── util_atomic.hpp
│ │ │ │ ├── util_bitflagset.hpp
│ │ │ │ ├── util_bitpack.hpp
│ │ │ │ ├── util_bitset.hpp
│ │ │ │ ├── util_bitutil.hpp
│ │ │ │ ├── util_bounded_map.hpp
│ │ │ │ ├── util_character_encoding.hpp
│ │ │ │ ├── util_endian.hpp
│ │ │ │ ├── util_enum.hpp
│ │ │ │ ├── util_exchange.hpp
│ │ │ │ ├── util_fixed_map.hpp
│ │ │ │ ├── util_fixed_set.hpp
│ │ │ │ ├── util_fixed_tree.hpp
│ │ │ │ ├── util_format_string.hpp
│ │ │ │ ├── util_fourcc.hpp
│ │ │ │ ├── util_function_local_static.hpp
│ │ │ │ ├── util_i_function.hpp
│ │ │ │ ├── util_in_place.hpp
│ │ │ │ ├── util_int_util.hpp
│ │ │ │ ├── util_intrusive_list.hpp
│ │ │ │ ├── util_intrusive_red_black_tree.hpp
│ │ │ │ ├── util_mutex_utils.hpp
│ │ │ │ ├── util_optional.hpp
│ │ │ │ ├── util_overlap.hpp
│ │ │ │ ├── util_parent_of_member.hpp
│ │ │ │ ├── util_pointer_util.hpp
│ │ │ │ ├── util_range.hpp
│ │ │ │ ├── util_scope_guard.hpp
│ │ │ │ ├── util_size.hpp
│ │ │ │ ├── util_specialization_of.hpp
│ │ │ │ ├── util_string_util.hpp
│ │ │ │ ├── util_string_view.hpp
│ │ │ │ ├── util_timer.hpp
│ │ │ │ ├── util_tinymt.hpp
│ │ │ │ ├── util_type_traits.hpp
│ │ │ │ ├── util_typed_storage.hpp
│ │ │ │ ├── util_utf8_string_util.hpp
│ │ │ │ ├── util_uuid.hpp
│ │ │ │ └── util_variadic.hpp
│ │ │ └── util.hpp
│ │ └── vapours.hpp
│ └── source/
│ ├── crypto/
│ │ ├── crypto_aes_cbc_encryptor_decryptor.cpp
│ │ ├── crypto_aes_ctr_encryptor_decryptor.cpp
│ │ ├── crypto_hmac_sha1_generator.cpp
│ │ ├── crypto_hmac_sha256_generator.cpp
│ │ ├── crypto_md5_generator.cpp
│ │ ├── crypto_memory_clear.cpp
│ │ ├── crypto_memory_compare.arch.arm.cpp
│ │ ├── crypto_memory_compare.arch.arm64.cpp
│ │ ├── crypto_memory_compare.arch.generic.cpp
│ │ ├── crypto_sha1_generator.cpp
│ │ ├── crypto_sha256_generator.cpp
│ │ └── impl/
│ │ ├── crypto_aes_impl.arch.arm64.cpp
│ │ ├── crypto_aes_impl.arch.x64.cpp
│ │ ├── crypto_aes_impl.arch.x64.hpp
│ │ ├── crypto_bignum.cpp
│ │ ├── crypto_bignum_operations.cpp
│ │ ├── crypto_bignum_operations_asm.arch.arm64.s
│ │ ├── crypto_cbc_mac_impl.arch.generic.cpp
│ │ ├── crypto_cbc_mac_impl.cpp
│ │ ├── crypto_ctr_mode_impl.arch.arm64.cpp
│ │ ├── crypto_ctr_mode_impl.arch.x64.cpp
│ │ ├── crypto_gcm_mode_impl.arch.arm64.cpp
│ │ ├── crypto_md5_impl.cpp
│ │ ├── crypto_sha1_impl.arch.arm64.cpp
│ │ ├── crypto_sha1_impl.arch.generic.cpp
│ │ ├── crypto_sha256_impl.arch.arm64.cpp
│ │ ├── crypto_sha256_impl.arch.generic.cpp
│ │ ├── crypto_sha3_impl.cpp
│ │ ├── crypto_update_impl.hpp
│ │ ├── crypto_xts_mode_impl.arch.arm64.cpp
│ │ ├── crypto_xts_mode_impl.arch.generic.cpp
│ │ └── crypto_xts_mode_impl.cpp
│ ├── dd/
│ │ ├── dd_cache.cpp
│ │ ├── dd_io_mapping.os.horizon.cpp
│ │ └── impl/
│ │ ├── dd_cache_impl.os.horizon.hpp
│ │ ├── dd_cache_impl.os.linux.hpp
│ │ ├── dd_cache_impl.os.macos.hpp
│ │ ├── dd_cache_impl.os.windows.hpp
│ │ └── dd_select_cache_impl.hpp
│ ├── result/
│ │ └── result_get_name.cpp
│ ├── sdmmc/
│ │ ├── impl/
│ │ │ ├── sdmmc_base_device_accessor.cpp
│ │ │ ├── sdmmc_base_device_accessor.hpp
│ │ │ ├── sdmmc_clock_reset_controller.board.nintendo_nx.cpp
│ │ │ ├── sdmmc_clock_reset_controller.hpp
│ │ │ ├── sdmmc_clock_reset_controller.pcv.board.nintendo_nx.cpp
│ │ │ ├── sdmmc_clock_reset_controller.pcv.board.nintendo_nx.hpp
│ │ │ ├── sdmmc_clock_reset_controller.reg.board.nintendo_nx.cpp
│ │ │ ├── sdmmc_clock_reset_controller.reg.board.nintendo_nx.hpp
│ │ │ ├── sdmmc_device_detector.cpp
│ │ │ ├── sdmmc_device_detector.hpp
│ │ │ ├── sdmmc_gc_asic_device_accessor.cpp
│ │ │ ├── sdmmc_gc_asic_device_accessor.hpp
│ │ │ ├── sdmmc_i_device_accessor.hpp
│ │ │ ├── sdmmc_i_host_controller.hpp
│ │ │ ├── sdmmc_io_impl.board.nintendo_nx.cpp
│ │ │ ├── sdmmc_io_impl.board.nintendo_nx.hpp
│ │ │ ├── sdmmc_mmc_device_accessor.cpp
│ │ │ ├── sdmmc_mmc_device_accessor.hpp
│ │ │ ├── sdmmc_port_gc_asic0.board.nintendo_nx.cpp
│ │ │ ├── sdmmc_port_gc_asic0.hpp
│ │ │ ├── sdmmc_port_mmc0.board.nintendo_nx.cpp
│ │ │ ├── sdmmc_port_mmc0.hpp
│ │ │ ├── sdmmc_port_sd_card0.board.nintendo_nx.cpp
│ │ │ ├── sdmmc_port_sd_card0.hpp
│ │ │ ├── sdmmc_sd_card_device_accessor.cpp
│ │ │ ├── sdmmc_sd_card_device_accessor.hpp
│ │ │ ├── sdmmc_sd_host_standard_controller.cpp
│ │ │ ├── sdmmc_sd_host_standard_controller.hpp
│ │ │ ├── sdmmc_sd_host_standard_registers.hpp
│ │ │ ├── sdmmc_sdmmc_controller.board.nintendo_nx.cpp
│ │ │ ├── sdmmc_sdmmc_controller.board.nintendo_nx.hpp
│ │ │ ├── sdmmc_select_sdmmc_controller.hpp
│ │ │ ├── sdmmc_timer.cpp
│ │ │ └── sdmmc_timer.hpp
│ │ ├── sdmmc_common.cpp
│ │ ├── sdmmc_gc_asic.cpp
│ │ ├── sdmmc_mmc.cpp
│ │ └── sdmmc_sd_card.cpp
│ ├── test/
│ │ └── test_intrusive_red_black_tree.cpp
│ └── util/
│ ├── util_format_string.cpp
│ └── util_utf8_string_util.cpp
├── mesosphere/
│ ├── Makefile
│ ├── build_mesosphere.py
│ ├── kernel/
│ │ ├── Makefile
│ │ ├── kernel.ld
│ │ ├── kernel.mk
│ │ ├── kernel.specs
│ │ └── source/
│ │ ├── arch/
│ │ │ └── arm64/
│ │ │ ├── exception_vectors.s
│ │ │ ├── init/
│ │ │ │ ├── kern_init_core.cpp
│ │ │ │ └── start.s
│ │ │ ├── kern_exception_handlers_asm.s
│ │ │ ├── kern_k_scheduler_asm.s
│ │ │ ├── kern_k_thread_context_asm.s
│ │ │ └── svc/
│ │ │ └── kern_svc_tables_asm.s
│ │ ├── kern_kernel_instantiations.cpp
│ │ └── libc/
│ │ ├── arch/
│ │ │ └── arm64/
│ │ │ ├── asmdefs.h
│ │ │ ├── memcmp.arch.arm64.s
│ │ │ ├── memcpy.arch.arm64.s
│ │ │ └── memset.arch.arm64.s
│ │ ├── kern_env.cpp
│ │ ├── kern_libc_config.arch.arm64.h
│ │ ├── kern_libc_config.h
│ │ └── kern_libc_generic.c
│ ├── kernel_ldr/
│ │ ├── Makefile
│ │ ├── kernel_ldr.ld
│ │ ├── kernel_ldr.mk
│ │ ├── kernel_ldr.specs
│ │ └── source/
│ │ ├── arch/
│ │ │ └── arm64/
│ │ │ ├── exceptions.s
│ │ │ ├── kern_init_loader_asm.s
│ │ │ └── start.s
│ │ ├── board/
│ │ │ └── nintendo/
│ │ │ └── nx/
│ │ │ └── kern_init_loader_board_setup.cpp
│ │ ├── kern_init_loader.cpp
│ │ ├── kern_init_loader_asm.hpp
│ │ ├── kern_init_loader_board_default_setup.arch.arm64.cpp
│ │ ├── kern_init_loader_board_setup.hpp
│ │ ├── kern_loader_panic.cpp
│ │ └── libc/
│ │ ├── kern_libc_config.arch.arm64.h
│ │ ├── kern_libc_config.h
│ │ └── kern_libc_generic.c
│ └── mesosphere.mk
├── stratosphere/
│ ├── LogManager/
│ │ ├── LogManager.json
│ │ ├── Makefile
│ │ ├── source/
│ │ │ └── lm_main.cpp
│ │ └── system_module.mk
│ ├── Makefile
│ ├── TioServer/
│ │ ├── Makefile
│ │ ├── TioServer.json
│ │ ├── source/
│ │ │ ├── tio_file_server.cpp
│ │ │ ├── tio_file_server.hpp
│ │ │ ├── tio_file_server_htcs_server.cpp
│ │ │ ├── tio_file_server_htcs_server.hpp
│ │ │ ├── tio_file_server_packet.hpp
│ │ │ ├── tio_file_server_processor.cpp
│ │ │ ├── tio_file_server_processor.hpp
│ │ │ ├── tio_main.cpp
│ │ │ ├── tio_sd_card_observer.cpp
│ │ │ └── tio_sd_card_observer.hpp
│ │ └── system_module.mk
│ ├── ams_mitm/
│ │ ├── Makefile
│ │ ├── ams_mitm.json
│ │ ├── source/
│ │ │ ├── amsmitm_fs_utils.cpp
│ │ │ ├── amsmitm_fs_utils.hpp
│ │ │ ├── amsmitm_initialization.cpp
│ │ │ ├── amsmitm_initialization.hpp
│ │ │ ├── amsmitm_main.cpp
│ │ │ ├── amsmitm_module.hpp
│ │ │ ├── amsmitm_module_management.cpp
│ │ │ ├── amsmitm_module_management.hpp
│ │ │ ├── amsmitm_prodinfo_utils.cpp
│ │ │ ├── amsmitm_prodinfo_utils.hpp
│ │ │ ├── bpc_mitm/
│ │ │ │ ├── bpc_ams_module.cpp
│ │ │ │ ├── bpc_ams_module.hpp
│ │ │ │ ├── bpc_ams_power_utils.cpp
│ │ │ │ ├── bpc_ams_power_utils.hpp
│ │ │ │ ├── bpc_ams_service.cpp
│ │ │ │ ├── bpc_ams_service.hpp
│ │ │ │ ├── bpc_mitm_service.cpp
│ │ │ │ ├── bpc_mitm_service.hpp
│ │ │ │ ├── bpcmitm_module.cpp
│ │ │ │ └── bpcmitm_module.hpp
│ │ │ ├── dns_mitm/
│ │ │ │ ├── dnsmitm_debug.cpp
│ │ │ │ ├── dnsmitm_debug.hpp
│ │ │ │ ├── dnsmitm_host_redirection.cpp
│ │ │ │ ├── dnsmitm_host_redirection.hpp
│ │ │ │ ├── dnsmitm_module.cpp
│ │ │ │ ├── dnsmitm_module.hpp
│ │ │ │ ├── dnsmitm_resolver_impl.cpp
│ │ │ │ ├── dnsmitm_resolver_impl.hpp
│ │ │ │ ├── serializer/
│ │ │ │ │ ├── serializer.cpp
│ │ │ │ │ ├── serializer.hpp
│ │ │ │ │ ├── serializer_impls_addrinfo.cpp
│ │ │ │ │ ├── serializer_impls_hostent.cpp
│ │ │ │ │ ├── serializer_impls_in_addr.cpp
│ │ │ │ │ ├── serializer_impls_ints.cpp
│ │ │ │ │ ├── serializer_impls_sockaddrin_4.cpp
│ │ │ │ │ ├── serializer_impls_sockaddrin_6.cpp
│ │ │ │ │ └── serializer_impls_string.cpp
│ │ │ │ ├── sfdnsres_shim.c
│ │ │ │ ├── sfdnsres_shim.h
│ │ │ │ └── socket_allocator.hpp
│ │ │ ├── fs_mitm/
│ │ │ │ ├── fs_mitm_service.cpp
│ │ │ │ ├── fs_mitm_service.hpp
│ │ │ │ ├── fs_shim.c
│ │ │ │ ├── fs_shim.h
│ │ │ │ ├── fsmitm_boot0storage.cpp
│ │ │ │ ├── fsmitm_boot0storage.hpp
│ │ │ │ ├── fsmitm_calibration_binary_storage.cpp
│ │ │ │ ├── fsmitm_calibration_binary_storage.hpp
│ │ │ │ ├── fsmitm_layered_romfs_storage.cpp
│ │ │ │ ├── fsmitm_layered_romfs_storage.hpp
│ │ │ │ ├── fsmitm_module.cpp
│ │ │ │ ├── fsmitm_module.hpp
│ │ │ │ ├── fsmitm_readonly_layered_filesystem.hpp
│ │ │ │ ├── fsmitm_romfs.cpp
│ │ │ │ ├── fsmitm_romfs.hpp
│ │ │ │ ├── fsmitm_save_utils.cpp
│ │ │ │ ├── fsmitm_save_utils.hpp
│ │ │ │ └── memlet/
│ │ │ │ ├── memlet.c
│ │ │ │ ├── memlet.h
│ │ │ │ └── service_guard.h
│ │ │ ├── mitm_pm/
│ │ │ │ ├── mitm_pm_module.cpp
│ │ │ │ ├── mitm_pm_module.hpp
│ │ │ │ ├── mitm_pm_service.cpp
│ │ │ │ └── mitm_pm_service.hpp
│ │ │ ├── ns_mitm/
│ │ │ │ ├── ns_am_mitm_service.cpp
│ │ │ │ ├── ns_am_mitm_service.hpp
│ │ │ │ ├── ns_shim.c
│ │ │ │ ├── ns_shim.h
│ │ │ │ ├── ns_web_mitm_service.cpp
│ │ │ │ ├── ns_web_mitm_service.hpp
│ │ │ │ ├── nsmitm_module.cpp
│ │ │ │ └── nsmitm_module.hpp
│ │ │ ├── set_mitm/
│ │ │ │ ├── set_mitm_service.cpp
│ │ │ │ ├── set_mitm_service.hpp
│ │ │ │ ├── set_shim.c
│ │ │ │ ├── set_shim.h
│ │ │ │ ├── setmitm_module.cpp
│ │ │ │ ├── setmitm_module.hpp
│ │ │ │ ├── setsys_mitm_service.cpp
│ │ │ │ ├── setsys_mitm_service.hpp
│ │ │ │ ├── setsys_shim.c
│ │ │ │ ├── setsys_shim.h
│ │ │ │ ├── settings_fwdbg_api_override.cpp
│ │ │ │ ├── settings_sd_kvs.cpp
│ │ │ │ └── settings_sd_kvs.hpp
│ │ │ └── sysupdater/
│ │ │ ├── sysupdater_apply_manager.cpp
│ │ │ ├── sysupdater_apply_manager.hpp
│ │ │ ├── sysupdater_async_impl.cpp
│ │ │ ├── sysupdater_async_impl.hpp
│ │ │ ├── sysupdater_async_thread_allocator.cpp
│ │ │ ├── sysupdater_async_thread_allocator.hpp
│ │ │ ├── sysupdater_fs_utils.cpp
│ │ │ ├── sysupdater_fs_utils.hpp
│ │ │ ├── sysupdater_module.cpp
│ │ │ ├── sysupdater_module.hpp
│ │ │ ├── sysupdater_service.cpp
│ │ │ ├── sysupdater_service.hpp
│ │ │ ├── sysupdater_thread_allocator.cpp
│ │ │ └── sysupdater_thread_allocator.hpp
│ │ └── system_module.mk
│ ├── boot/
│ │ ├── Makefile
│ │ ├── boot.json
│ │ ├── source/
│ │ │ ├── api_overrides/
│ │ │ │ ├── pcv_clkrst_api_for_boot.board.nintendo_nx.cpp
│ │ │ │ └── regulator_api_for_boot.cpp
│ │ │ ├── boot_battery_driver.hpp
│ │ │ ├── boot_battery_icon_charging.inc
│ │ │ ├── boot_battery_icon_charging_red.inc
│ │ │ ├── boot_battery_icon_low.inc
│ │ │ ├── boot_battery_icons.cpp
│ │ │ ├── boot_battery_icons.hpp
│ │ │ ├── boot_boot_reason.cpp
│ │ │ ├── boot_boot_reason.hpp
│ │ │ ├── boot_change_voltage.cpp
│ │ │ ├── boot_change_voltage.hpp
│ │ │ ├── boot_charger_driver.hpp
│ │ │ ├── boot_check_battery.cpp
│ │ │ ├── boot_check_battery.hpp
│ │ │ ├── boot_check_clock.cpp
│ │ │ ├── boot_check_clock.hpp
│ │ │ ├── boot_clock_initial_configuration.cpp
│ │ │ ├── boot_clock_initial_configuration.hpp
│ │ │ ├── boot_display.cpp
│ │ │ ├── boot_display.hpp
│ │ │ ├── boot_display_config.inc
│ │ │ ├── boot_driver_management.cpp
│ │ │ ├── boot_driver_management.hpp
│ │ │ ├── boot_fan_enable.cpp
│ │ │ ├── boot_fan_enable.hpp
│ │ │ ├── boot_i2c_utils.cpp
│ │ │ ├── boot_i2c_utils.hpp
│ │ │ ├── boot_main.cpp
│ │ │ ├── boot_pinmux_initial_configuration.cpp
│ │ │ ├── boot_pinmux_initial_configuration.hpp
│ │ │ ├── boot_pmic_driver.cpp
│ │ │ ├── boot_pmic_driver.hpp
│ │ │ ├── boot_power_utils.cpp
│ │ │ ├── boot_power_utils.hpp
│ │ │ ├── boot_registers_di.hpp
│ │ │ ├── boot_repair_boot_images.cpp
│ │ │ ├── boot_repair_boot_images.hpp
│ │ │ ├── boot_rtc_driver.cpp
│ │ │ ├── boot_rtc_driver.hpp
│ │ │ ├── boot_splash_screen.cpp
│ │ │ ├── boot_splash_screen.hpp
│ │ │ ├── boot_splash_screen_notext.inc
│ │ │ └── boot_splash_screen_text.inc
│ │ └── system_module.mk
│ ├── boot2/
│ │ ├── Makefile
│ │ ├── boot2.json
│ │ ├── source/
│ │ │ └── boot2_main.cpp
│ │ └── system_module.mk
│ ├── creport/
│ │ ├── Makefile
│ │ ├── creport.json
│ │ ├── source/
│ │ │ ├── creport_crash_report.cpp
│ │ │ ├── creport_crash_report.hpp
│ │ │ ├── creport_main.cpp
│ │ │ ├── creport_modules.cpp
│ │ │ ├── creport_modules.hpp
│ │ │ ├── creport_scoped_file.cpp
│ │ │ ├── creport_scoped_file.hpp
│ │ │ ├── creport_threads.cpp
│ │ │ ├── creport_threads.hpp
│ │ │ ├── creport_utils.cpp
│ │ │ └── creport_utils.hpp
│ │ └── system_module.mk
│ ├── cs/
│ │ ├── Makefile
│ │ ├── cs.json
│ │ ├── source/
│ │ │ └── cs_main.cpp
│ │ └── system_module.mk
│ ├── dmnt/
│ │ ├── Makefile
│ │ ├── dmnt.json
│ │ ├── source/
│ │ │ ├── cheat/
│ │ │ │ ├── dmnt_cheat_service.cpp
│ │ │ │ ├── dmnt_cheat_service.hpp
│ │ │ │ └── impl/
│ │ │ │ ├── dmnt_cheat_api.cpp
│ │ │ │ ├── dmnt_cheat_api.hpp
│ │ │ │ ├── dmnt_cheat_debug_events_manager.cpp
│ │ │ │ ├── dmnt_cheat_debug_events_manager.hpp
│ │ │ │ ├── dmnt_cheat_vm.cpp
│ │ │ │ └── dmnt_cheat_vm.hpp
│ │ │ └── dmnt_main.cpp
│ │ └── system_module.mk
│ ├── dmnt.gen2/
│ │ ├── Makefile
│ │ ├── dmnt.gen2.json
│ │ ├── source/
│ │ │ ├── dmnt2_breakpoint_manager.cpp
│ │ │ ├── dmnt2_breakpoint_manager.hpp
│ │ │ ├── dmnt2_breakpoint_manager_base.cpp
│ │ │ ├── dmnt2_breakpoint_manager_base.hpp
│ │ │ ├── dmnt2_debug_log.cpp
│ │ │ ├── dmnt2_debug_log.hpp
│ │ │ ├── dmnt2_debug_process.cpp
│ │ │ ├── dmnt2_debug_process.hpp
│ │ │ ├── dmnt2_gdb_packet_io.cpp
│ │ │ ├── dmnt2_gdb_packet_io.hpp
│ │ │ ├── dmnt2_gdb_server.cpp
│ │ │ ├── dmnt2_gdb_server.hpp
│ │ │ ├── dmnt2_gdb_server_impl.cpp
│ │ │ ├── dmnt2_gdb_server_impl.hpp
│ │ │ ├── dmnt2_gdb_signal.hpp
│ │ │ ├── dmnt2_hardware_breakpoint.cpp
│ │ │ ├── dmnt2_hardware_breakpoint.hpp
│ │ │ ├── dmnt2_hardware_watchpoint.cpp
│ │ │ ├── dmnt2_hardware_watchpoint.hpp
│ │ │ ├── dmnt2_main.cpp
│ │ │ ├── dmnt2_module_definition.hpp
│ │ │ ├── dmnt2_software_breakpoint.cpp
│ │ │ ├── dmnt2_software_breakpoint.hpp
│ │ │ ├── dmnt2_transport_layer.cpp
│ │ │ ├── dmnt2_transport_layer.hpp
│ │ │ ├── dmnt2_transport_receive_buffer.cpp
│ │ │ ├── dmnt2_transport_receive_buffer.hpp
│ │ │ ├── dmnt2_transport_session.cpp
│ │ │ └── dmnt2_transport_session.hpp
│ │ └── system_module.mk
│ ├── eclct.stub/
│ │ ├── Makefile
│ │ ├── eclct.stub.json
│ │ ├── source/
│ │ │ └── eclct_stub.cpp
│ │ └── system_module.mk
│ ├── erpt/
│ │ ├── Makefile
│ │ ├── erpt.json
│ │ ├── source/
│ │ │ └── erpt_main.cpp
│ │ └── system_module.mk
│ ├── fatal/
│ │ ├── Makefile
│ │ ├── fatal.json
│ │ ├── source/
│ │ │ ├── fatal_ams_logo.inc
│ │ │ ├── fatal_config.cpp
│ │ │ ├── fatal_config.hpp
│ │ │ ├── fatal_debug.cpp
│ │ │ ├── fatal_debug.hpp
│ │ │ ├── fatal_event_manager.cpp
│ │ │ ├── fatal_event_manager.hpp
│ │ │ ├── fatal_font.cpp
│ │ │ ├── fatal_font.hpp
│ │ │ ├── fatal_main.cpp
│ │ │ ├── fatal_repair.cpp
│ │ │ ├── fatal_repair.hpp
│ │ │ ├── fatal_scoped_file.cpp
│ │ │ ├── fatal_scoped_file.hpp
│ │ │ ├── fatal_service.cpp
│ │ │ ├── fatal_service.hpp
│ │ │ ├── fatal_service_for_self.hpp
│ │ │ ├── fatal_task.cpp
│ │ │ ├── fatal_task.hpp
│ │ │ ├── fatal_task_clock.cpp
│ │ │ ├── fatal_task_clock.hpp
│ │ │ ├── fatal_task_error_report.cpp
│ │ │ ├── fatal_task_error_report.hpp
│ │ │ ├── fatal_task_power.cpp
│ │ │ ├── fatal_task_power.hpp
│ │ │ ├── fatal_task_screen.cpp
│ │ │ ├── fatal_task_screen.hpp
│ │ │ ├── fatal_task_sound.cpp
│ │ │ ├── fatal_task_sound.hpp
│ │ │ └── stb_truetype.h
│ │ └── system_module.mk
│ ├── fs/
│ │ ├── Makefile
│ │ ├── fs.json
│ │ ├── source/
│ │ │ └── fs_main.cpp
│ │ └── system_module.mk
│ ├── htc/
│ │ ├── Makefile
│ │ ├── htc.json
│ │ ├── source/
│ │ │ └── htc_main.cpp
│ │ └── system_module.mk
│ ├── jpegdec/
│ │ ├── Makefile
│ │ ├── jpegdec.json
│ │ ├── source/
│ │ │ ├── jpegdec_environment.cpp
│ │ │ ├── jpegdec_main.cpp
│ │ │ ├── jpegdec_memory_management.cpp
│ │ │ └── jpegdec_memory_management.hpp
│ │ └── system_module.mk
│ ├── loader/
│ │ ├── Makefile
│ │ ├── loader.json
│ │ ├── source/
│ │ │ ├── ldr_argument_store.cpp
│ │ │ ├── ldr_argument_store.hpp
│ │ │ ├── ldr_capabilities.cpp
│ │ │ ├── ldr_capabilities.hpp
│ │ │ ├── ldr_content_management.cpp
│ │ │ ├── ldr_content_management.hpp
│ │ │ ├── ldr_development_manager.cpp
│ │ │ ├── ldr_development_manager.hpp
│ │ │ ├── ldr_embedded_usb_patches.inc
│ │ │ ├── ldr_launch_record.cpp
│ │ │ ├── ldr_launch_record.hpp
│ │ │ ├── ldr_loader_service.cpp
│ │ │ ├── ldr_loader_service.hpp
│ │ │ ├── ldr_main.cpp
│ │ │ ├── ldr_meta.cpp
│ │ │ ├── ldr_meta.hpp
│ │ │ ├── ldr_patcher.cpp
│ │ │ ├── ldr_patcher.hpp
│ │ │ ├── ldr_process_creation.cpp
│ │ │ ├── ldr_process_creation.hpp
│ │ │ ├── ldr_ro_manager.cpp
│ │ │ └── ldr_ro_manager.hpp
│ │ └── system_module.mk
│ ├── memlet/
│ │ ├── Makefile
│ │ ├── memlet.json
│ │ ├── source/
│ │ │ ├── memlet_main.cpp
│ │ │ ├── memlet_service.cpp
│ │ │ └── memlet_service.hpp
│ │ └── system_module.mk
│ ├── ncm/
│ │ ├── Makefile
│ │ ├── ncm.json
│ │ ├── source/
│ │ │ └── ncm_main.cpp
│ │ └── system_module.mk
│ ├── pgl/
│ │ ├── Makefile
│ │ ├── pgl.json
│ │ ├── source/
│ │ │ └── pgl_main.cpp
│ │ └── system_module.mk
│ ├── pm/
│ │ ├── Makefile
│ │ ├── pm.json
│ │ ├── source/
│ │ │ ├── impl/
│ │ │ │ ├── pm_process_attributes.hpp
│ │ │ │ ├── pm_process_info.cpp
│ │ │ │ ├── pm_process_info.hpp
│ │ │ │ ├── pm_process_manager.cpp
│ │ │ │ ├── pm_process_manager.hpp
│ │ │ │ ├── pm_process_tracker.cpp
│ │ │ │ ├── pm_process_tracker.hpp
│ │ │ │ ├── pm_spec.cpp
│ │ │ │ └── pm_spec.hpp
│ │ │ ├── pm_boot_mode_service.cpp
│ │ │ ├── pm_boot_mode_service.hpp
│ │ │ ├── pm_debug_monitor_service.cpp
│ │ │ ├── pm_debug_monitor_service.hpp
│ │ │ ├── pm_info_service.cpp
│ │ │ ├── pm_info_service.hpp
│ │ │ ├── pm_main.cpp
│ │ │ ├── pm_shell_service.cpp
│ │ │ └── pm_shell_service.hpp
│ │ └── system_module.mk
│ ├── ro/
│ │ ├── Makefile
│ │ ├── ro.json
│ │ ├── source/
│ │ │ ├── impl/
│ │ │ │ ├── ro_nro_utils.cpp
│ │ │ │ ├── ro_nro_utils.hpp
│ │ │ │ ├── ro_nrr_utils.cpp
│ │ │ │ ├── ro_nrr_utils.hpp
│ │ │ │ ├── ro_patcher.cpp
│ │ │ │ ├── ro_patcher.hpp
│ │ │ │ ├── ro_random.cpp
│ │ │ │ ├── ro_random.hpp
│ │ │ │ ├── ro_service_impl.cpp
│ │ │ │ └── ro_service_impl.hpp
│ │ │ ├── ro_debug_monitor_service.cpp
│ │ │ ├── ro_debug_monitor_service.hpp
│ │ │ ├── ro_main.cpp
│ │ │ ├── ro_ro_service.cpp
│ │ │ └── ro_ro_service.hpp
│ │ └── system_module.mk
│ ├── sm/
│ │ ├── Makefile
│ │ ├── sm.json
│ │ ├── source/
│ │ │ ├── impl/
│ │ │ │ ├── sm_service_manager.cpp
│ │ │ │ └── sm_service_manager.hpp
│ │ │ ├── sm_main.cpp
│ │ │ ├── sm_manager_service.hpp
│ │ │ ├── sm_tipc_server.cpp
│ │ │ ├── sm_tipc_server.hpp
│ │ │ ├── sm_user_service.cpp
│ │ │ ├── sm_user_service.hpp
│ │ │ └── sm_wait_list.hpp
│ │ └── system_module.mk
│ ├── spl/
│ │ ├── Makefile
│ │ ├── source/
│ │ │ ├── spl_crypto_service.hpp
│ │ │ ├── spl_deprecated_service.hpp
│ │ │ ├── spl_device_unique_data_service.hpp
│ │ │ ├── spl_es_service.hpp
│ │ │ ├── spl_fs_service.hpp
│ │ │ ├── spl_general_service.hpp
│ │ │ ├── spl_main.cpp
│ │ │ ├── spl_manu_service.hpp
│ │ │ ├── spl_random_service.hpp
│ │ │ ├── spl_secure_monitor_manager.cpp
│ │ │ ├── spl_secure_monitor_manager.hpp
│ │ │ └── spl_ssl_service.hpp
│ │ ├── spl.json
│ │ └── system_module.mk
│ └── stratosphere.mk
├── tests/
│ ├── Licensing/
│ │ └── Catch2-LICENSE.txt
│ ├── TestFs/
│ │ ├── Makefile
│ │ ├── source/
│ │ │ └── test.cpp
│ │ └── unit_test.mk
│ ├── TestOsEvents/
│ │ ├── Makefile
│ │ ├── source/
│ │ │ └── test.cpp
│ │ └── unit_test.mk
│ ├── TestSocket/
│ │ ├── Makefile
│ │ ├── source/
│ │ │ └── test.cpp
│ │ └── unit_test.mk
│ ├── TestStack/
│ │ ├── Makefile
│ │ ├── source/
│ │ │ └── test.cpp
│ │ └── unit_test.mk
│ └── TestSvc/
│ ├── Makefile
│ ├── TestSvc.json
│ ├── TestSvc.npdm.json
│ └── source/
│ ├── doctest.h
│ ├── test_main.cpp
│ ├── test_preemption_priority.cpp
│ ├── test_set_heap_size.cpp
│ ├── test_set_memory_permission.cpp
│ ├── test_sleep_thread.cpp
│ ├── test_thread_creation.arch.arm64.s
│ ├── test_thread_creation.cpp
│ ├── test_thread_pinning.cpp
│ ├── util_check_memory.hpp
│ ├── util_common.hpp
│ ├── util_scoped_heap.hpp
│ └── util_test_framework.hpp
├── thermosphere/
│ ├── .gitignore
│ ├── Makefile
│ ├── README.md
│ ├── linker.ld
│ ├── linker.specs
│ └── src/
│ ├── exceptions.c
│ ├── exceptions.h
│ ├── main.c
│ ├── regs.h
│ └── start.s
├── troposphere/
│ ├── Makefile
│ ├── daybreak/
│ │ ├── Makefile
│ │ ├── nanovg/
│ │ │ ├── .gitignore
│ │ │ ├── .gitrepo
│ │ │ ├── LICENSE
│ │ │ ├── Makefile
│ │ │ ├── README.md
│ │ │ ├── include/
│ │ │ │ ├── nanovg/
│ │ │ │ │ ├── dk_renderer.hpp
│ │ │ │ │ ├── fontstash.h
│ │ │ │ │ ├── framework/
│ │ │ │ │ │ ├── CApplication.h
│ │ │ │ │ │ ├── CCmdMemRing.h
│ │ │ │ │ │ ├── CDescriptorSet.h
│ │ │ │ │ │ ├── CExternalImage.h
│ │ │ │ │ │ ├── CIntrusiveList.h
│ │ │ │ │ │ ├── CIntrusiveTree.h
│ │ │ │ │ │ ├── CMemPool.h
│ │ │ │ │ │ ├── CShader.h
│ │ │ │ │ │ ├── FileLoader.h
│ │ │ │ │ │ └── common.h
│ │ │ │ │ ├── nanovg_gl_utils.h
│ │ │ │ │ ├── stb_image.h
│ │ │ │ │ └── stb_truetype.h
│ │ │ │ ├── nanovg.h
│ │ │ │ ├── nanovg_dk.h
│ │ │ │ └── nanovg_gl.h
│ │ │ ├── shaders/
│ │ │ │ ├── fill_aa_fsh.glsl
│ │ │ │ ├── fill_fsh.glsl
│ │ │ │ └── fill_vsh.glsl
│ │ │ └── source/
│ │ │ ├── dk_renderer.cpp
│ │ │ ├── framework/
│ │ │ │ ├── CApplication.cpp
│ │ │ │ ├── CExternalImage.cpp
│ │ │ │ ├── CIntrusiveTree.cpp
│ │ │ │ ├── CMemPool.cpp
│ │ │ │ ├── CShader.cpp
│ │ │ │ ├── FileLoader.cpp
│ │ │ │ └── LICENSE
│ │ │ └── nanovg.c
│ │ └── source/
│ │ ├── ams_su.c
│ │ ├── ams_su.h
│ │ ├── assert.hpp
│ │ ├── main.cpp
│ │ ├── service_guard.h
│ │ ├── ui.cpp
│ │ ├── ui.hpp
│ │ ├── ui_util.cpp
│ │ └── ui_util.hpp
│ ├── haze/
│ │ ├── Makefile
│ │ ├── include/
│ │ │ ├── haze/
│ │ │ │ ├── assert.hpp
│ │ │ │ ├── async_usb_server.hpp
│ │ │ │ ├── common.hpp
│ │ │ │ ├── console_main_loop.hpp
│ │ │ │ ├── device_properties.hpp
│ │ │ │ ├── event_reactor.hpp
│ │ │ │ ├── file_system_proxy.hpp
│ │ │ │ ├── ptp.hpp
│ │ │ │ ├── ptp_data_builder.hpp
│ │ │ │ ├── ptp_data_parser.hpp
│ │ │ │ ├── ptp_object_database.hpp
│ │ │ │ ├── ptp_object_heap.hpp
│ │ │ │ ├── ptp_responder.hpp
│ │ │ │ ├── ptp_responder_types.hpp
│ │ │ │ ├── results.hpp
│ │ │ │ └── usb_session.hpp
│ │ │ └── haze.hpp
│ │ └── source/
│ │ ├── async_usb_server.cpp
│ │ ├── console_fsh.glsl
│ │ ├── console_vsh.glsl
│ │ ├── device_properties.cpp
│ │ ├── event_reactor.cpp
│ │ ├── gpu_console.c
│ │ ├── main.cpp
│ │ ├── ptp_object_database.cpp
│ │ ├── ptp_object_heap.cpp
│ │ ├── ptp_responder.cpp
│ │ ├── ptp_responder_android_operations.cpp
│ │ ├── ptp_responder_mtp_operations.cpp
│ │ ├── ptp_responder_ptp_operations.cpp
│ │ └── usb_session.cpp
│ └── reboot_to_payload/
│ ├── Makefile
│ └── source/
│ ├── ams_bpc.c
│ ├── ams_bpc.h
│ ├── main.c
│ └── service_guard.h
└── utilities/
├── erpt.py
├── insert_splash_screen.py
└── nxo64.py
Showing preview only (1,387K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (13546 symbols across 1488 files)
FILE: emummc/source/FS/FS.h
type fs_nand_patrol_t (line 43) | typedef struct _fs_nand_patrol_t
FILE: emummc/source/FS/FS_offsets.c
function fs_offsets_t (line 181) | const fs_offsets_t *get_fs_offsets(enum FS_VER version) {
FILE: emummc/source/FS/FS_offsets.h
type fs_offsets_nintendo_path_t (line 24) | typedef struct {
type fs_offsets_t (line 30) | typedef struct {
type FS_VER (line 57) | enum FS_VER
FILE: emummc/source/FS/FS_structs.h
type sdmmc_dma_buffer_t (line 23) | typedef struct
type sdmmc_accessor_vt_t (line 32) | typedef struct sdmmc_accessor_vt
type mmc_obj_t (line 46) | typedef struct
type sdmmc_accessor_t (line 54) | typedef struct
FILE: emummc/source/FS/FS_versions.h
type FS_VER (line 22) | enum FS_VER
FILE: emummc/source/emmc/nx_emmc.c
function nx_emmc_part_read (line 21) | int nx_emmc_part_read(sdmmc_storage_t *storage, emmc_part_t *part, u32 s...
function nx_emmc_part_write (line 29) | int nx_emmc_part_write(sdmmc_storage_t *storage, emmc_part_t *part, u32 ...
FILE: emummc/source/emmc/nx_emmc.h
type gpt_entry_t (line 23) | typedef struct _gpt_entry_t
type gpt_header_t (line 33) | typedef struct _gpt_header_t
type emmc_part_t (line 56) | typedef struct _emmc_part_t
FILE: emummc/source/emmc/nx_sd.c
function u32 (line 28) | u32 nx_sd_mode_get()
function nx_sd_init_retry (line 33) | int nx_sd_init_retry(bool power_cycle)
function nx_sd_initialize (line 70) | bool nx_sd_initialize(bool power_cycle)
FILE: emummc/source/emmc/sdmmc.c
function u32 (line 36) | static inline u32 unstuff_bits(u32 *resp, u32 start, u32 size)
function sdmmc_calculate_dma_addr (line 52) | intptr_t sdmmc_calculate_dma_addr(sdmmc_accessor_t *_this, void *buf, un...
function sdmmc_calculate_dma_index (line 92) | int sdmmc_calculate_dma_index(sdmmc_accessor_t *_this, void *buf, unsign...
function sdmmc_calculate_fitting_dma_index (line 131) | int sdmmc_calculate_fitting_dma_index(sdmmc_accessor_t *_this, unsigned ...
function _sdmmc_storage_check_result (line 164) | static int _sdmmc_storage_check_result(u32 res)
function _sdmmc_storage_execute_cmd_type1_ex (line 181) | static int _sdmmc_storage_execute_cmd_type1_ex(sdmmc_storage_t *storage,...
function _sdmmc_storage_execute_cmd_type1 (line 199) | static int _sdmmc_storage_execute_cmd_type1(sdmmc_storage_t *storage, u3...
function _sdmmc_storage_go_idle_state (line 205) | static int _sdmmc_storage_go_idle_state(sdmmc_storage_t *storage)
function _sdmmc_storage_get_cid (line 213) | static int _sdmmc_storage_get_cid(sdmmc_storage_t *storage, void *buf)
function _sdmmc_storage_select_card (line 225) | static int _sdmmc_storage_select_card(sdmmc_storage_t *storage)
function _sdmmc_storage_get_csd (line 230) | static int _sdmmc_storage_get_csd(sdmmc_storage_t *storage, void *buf)
function _sdmmc_storage_set_blocklen (line 242) | static int _sdmmc_storage_set_blocklen(sdmmc_storage_t *storage, u32 blo...
function _sdmmc_storage_get_status (line 247) | static int _sdmmc_storage_get_status(sdmmc_storage_t *storage, u32 *resp...
function _sdmmc_storage_check_status (line 252) | static int _sdmmc_storage_check_status(sdmmc_storage_t *storage)
function _sdmmc_storage_readwrite_ex (line 258) | static int _sdmmc_storage_readwrite_ex(sdmmc_storage_t *storage, u32 *bl...
function sdmmc_storage_end (line 284) | int sdmmc_storage_end(sdmmc_storage_t *storage)
function _sdmmc_storage_readwrite (line 296) | static int _sdmmc_storage_readwrite(sdmmc_storage_t *storage, u32 sector...
function sdmmc_storage_read (line 363) | int sdmmc_storage_read(sdmmc_storage_t *storage, u32 sector, u32 num_sec...
function sdmmc_storage_write (line 416) | int sdmmc_storage_write(sdmmc_storage_t *storage, u32 sector, u32 num_se...
function _mmc_storage_get_op_cond_inner (line 473) | static int _mmc_storage_get_op_cond_inner(sdmmc_storage_t *storage, u32 ...
function _mmc_storage_get_op_cond (line 499) | static int _mmc_storage_get_op_cond(sdmmc_storage_t *storage, u32 power)
function _mmc_storage_set_relative_addr (line 525) | static int _mmc_storage_set_relative_addr(sdmmc_storage_t *storage)
function _mmc_storage_parse_cid (line 530) | static void _mmc_storage_parse_cid(sdmmc_storage_t *storage)
function _mmc_storage_parse_csd (line 575) | static void _mmc_storage_parse_csd(sdmmc_storage_t *storage)
function _mmc_storage_parse_ext_csd (line 586) | static void _mmc_storage_parse_ext_csd(sdmmc_storage_t *storage, u8 *buf)
function _mmc_storage_get_ext_csd (line 606) | static int _mmc_storage_get_ext_csd(sdmmc_storage_t *storage, void *buf)
function _mmc_storage_switch (line 629) | static int _mmc_storage_switch(sdmmc_storage_t *storage, u32 arg)
function _mmc_storage_switch_buswidth (line 634) | static int _mmc_storage_switch_buswidth(sdmmc_storage_t *storage, u32 bu...
function _mmc_storage_enable_HS (line 662) | static int _mmc_storage_enable_HS(sdmmc_storage_t *storage, int check)
function _mmc_storage_enable_HS200 (line 682) | static int _mmc_storage_enable_HS200(sdmmc_storage_t *storage)
function _mmc_storage_enable_HS400 (line 699) | static int _mmc_storage_enable_HS400(sdmmc_storage_t *storage)
function _mmc_storage_enable_highspeed (line 724) | static int _mmc_storage_enable_highspeed(sdmmc_storage_t *storage, u32 c...
function _mmc_storage_enable_bkops (line 746) | static int _mmc_storage_enable_bkops(sdmmc_storage_t *storage)
function sdmmc_storage_init_mmc (line 754) | int sdmmc_storage_init_mmc(sdmmc_storage_t *storage, sdmmc_t *sdmmc, u32...
function sdmmc_storage_set_mmc_partition (line 838) | int sdmmc_storage_set_mmc_partition(sdmmc_storage_t *storage, u32 partit...
function _sd_storage_execute_app_cmd (line 855) | static int _sd_storage_execute_app_cmd(sdmmc_storage_t *storage, u32 exp...
function _sd_storage_execute_app_cmd_type1 (line 864) | static int _sd_storage_execute_app_cmd_type1(sdmmc_storage_t *storage, u...
function _sd_storage_send_if_cond (line 872) | static int _sd_storage_send_if_cond(sdmmc_storage_t *storage)
function _sd_storage_get_op_cond_once (line 886) | static int _sd_storage_get_op_cond_once(sdmmc_storage_t *storage, u32 *c...
function _sd_storage_get_op_cond (line 904) | static int _sd_storage_get_op_cond(sdmmc_storage_t *storage, int is_vers...
function _sd_storage_get_rca (line 949) | static int _sd_storage_get_rca(sdmmc_storage_t *storage)
function _sd_storage_parse_scr (line 979) | static void _sd_storage_parse_scr(sdmmc_storage_t *storage)
function _sd_storage_get_scr (line 996) | int _sd_storage_get_scr(sdmmc_storage_t *storage, u8 *buf)
function _sd_storage_switch_get (line 1027) | int _sd_storage_switch_get(sdmmc_storage_t *storage, void *buf)
function _sd_storage_switch (line 1048) | int _sd_storage_switch(sdmmc_storage_t *storage, void *buf, int mode, in...
function _sd_storage_set_current_limit (line 1072) | void _sd_storage_set_current_limit(sdmmc_storage_t *storage, u16 current...
function _sd_storage_enable_highspeed (line 1109) | int _sd_storage_enable_highspeed(sdmmc_storage_t *storage, u32 hs_type, ...
function _sd_storage_enable_uhs_low_volt (line 1138) | int _sd_storage_enable_uhs_low_volt(sdmmc_storage_t *storage, u32 type, ...
function _sd_storage_enable_hs_high_volt (line 1219) | int _sd_storage_enable_hs_high_volt(sdmmc_storage_t *storage, u8 *buf)
function _sd_storage_parse_cid (line 1243) | static void _sd_storage_parse_cid(sdmmc_storage_t *storage)
function _sd_storage_parse_csd (line 1261) | static void _sd_storage_parse_csd(sdmmc_storage_t *storage)
function _sdmmc_storage_get_low_voltage_support (line 1283) | static bool _sdmmc_storage_get_low_voltage_support(u32 bus_width, u32 type)
function sdmmc_storage_init_sd (line 1300) | int sdmmc_storage_init_sd(sdmmc_storage_t *storage, sdmmc_t *sdmmc, u32 ...
function _gc_storage_custom_cmd (line 1433) | int _gc_storage_custom_cmd(sdmmc_storage_t *storage, void *buf)
function sdmmc_storage_init_gc (line 1460) | int sdmmc_storage_init_gc(sdmmc_storage_t *storage, sdmmc_t *sdmmc)
FILE: emummc/source/emmc/sdmmc.h
type mmc_cid_t (line 25) | typedef struct _mmc_cid
type mmc_csd_t (line 39) | typedef struct _mmc_csd
type mmc_ext_csd_t (line 55) | typedef struct _mmc_ext_csd
type sd_scr_t (line 72) | typedef struct _sd_scr
type sd_ssr_t (line 80) | typedef struct _sd_ssr
type sdmmc_storage_t (line 91) | typedef struct _sdmmc_storage_t
FILE: emummc/source/emmc/sdmmc_driver.c
function sdmmc_get_io_power (line 42) | int sdmmc_get_io_power(sdmmc_t *sdmmc)
function _sdmmc_set_io_power (line 54) | static int _sdmmc_set_io_power(sdmmc_t *sdmmc, u32 power)
function u32 (line 80) | u32 sdmmc_get_bus_width(sdmmc_t *sdmmc)
function sdmmc_set_bus_width (line 90) | void sdmmc_set_bus_width(sdmmc_t *sdmmc, u32 bus_width)
function sdmmc_save_tap_value (line 102) | void sdmmc_save_tap_value(sdmmc_t *sdmmc)
function _sdmmc_config_tap_val (line 108) | static int _sdmmc_config_tap_val(sdmmc_t *sdmmc, u32 type)
function _sdmmc_commit_changes (line 135) | static int _sdmmc_commit_changes(sdmmc_t *sdmmc)
function _sdmmc_pad_config_fallback (line 140) | static void _sdmmc_pad_config_fallback(sdmmc_t *sdmmc, u32 power)
function _sdmmc_autocal_execute (line 175) | static void _sdmmc_autocal_execute(sdmmc_t *sdmmc, u32 power)
function _sdmmc_dll_cal_execute (line 232) | static int _sdmmc_dll_cal_execute(sdmmc_t *sdmmc)
function _sdmmc_reset (line 271) | static void _sdmmc_reset(sdmmc_t *sdmmc)
function _sdmmc_reset_all (line 280) | static void _sdmmc_reset_all(sdmmc_t *sdmmc)
function sdmmc_setup_clock (line 289) | int sdmmc_setup_clock(sdmmc_t *sdmmc, u32 type)
function _sdmmc_card_clock_enable (line 373) | static void _sdmmc_card_clock_enable(sdmmc_t *sdmmc)
function _sdmmc_sd_clock_disable (line 387) | static void _sdmmc_sd_clock_disable(sdmmc_t *sdmmc)
function sdmmc_card_clock_powersave (line 393) | void sdmmc_card_clock_powersave(sdmmc_t *sdmmc, int powersave_enable)
function _sdmmc_cache_rsp (line 412) | static int _sdmmc_cache_rsp(sdmmc_t *sdmmc, u32 *rsp, u32 size, u32 type)
function sdmmc_get_rsp (line 461) | int sdmmc_get_rsp(sdmmc_t *sdmmc, u32 *rsp, u32 size, u32 type)
function _sdmmc_wait_cmd_data_inhibit (line 493) | static int _sdmmc_wait_cmd_data_inhibit(sdmmc_t *sdmmc, bool wait_dat)
function _sdmmc_wait_card_busy (line 519) | static int _sdmmc_wait_card_busy(sdmmc_t *sdmmc)
function _sdmmc_setup_read_small_block (line 534) | static int _sdmmc_setup_read_small_block(sdmmc_t *sdmmc)
function _sdmmc_send_cmd (line 556) | static int _sdmmc_send_cmd(sdmmc_t *sdmmc, sdmmc_cmd_t *cmd, bool is_dat...
function _sdmmc_send_tuning_cmd (line 594) | static void _sdmmc_send_tuning_cmd(sdmmc_t *sdmmc, u32 cmd)
function _sdmmc_tuning_execute_once (line 604) | static int _sdmmc_tuning_execute_once(sdmmc_t *sdmmc, u32 cmd)
function sdmmc_tuning_execute (line 648) | int sdmmc_tuning_execute(sdmmc_t *sdmmc, u32 type, u32 cmd)
function _sdmmc_enable_internal_clock (line 697) | static int _sdmmc_enable_internal_clock(sdmmc_t *sdmmc)
function _sdmmc_autocal_config_offset (line 723) | static int _sdmmc_autocal_config_offset(sdmmc_t *sdmmc, u32 power)
function _sdmmc_enable_interrupts (line 769) | static void _sdmmc_enable_interrupts(sdmmc_t *sdmmc)
function _sdmmc_mask_interrupts (line 777) | static void _sdmmc_mask_interrupts(sdmmc_t *sdmmc)
function _sdmmc_check_mask_interrupt (line 783) | static int _sdmmc_check_mask_interrupt(sdmmc_t *sdmmc, u16 *pout, u16 mask)
function _sdmmc_wait_response (line 808) | static int _sdmmc_wait_response(sdmmc_t *sdmmc)
function _sdmmc_stop_transmission_inner (line 828) | static int _sdmmc_stop_transmission_inner(sdmmc_t *sdmmc, u32 *rsp)
function sdmmc_stop_transmission (line 855) | int sdmmc_stop_transmission(sdmmc_t *sdmmc, u32 *rsp)
function _sdmmc_config_dma (line 882) | static int _sdmmc_config_dma(sdmmc_t *sdmmc, u32 *blkcnt_out, sdmmc_req_...
function _sdmmc_update_dma (line 928) | static int _sdmmc_update_dma(sdmmc_t *sdmmc)
function _sdmmc_execute_cmd_inner (line 969) | static int _sdmmc_execute_cmd_inner(sdmmc_t *sdmmc, sdmmc_cmd_t *cmd, sd...
function sdmmc_get_sd_power_enabled (line 1059) | int sdmmc_get_sd_power_enabled()
function sdmmc_get_sd_inserted (line 1064) | bool sdmmc_get_sd_inserted()
function _sdmmc_config_sdmmc1_schmitt (line 1069) | static void _sdmmc_config_sdmmc1_schmitt()
function _sdmmc_config_sdmmc2_schmitt (line 1079) | static void _sdmmc_config_sdmmc2_schmitt()
function _sdmmc_config_sdmmc1_pads (line 1093) | static void _sdmmc_config_sdmmc1_pads(bool discharge)
function _sdmmc_config_sdmmc1 (line 1118) | static int _sdmmc_config_sdmmc1(bool t210b01)
function _sdmmc_config_emmc (line 1190) | static void _sdmmc_config_emmc(u32 id, bool t210b01)
function sdmmc_init (line 1218) | int sdmmc_init(sdmmc_t *sdmmc, u32 id, u32 power, u32 bus_width, u32 typ...
function sdmmc1_disable_power (line 1305) | void sdmmc1_disable_power()
function sdmmc_end (line 1338) | void sdmmc_end(sdmmc_t *sdmmc)
function sdmmc_init_cmd (line 1356) | void sdmmc_init_cmd(sdmmc_cmd_t *cmdbuf, u16 cmd, u32 arg, u32 rsp_type,...
function sdmmc_execute_cmd (line 1364) | int sdmmc_execute_cmd(sdmmc_t *sdmmc, sdmmc_cmd_t *cmd, sdmmc_req_t *req...
function sdmmc_enable_low_voltage (line 1391) | int sdmmc_enable_low_voltage(sdmmc_t *sdmmc)
FILE: emummc/source/emmc/sdmmc_driver.h
type sdmmc_t (line 210) | typedef struct _sdmmc_t
type sdmmc_cmd_t (line 230) | typedef struct _sdmmc_cmd_t
type sdmmc_req_t (line 239) | typedef struct _sdmmc_req_t
FILE: emummc/source/emmc/sdmmc_t210.h
type t210_sdmmc_t (line 32) | typedef struct _t210_sdmmc_t
FILE: emummc/source/emuMMC/emummc.c
function _sdmmc_ensure_device_attached (line 56) | static void _sdmmc_ensure_device_attached(void)
function _sdmmc_ensure_initialized (line 68) | static void _sdmmc_ensure_initialized(void)
function _file_based_update_filename (line 92) | static void _file_based_update_filename(char *outFilename, unsigned int ...
function _file_based_emmc_finalize (line 97) | static void _file_based_emmc_finalize(void)
function _nand_patrol_ensure_integrity (line 115) | static void _nand_patrol_ensure_integrity(void)
function sdmmc_finalize (line 164) | void sdmmc_finalize(void)
function _file_based_emmc_initialize (line 172) | static void _file_based_emmc_initialize(void)
function sdmmc_initialize (line 230) | bool sdmmc_initialize(void)
function sdmmc_accessor_t (line 268) | sdmmc_accessor_t *sdmmc_accessor_get(int mmc_id)
function mutex_lock_handler (line 289) | void mutex_lock_handler(int mmc_id)
function mutex_unlock_handler (line 297) | void mutex_unlock_handler(int mmc_id)
function sdmmc_nand_get_active_partition_index (line 305) | int sdmmc_nand_get_active_partition_index()
function emummc_read_write_inner (line 320) | static uint64_t emummc_read_write_inner(void *buf, unsigned int sector, ...
function sdmmc_wrapper_controller_open (line 404) | uint64_t sdmmc_wrapper_controller_open(int mmc_id)
function sdmmc_wrapper_controller_close (line 429) | uint64_t sdmmc_wrapper_controller_close(int mmc_id)
function sdmmc_wrapper_read (line 458) | uint64_t sdmmc_wrapper_read(void *buf, uint64_t bufSize, int mmc_id, uns...
function sdmmc_wrapper_write (line 527) | uint64_t sdmmc_wrapper_write(int mmc_id, unsigned int sector, unsigned i...
FILE: emummc/source/emuMMC/emummc.h
type sdmmc_accessor_t (line 43) | typedef sdmmc_accessor_t *(*_sdmmc_accessor_gc)();
type sdmmc_accessor_t (line 44) | typedef sdmmc_accessor_t *(*_sdmmc_accessor_sd)();
type sdmmc_accessor_t (line 45) | typedef sdmmc_accessor_t *(*_sdmmc_accessor_nand)();
type file_based_ctxt (line 63) | typedef struct _file_based_ctxt
FILE: emummc/source/emuMMC/emummc_ctx.h
type emuMMC_Type (line 27) | enum emuMMC_Type
type emuMMC_ctx_t (line 40) | typedef struct _emuMMC_ctx_t
FILE: emummc/source/libs/fatfs/diskio.c
function DSTATUS (line 19) | DSTATUS disk_status (
function DSTATUS (line 29) | DSTATUS disk_initialize (
function DRESULT (line 39) | DRESULT disk_read (
function DRESULT (line 52) | DRESULT disk_write (
function DRESULT (line 65) | DRESULT disk_ioctl (
FILE: emummc/source/libs/fatfs/diskio.h
type BYTE (line 15) | typedef BYTE DSTATUS;
type DRESULT (line 18) | typedef enum {
FILE: emummc/source/libs/fatfs/ff.c
type FILESEM (line 278) | typedef struct {
function WORD (line 597) | static WORD ld_word (const BYTE* ptr) /* Load a 2-byte little-endian wo...
function DWORD (line 606) | static DWORD ld_dword (const BYTE* ptr) /* Load a 4-byte little-endian w...
function QWORD (line 618) | static QWORD ld_qword (const BYTE* ptr) /* Load an 8-byte little-endian ...
function st_word (line 635) | static void st_word (BYTE* ptr, WORD val) /* Store a 2-byte word in litt...
function st_dword (line 641) | static void st_dword (BYTE* ptr, DWORD val) /* Store a 4-byte word in li...
function st_qword (line 650) | static void st_qword (BYTE* ptr, QWORD val) /* Store an 8-byte word in l...
function mem_cpy (line 671) | static void mem_cpy (void* dst, const void* src, UINT cnt)
function mem_set (line 685) | static void mem_set (void* dst, int val, UINT cnt)
function mem_cmp (line 696) | static int mem_cmp (const void* dst, const void* src, UINT cnt) /* ZR:sa...
function chk_chr (line 710) | static int chk_chr (const char* str, int chr) /* NZ:contained, ZR:not co...
function dbc_1st (line 718) | static int dbc_1st (BYTE c)
function dbc_2nd (line 738) | static int dbc_2nd (BYTE c)
function DWORD (line 762) | static DWORD tchar2uni ( /* Returns character in UTF-16 encoding (>=0x10...
function BYTE (line 835) | static BYTE put_utf ( /* Returns number of encoding units written (0:buf...
function lock_fs (line 924) | static int lock_fs ( /* 1:Ok, 0:timeout */
function unlock_fs (line 932) | static void unlock_fs (
function FRESULT (line 951) | static FRESULT chk_lock ( /* Check if the file can be accessed */
function enq_lock (line 978) | static int enq_lock (void) /* Check if an entry is available for a new o...
function UINT (line 987) | static UINT inc_lock ( /* Increment object open counter and returns its ...
function FRESULT (line 1018) | static FRESULT dec_lock ( /* Decrement object open counter */
function clear_lock (line 1040) | static void clear_lock ( /* Clear lock entries of the volume */
function FRESULT (line 1059) | static FRESULT sync_window ( /* Returns FR_OK or FR_DISK_ERR */
function FRESULT (line 1081) | static FRESULT move_window ( /* Returns FR_OK or FR_DISK_ERR */
function FRESULT (line 1112) | static FRESULT sync_fs ( /* Returns FR_OK or FR_DISK_ERR */
function DWORD (line 1149) | static DWORD clst2sect ( /* !=0:Sector number, 0:Failed (invalid cluster...
function DWORD (line 1166) | static DWORD get_fat ( /* 0xFFFFFFFF:Disk error, 1:Internal error, 2..0...
function FRESULT (line 1243) | static FRESULT put_fat ( /* FR_OK(0):succeeded, !=0:error */
function DWORD (line 1308) | static DWORD find_bitmap ( /* 0:Not found, 2..:Cluster block found, 0xFF...
function FRESULT (line 1348) | static FRESULT change_bitmap (
function FRESULT (line 1384) | static FRESULT fill_first_frag (
function FRESULT (line 1407) | static FRESULT fill_last_frag (
function FRESULT (line 1433) | static FRESULT remove_chain ( /* FR_OK(0):succeeded, !=0:error */
function DWORD (line 1528) | static DWORD create_chain ( /* 0:No free cluster, 1:Internal error, 0xFF...
function DWORD (line 1631) | static DWORD clmt_clust ( /* <2:Error, >=2:Cluster number */
function FRESULT (line 1661) | static FRESULT dir_clear ( /* Returns FR_OK or FR_DISK_ERR */
function FRESULT (line 1700) | static FRESULT dir_sdi ( /* FR_OK(0):succeeded, !=0:error */
function FRESULT (line 1748) | static FRESULT dir_next ( /* FR_OK(0):succeeded, FR_NO_FILE:End of table...
function DWORD (line 1851) | static DWORD ld_clust ( /* Returns the top cluster value of the SFN entr...
function st_clust (line 1868) | static void st_clust (
function cmp_lfn (line 1888) | static int cmp_lfn ( /* 1:matched, 0:not matched */
function pick_lfn (line 1924) | static int pick_lfn ( /* 1:succeeded, 0:buffer overflow or invalid LFN e...
function put_lfn (line 1962) | static void put_lfn (
function gen_numname (line 1999) | static void gen_numname (
function BYTE (line 2057) | static BYTE sum_sfn (
function WORD (line 2079) | static WORD xdir_sum ( /* Get checksum of the directoly entry block */
function WORD (line 2100) | static WORD xname_sum ( /* Get check sum (to be used as hash) of the fil...
function DWORD (line 2118) | static DWORD xsum32 ( /* Returns 32-bit checksum */
function get_xfileinfo (line 2134) | static void get_xfileinfo (
function FRESULT (line 2175) | static FRESULT load_xdir ( /* FR_INT_ERR: invalid entry block */
function init_alloc_info (line 2226) | static void init_alloc_info (
function FRESULT (line 2244) | static FRESULT load_obj_xdir (
function FRESULT (line 2273) | static FRESULT store_xdir (
function create_xdir (line 2305) | static void create_xdir (
function FRESULT (line 2351) | static FRESULT dir_read (
function FRESULT (line 2429) | static FRESULT dir_find ( /* FR_OK(0):succeeded, !=0:error */
function FRESULT (line 2510) | static FRESULT dir_register ( /* FR_OK:succeeded, FR_DENIED:no free entr...
function FRESULT (line 2616) | static FRESULT dir_remove ( /* FR_OK:Succeeded, FR_DISK_ERR:A disk error */
function get_fileinfo (line 2662) | static void get_fileinfo (
function DWORD (line 2768) | static DWORD get_achar ( /* Get a character and advances ptr */
function pattern_matching (line 2799) | static int pattern_matching ( /* 0:not matched, 1:matched */
function FRESULT (line 2846) | static FRESULT create_name ( /* FR_OK: successful, FR_INVALID_NAME: coul...
function FRESULT (line 3043) | static FRESULT follow_path ( /* FR_OK(0): successful, !=0: error code */
function get_ldnumber (line 3130) | static int get_ldnumber ( /* Returns logical drive number (-1:invalid dr...
function BYTE (line 3204) | static BYTE check_fs ( /* 0:FAT, 1:exFAT, 2:Valid BS but not FAT, 3:Not ...
function FRESULT (line 3231) | static FRESULT find_volume ( /* FR_OK(0): successful, !=0: an error occu...
function FRESULT (line 3497) | static FRESULT validate ( /* Returns FR_OK or FR_INVALID_OBJECT */
function FRESULT (line 3541) | FRESULT f_mount (
function FRESULT (line 3592) | FRESULT f_open (
function FRESULT (line 3782) | FRESULT f_read (
function FRESULT (line 3902) | FRESULT f_read_fast (
function FRESULT (line 4005) | FRESULT f_write (
function FRESULT (line 4144) | FRESULT f_write_fast (
function FRESULT (line 4254) | FRESULT f_sync (
function FRESULT (line 4335) | FRESULT f_close (
function FRESULT (line 4371) | FRESULT f_chdrive (
function FRESULT (line 4388) | FRESULT f_chdir (
function FRESULT (line 4450) | FRESULT f_getcwd (
function FRESULT (line 4550) | FRESULT f_lseek (
function DWORD (line 4712) | DWORD *f_expand_cltbl (
function FRESULT (line 4742) | FRESULT f_opendir (
function FRESULT (line 4808) | FRESULT f_closedir (
function FRESULT (line 4838) | FRESULT f_readdir (
function FRESULT (line 4874) | FRESULT f_findnext (
function FRESULT (line 4899) | FRESULT f_findfirst (
function FRESULT (line 4926) | FRESULT f_stat (
function FRESULT (line 4961) | FRESULT f_getfree (
function FRESULT (line 5050) | FRESULT f_truncate (
function FRESULT (line 5100) | FRESULT f_unlink (
function FRESULT (line 5194) | FRESULT f_mkdir (
function FRESULT (line 5278) | FRESULT f_rename (
function FRESULT (line 5388) | FRESULT f_chmod (
function FRESULT (line 5435) | FRESULT f_utime (
function FRESULT (line 5482) | FRESULT f_getlabel (
function FRESULT (line 5577) | FRESULT f_setlabel (
function FRESULT (line 5697) | FRESULT f_expand (
function FRESULT (line 5787) | FRESULT f_forward (
function FRESULT (line 5858) | FRESULT f_mkfs (
function FRESULT (line 6323) | FRESULT f_fdisk (
function TCHAR (line 6406) | TCHAR* f_gets (
type putbuff (line 6534) | typedef struct { /* Putchar output buffer and work area */
function putc_bfd (line 6547) | static void putc_bfd ( /* Buffered write with code conversion */
function putc_flush (line 6678) | static int putc_flush ( /* Flush left characters in the buffer */
function putc_init (line 6691) | static void putc_init ( /* Initialize write buffer */
function f_putc (line 6702) | int f_putc (
function f_puts (line 6722) | int f_puts (
function f_printf (line 6742) | int f_printf (
function FRESULT (line 6860) | FRESULT f_setcp (
FILE: emummc/source/libs/fatfs/ff.h
type PARTITION (line 41) | typedef struct {
type WCHAR (line 62) | typedef WCHAR TCHAR;
type TCHAR (line 66) | typedef char TCHAR;
type DWORD (line 70) | typedef DWORD TCHAR;
type TCHAR (line 76) | typedef char TCHAR;
type QWORD (line 88) | typedef QWORD FSIZE_t;
type DWORD (line 90) | typedef DWORD FSIZE_t;
type FATFS (line 97) | typedef struct {
type FFOBJID (line 147) | typedef struct {
type FIL (line 170) | typedef struct {
type DIR (line 193) | typedef struct {
type FILINFO (line 212) | typedef struct {
type FRESULT (line 229) | typedef enum {
FILE: emummc/source/libs/fatfs/ffsystem.c
function ff_memfree (line 31) | void ff_memfree (
FILE: emummc/source/libs/fatfs/ffunicode.c
function WCHAR (line 255) | WCHAR ff_uni2oem ( /* Returns OEM code character, zero on error */
function WCHAR (line 277) | WCHAR ff_oem2uni ( /* Returns Unicode character, zero on error */
function WCHAR (line 308) | WCHAR ff_uni2oem ( /* Returns OEM code character, zero on error */
function WCHAR (line 344) | WCHAR ff_oem2uni ( /* Returns Unicode character, zero on error */
function WCHAR (line 391) | WCHAR ff_uni2oem ( /* Returns OEM code character, zero on error */
function WCHAR (line 443) | WCHAR ff_oem2uni ( /* Returns Unicode character, zero on error */
function DWORD (line 497) | DWORD ff_wtoupper ( /* Returns up-converted code point */
FILE: emummc/source/main.c
type nn_clkrst_session_vt_t (line 107) | typedef struct
type nn_clkrst_session_t (line 121) | typedef struct
function Result (line 126) | Result clkrst_set_min_v_clock_rate(nn_clkrst_session_t **_this, uint32_t...
function __initheap (line 142) | void __initheap(void)
function _receive_process_handle_thread (line 155) | static void _receive_process_handle_thread(void *_session_handle) {
function _init_process_handle (line 183) | static void _init_process_handle(void) {
function _map_fs_rw (line 229) | static void _map_fs_rw(void) {
function _unmap_fs_rw (line 243) | static void _unmap_fs_rw(void) {
function _write32 (line 253) | static void _write32(uintptr_t source, u32 value) {
function hook_function (line 257) | void hook_function(uintptr_t source, uintptr_t target)
function write_nop (line 263) | void write_nop(uintptr_t source)
function write_adrp_add (line 268) | void write_adrp_add(int reg, uintptr_t pc, uintptr_t add_rel_offset, int...
function setup_hooks (line 280) | void setup_hooks(void)
function populate_function_pointers (line 302) | void populate_function_pointers(void)
function write_nops (line 320) | void write_nops(void)
function load_emummc_ctx (line 331) | static void load_emummc_ctx(void)
function setup_nintendo_paths (line 374) | void setup_nintendo_paths(void)
function __init (line 407) | void __init()
FILE: emummc/source/nx/counter.h
function u64 (line 14) | static inline u64 armGetSystemTick(void) {
function u64 (line 24) | static inline u64 armGetSystemTickFreq(void) {
function u64 (line 35) | static inline u64 armNsToTicks(u64 ns) {
function u64 (line 44) | static inline u64 armTicksToNs(u64 tick) {
FILE: emummc/source/nx/dynamic.c
function __nx_dynamic (line 10) | void __nx_dynamic(uintptr_t base, const Elf64_Dyn* dyn)
FILE: emummc/source/nx/smc.c
function smcRebootToRcm (line 11) | void smcRebootToRcm(void)
function smcRebootToIramPayload (line 20) | void smcRebootToIramPayload(void)
function smcPerformShutdown (line 29) | void smcPerformShutdown(void)
function Result (line 38) | Result smcGetConfig(SplConfigItem config_item, u64 *out_config)
function SplHardwareType (line 62) | SplHardwareType splGetHardwareType(void)
function SplSocType (line 73) | SplSocType splGetSocType(void)
function Result (line 103) | Result smcCopyToIram(uintptr_t iram_addr, const void *src_addr, u32 size)
function Result (line 123) | Result smcCopyFromIram(void *dst_addr, uintptr_t iram_addr, u32 size)
function Result (line 143) | Result smcReadWriteRegister(u32 phys_addr, u32 value, u32 mask)
function Result (line 162) | Result smcGetEmummcConfig(exo_emummc_mmc_t mmc_id, exo_emummc_config_t *...
function Result (line 185) | Result smcGenerateRandomBytes(void *dst, u32 size)
function u64 (line 206) | u64 smcGenerateRandomU64(void)
FILE: emummc/source/nx/smc.h
type SplConfigItem (line 14) | typedef enum {
type SplSocType (line 40) | typedef enum {
type SplHardwareType (line 45) | typedef enum {
type exo_emummc_type_t (line 54) | typedef enum {
type exo_emummc_mmc_t (line 60) | typedef enum {
type exo_emummc_base_config_t (line 66) | typedef struct {
type exo_emummc_partition_config_t (line 73) | typedef struct {
type exo_emummc_config_t (line 77) | typedef struct {
FILE: emummc/source/nx/svc.h
type MemoryInfo (line 10) | typedef struct {
type Permission (line 22) | typedef enum {
type SecmonArgs (line 33) | typedef struct {
function Result (line 153) | static inline Result svcWaitSynchronizationSingle(Handle handle, u64 tim...
FILE: emummc/source/power/max77620.h
type max77620_fps_src (line 327) | enum max77620_fps_src {
type max77620_chip_id (line 335) | enum max77620_chip_id {
FILE: emummc/source/power/max7762x.c
type max77620_regulator_t (line 26) | typedef struct _max77620_regulator_t
function max77620_regulator_get_status (line 67) | int max77620_regulator_get_status(u32 id)
function max77620_regulator_config_fps (line 79) | int max77620_regulator_config_fps(u32 id)
function max77620_regulator_set_voltage (line 92) | int max77620_regulator_set_voltage(u32 id, u32 mv)
function max77620_regulator_enable (line 111) | int max77620_regulator_enable(u32 id, int enable)
function max77620_regulator_set_volt_and_flags (line 130) | int max77620_regulator_set_volt_and_flags(u32 id, u32 mv, u8 flags)
function max77620_config_default (line 148) | void max77620_config_default()
FILE: emummc/source/soc/clock.c
function clock_enable (line 31) | void clock_enable(const sclock_t *clk)
function clock_disable (line 48) | void clock_disable(const sclock_t *clk)
function clock_enable_i2c5 (line 56) | void clock_enable_i2c5()
function clock_disable_i2c5 (line 61) | void clock_disable_i2c5()
function _clock_enable_pllc4 (line 66) | static void _clock_enable_pllc4()
function _clock_sdmmc_is_reset (line 123) | static int _clock_sdmmc_is_reset(u32 id)
function _clock_sdmmc_set_reset (line 139) | static void _clock_sdmmc_set_reset(u32 id)
function _clock_sdmmc_clear_reset (line 158) | static void _clock_sdmmc_clear_reset(u32 id)
function _clock_sdmmc_is_enabled (line 177) | static int _clock_sdmmc_is_enabled(u32 id)
function _clock_sdmmc_set_enable (line 193) | static void _clock_sdmmc_set_enable(u32 id)
function _clock_sdmmc_clear_enable (line 212) | static void _clock_sdmmc_clear_enable(u32 id)
function _clock_sdmmc_config_legacy_tm (line 231) | static void _clock_sdmmc_config_legacy_tm()
type clock_sdmmc_t (line 238) | typedef struct _clock_sdmmc_t
function _clock_sdmmc_config_clock_host (line 250) | static int _clock_sdmmc_config_clock_host(u32 *pclock, u32 id, u32 val)
function clock_sdmmc_config_clock_source (line 347) | void clock_sdmmc_config_clock_source(u32 *pclock, u32 id, u32 val)
function clock_sdmmc_get_card_clock_div (line 365) | void clock_sdmmc_get_card_clock_div(u32 *pclock, u16 *pdivisor, u32 type)
function clock_sdmmc_is_not_reset_and_enabled (line 421) | int clock_sdmmc_is_not_reset_and_enabled(u32 id)
function clock_sdmmc_enable (line 426) | void clock_sdmmc_enable(u32 id, u32 val)
function clock_sdmmc_disable (line 441) | void clock_sdmmc_disable(u32 id)
FILE: emummc/source/soc/clock.h
type sclock_t (line 150) | typedef struct _sclock_t
FILE: emummc/source/soc/gpio.c
function gpio_config (line 53) | void gpio_config(u32 port, u32 pins, int mode)
function gpio_output_enable (line 65) | void gpio_output_enable(u32 port, u32 pins, int enable)
function gpio_write (line 77) | void gpio_write(u32 port, u32 pins, int high)
function gpio_read (line 89) | int gpio_read(u32 port, u32 pins)
function _gpio_interrupt_clear (line 96) | static void _gpio_interrupt_clear(u32 port, u32 pins)
function gpio_interrupt_status (line 105) | int gpio_interrupt_status(u32 port, u32 pins)
function gpio_interrupt_enable (line 119) | void gpio_interrupt_enable(u32 port, u32 pins, int enable)
function gpio_interrupt_level (line 134) | void gpio_interrupt_level(u32 port, u32 pins, int high, int edge, int de...
function u32 (line 163) | u32 gpio_get_bank_irq_id(u32 port)
FILE: emummc/source/soc/i2c.c
function _i2c_load_cfg_wait (line 94) | static void _i2c_load_cfg_wait(vu32 *base)
function _i2c_send_single (line 105) | static int _i2c_send_single(u32 i2c_idx, u32 dev_addr, u8 *buf, u32 size)
function _i2c_recv_single (line 140) | static int _i2c_recv_single(u32 i2c_idx, u8 *buf, u32 size, u32 dev_addr)
function i2c_init (line 181) | void i2c_init()
function i2c_send_buf_small (line 201) | int i2c_send_buf_small(u32 i2c_idx, u32 dev_addr, u32 reg, u8 *buf, u32 ...
function i2c_recv_buf_small (line 214) | int i2c_recv_buf_small(u8 *buf, u32 size, u32 i2c_idx, u32 dev_addr, u32...
function i2c_send_byte (line 222) | int i2c_send_byte(u32 i2c_idx, u32 dev_addr, u32 reg, u8 val)
function u8 (line 227) | u8 i2c_recv_byte(u32 i2c_idx, u32 dev_addr, u32 reg)
FILE: emummc/source/soc/pinmux.c
function pinmux_config_i2c (line 20) | void pinmux_config_i2c(u32 idx)
FILE: emummc/source/soc/pmc_lp0_t210.h
type tegra_pmc_regs (line 19) | struct tegra_pmc_regs
FILE: emummc/source/utils/fatal.c
function fatal_abort (line 21) | void __attribute__((noreturn)) fatal_abort(enum FatalReason abortReason)
FILE: emummc/source/utils/fatal.h
type FatalReason (line 21) | enum FatalReason
type atmosphere_fatal_error_ctx (line 46) | typedef struct
type FatalReason (line 83) | enum FatalReason
FILE: emummc/source/utils/types.h
type s8 (line 35) | typedef int8_t s8;
type s16 (line 36) | typedef int16_t s16;
type SHORT (line 37) | typedef int16_t SHORT;
type s32 (line 38) | typedef int32_t s32;
type INT (line 39) | typedef int32_t INT;
type LONG (line 40) | typedef int64_t LONG;
type s64 (line 41) | typedef int64_t s64;
type u8 (line 42) | typedef uint8_t u8;
type BYTE (line 43) | typedef uint8_t BYTE;
type u16 (line 44) | typedef uint16_t u16;
type WORD (line 45) | typedef uint16_t WORD;
type WCHAR (line 46) | typedef uint16_t WCHAR;
type u32 (line 47) | typedef uint32_t u32;
type UINT (line 48) | typedef uint32_t UINT;
type DWORD (line 49) | typedef uint32_t DWORD;
type QWORD (line 50) | typedef uint64_t QWORD;
type u64 (line 51) | typedef uint64_t u64;
type vu8 (line 52) | typedef volatile uint8_t vu8;
type vu16 (line 53) | typedef volatile uint16_t vu16;
type vu32 (line 54) | typedef volatile uint32_t vu32;
type u32 (line 56) | typedef u32 Handle;
type u32 (line 57) | typedef u32 Result;
type boot_cfg_t (line 70) | typedef struct __attribute__((__packed__)) _boot_cfg_t
type ipl_ver_meta_t (line 79) | typedef struct __attribute__((__packed__)) _ipl_ver_meta_t
type reloc_meta_t (line 87) | typedef struct __attribute__((__packed__)) _reloc_meta_t
FILE: emummc/source/utils/util.c
type io_mapping_t (line 27) | typedef struct _io_mapping_t
function _GetIoMapping (line 36) | static inline uintptr_t _GetIoMapping(u64 io_addr, u64 io_size)
function QueryIoMapping (line 56) | intptr_t QueryIoMapping(u64 addr, u64 size)
function u64 (line 82) | u64 get_tmr_s()
function u64 (line 87) | u64 get_tmr_ms()
function u64 (line 92) | u64 get_tmr_us()
function msleep (line 98) | void msleep(u64 milliseconds)
function usleep (line 107) | void usleep(u64 microseconds)
function exec_cfg (line 115) | void exec_cfg(u32 *base, const cfg_op_t *ops, u32 num_ops)
FILE: emummc/source/utils/util.h
type cfg_op_t (line 28) | typedef struct _cfg_op_t
FILE: exosphere/loader_stub/source/secmon_loader_error.cpp
type ams::diag (line 19) | namespace ams::diag {
function NORETURN (line 21) | NORETURN void AbortImpl(const char *expr, const char *func, const char...
function NORETURN (line 26) | NORETURN void AbortImpl(const char *expr, const char *func, const char...
function NORETURN (line 31) | NORETURN void AbortImpl() {
type ams::secmon::loader (line 37) | namespace ams::secmon::loader {
function NORETURN (line 39) | NORETURN void ErrorReboot() {
FILE: exosphere/loader_stub/source/secmon_loader_error.hpp
type ams::secmon::loader (line 19) | namespace ams::secmon::loader {
FILE: exosphere/loader_stub/source/secmon_loader_main.cpp
type ams::secmon::loader (line 19) | namespace ams::secmon::loader {
function NORETURN (line 33) | NORETURN void UncompressAndExecute() {
FILE: exosphere/loader_stub/source/secmon_loader_uncompress.cpp
type ams::secmon::loader (line 19) | namespace ams::secmon::loader {
class Lz4Uncompressor (line 23) | class Lz4Uncompressor {
method Lz4Uncompressor (line 32) | Lz4Uncompressor(void *dst, size_t dst_size, const void *src, size_t ...
method Uncompress (line 36) | void Uncompress() {
method u8 (line 67) | u8 ReadByte() {
method CanRead (line 71) | bool CanRead() const {
method GetCopySize (line 75) | size_t GetCopySize(u8 control) {
method Copy (line 89) | void Copy(size_t size) {
function Uncompress (line 98) | void Uncompress(void *dst, size_t dst_size, const void *src, size_t sr...
FILE: exosphere/loader_stub/source/secmon_loader_uncompress.hpp
type ams::secmon::loader (line 19) | namespace ams::secmon::loader {
FILE: exosphere/mariko_fatal/source/fatal_abort_impl.cpp
type ams::diag (line 18) | namespace ams::diag {
function NORETURN (line 20) | NORETURN void AbortImpl() {
FILE: exosphere/mariko_fatal/source/fatal_crt0_cpp.cpp
type ams::secmon::fatal (line 20) | namespace ams::secmon::fatal {
function Initialize (line 22) | void Initialize(uintptr_t bss_start, size_t bss_end) {
FILE: exosphere/mariko_fatal/source/fatal_device_page_table.cpp
type ams::secmon::fatal (line 18) | namespace ams::secmon::fatal {
function u32 (line 51) | consteval u32 EncodeAsidRegisterValue(u8 asid) {
function Invalidate (line 70) | class EntryBase {
class PageDirectoryEntry (line 120) | class PageDirectoryEntry : public EntryBase {
method ALWAYS_INLINE (line 122) | constexpr ALWAYS_INLINE bool IsTable() const { return this->GetB...
method ALWAYS_INLINE (line 124) | ALWAYS_INLINE void SetTable(bool r, bool w, bool ns, dd::PhysicalAdd...
method ALWAYS_INLINE (line 129) | ALWAYS_INLINE void SetLargePage(bool r, bool w, bool ns, dd::Physica...
class PageTableEntry (line 135) | class PageTableEntry : public EntryBase {
method ALWAYS_INLINE (line 137) | ALWAYS_INLINE void SetPage(bool r, bool w, bool ns, dd::PhysicalAddr...
function WriteMcRegister (line 144) | void WriteMcRegister(size_t offset, u32 value) {
function u32 (line 148) | u32 ReadMcRegister(size_t offset) {
function SmmuSynchronizationBarrier (line 153) | void SmmuSynchronizationBarrier() {
function InvalidatePtc (line 157) | void InvalidatePtc() {
function InvalidatePtc (line 161) | void InvalidatePtc(dd::PhysicalAddress address) {
type TlbFlushVaMatch (line 166) | enum TlbFlushVaMatch : u32 {
function ALWAYS_INLINE (line 172) | static constexpr ALWAYS_INLINE u32 EncodeTlbFlushValue(bool match_asid...
function InvalidateTlb (line 176) | void InvalidateTlb() {
function InvalidateTlb (line 180) | void InvalidateTlb(u8 asid) {
function InvalidateTlbSection (line 184) | void InvalidateTlbSection(u8 asid, dd::PhysicalAddress address) {
function SetTable (line 188) | void SetTable(u8 asid, dd::PhysicalAddress address) {
function MapImpl (line 203) | void MapImpl(dd::PhysicalAddress phys_addr, size_t size, DeviceVirtual...
function InitializeDevicePageTableForSdmmc1 (line 301) | void InitializeDevicePageTableForSdmmc1() {
function InitializeDevicePageTableForDc (line 325) | void InitializeDevicePageTableForDc() {
FILE: exosphere/mariko_fatal/source/fatal_device_page_table.hpp
type ams::secmon::fatal (line 19) | namespace ams::secmon::fatal {
FILE: exosphere/mariko_fatal/source/fatal_display.cpp
type ams::secmon::fatal (line 22) | namespace ams::secmon::fatal {
function DoRegisterWrites (line 58) | inline void DoRegisterWrites(uintptr_t base_address, const RegisterWri...
function DoSocDependentRegisterWrites (line 64) | inline void DoSocDependentRegisterWrites(uintptr_t base_address, const...
function DoSleepOrRegisterWrites (line 72) | inline void DoSleepOrRegisterWrites(uintptr_t base_address, const Slee...
function WaitDsiTrigger (line 86) | void WaitDsiTrigger() {
function WaitDsiHostControl (line 101) | void WaitDsiHostControl() {
function EnableBacklightForVendor2050ForAula (line 114) | void EnableBacklightForVendor2050ForAula(int brightness) {
function EnableBacklightForGeneric (line 151) | void EnableBacklightForGeneric(int brightness) {
function InitializeFrameBuffer (line 161) | void InitializeFrameBuffer() {
function FinalizeFrameBuffer (line 176) | [[maybe_unused]] void FinalizeFrameBuffer() {
function PrintSuggestedErrorFix (line 207) | void PrintSuggestedErrorFix(const ams::impl::FatalErrorContext *f_ctx) {
function FinalizeDisplay (line 263) | void FinalizeDisplay() {
function InitializeDisplay (line 333) | void InitializeDisplay() {
function ShowDisplay (line 570) | void ShowDisplay(const ams::impl::FatalErrorContext *f_ctx, const Resu...
FILE: exosphere/mariko_fatal/source/fatal_display.hpp
type ams::secmon::fatal (line 19) | namespace ams::secmon::fatal {
FILE: exosphere/mariko_fatal/source/fatal_main.cpp
type ams::secmon::fatal (line 22) | namespace ams::secmon::fatal {
function ALWAYS_INLINE (line 28) | ALWAYS_INLINE const ams::impl::FatalErrorContext *GetFatalErrorContext...
function Main (line 34) | void Main() {
FILE: exosphere/mariko_fatal/source/fatal_print.cpp
type ams::secmon::fatal (line 20) | namespace ams::secmon::fatal {
function SetPixel (line 35) | void SetPixel(size_t x, size_t y, u32 color) {
function PutCarriageReturn (line 39) | void PutCarriageReturn() {
function PutNewLine (line 43) | void PutNewLine() {
function PutCharImpl (line 50) | void PutCharImpl(const char c) {
function PutChar (line 79) | void PutChar(const char c) {
function InitializeConsole (line 97) | void InitializeConsole(u32 *frame_buffer) {
function Print (line 107) | void Print(const char *fmt, ...) {
FILE: exosphere/mariko_fatal/source/fatal_print.hpp
type ams::secmon::fatal (line 19) | namespace ams::secmon::fatal {
FILE: exosphere/mariko_fatal/source/fatal_save_context.cpp
type ams::secmon::fatal (line 21) | namespace ams::secmon::fatal {
function Result (line 23) | Result SaveFatalErrorContext(const ams::impl::FatalErrorContext *ctx) {
FILE: exosphere/mariko_fatal/source/fatal_save_context.hpp
type ams::secmon::fatal (line 19) | namespace ams::secmon::fatal {
FILE: exosphere/mariko_fatal/source/fatal_sdmmc.cpp
type ams::secmon::fatal (line 19) | namespace ams::secmon::fatal {
function ALWAYS_INLINE (line 25) | ALWAYS_INLINE u8 *GetSdCardWorkBuffer() {
function ALWAYS_INLINE (line 29) | ALWAYS_INLINE u8 *GetSdCardDmaBuffer() {
function Result (line 39) | Result InitializeSdCard() {
function Result (line 54) | Result CheckSdCardConnection(sdmmc::SpeedMode *out_sm, sdmmc::BusWidth...
function Result (line 58) | Result ReadSdCard(void *dst, size_t size, size_t sector_index, size_t ...
function Result (line 84) | Result WriteSdCard(size_t sector_index, size_t sector_count, const voi...
FILE: exosphere/mariko_fatal/source/fatal_sdmmc.hpp
type ams::secmon::fatal (line 19) | namespace ams::secmon::fatal {
FILE: exosphere/mariko_fatal/source/fatal_sdmmc_c.cpp
function sdmmc_read_sd_card (line 20) | bool sdmmc_read_sd_card(void *dst, size_t size, size_t sector_index, siz...
function sdmmc_write_sd_card (line 24) | bool sdmmc_write_sd_card(size_t sector_index, size_t sector_count, const...
FILE: exosphere/mariko_fatal/source/fatal_sound.cpp
type ams::secmon::fatal (line 19) | namespace ams::secmon::fatal {
function WriteAlc5639Register (line 31) | void WriteAlc5639Register(int r, u16 val) {
function StopSound (line 37) | void StopSound() {
FILE: exosphere/mariko_fatal/source/fatal_sound.hpp
type ams::secmon::fatal (line 19) | namespace ams::secmon::fatal {
FILE: exosphere/mariko_fatal/source/fatfs/diskio.c
function DSTATUS (line 22) | DSTATUS disk_status (
function DSTATUS (line 35) | DSTATUS disk_initialize (
function DRESULT (line 48) | DRESULT disk_read (
function DRESULT (line 71) | DRESULT disk_write (
function DRESULT (line 93) | DRESULT disk_ioctl (
FILE: exosphere/mariko_fatal/source/fatfs/diskio.h
type BYTE (line 13) | typedef BYTE DSTATUS;
type DRESULT (line 16) | typedef enum {
FILE: exosphere/mariko_fatal/source/fatfs/ff.c
type FILESEM (line 283) | typedef struct {
function WORD (line 612) | static WORD ld_word (const BYTE* ptr) /* Load a 2-byte little-endian...
function DWORD (line 621) | static DWORD ld_dword (const BYTE* ptr) /* Load a 4-byte little-endian w...
function QWORD (line 633) | static QWORD ld_qword (const BYTE* ptr) /* Load an 8-byte little-endian ...
function st_word (line 650) | static void st_word (BYTE* ptr, WORD val) /* Store a 2-byte word in li...
function st_dword (line 656) | static void st_dword (BYTE* ptr, DWORD val) /* Store a 4-byte word in li...
function st_qword (line 665) | static void st_qword (BYTE* ptr, QWORD val) /* Store an 8-byte word in l...
function mem_cpy (line 686) | static void mem_cpy (void* dst, const void* src, UINT cnt)
function mem_set (line 700) | static void mem_set (void* dst, int val, UINT cnt)
function mem_cmp (line 711) | static int mem_cmp (const void* dst, const void* src, UINT cnt) /* ZR:sa...
function chk_chr (line 725) | static int chk_chr (const char* str, int chr) /* NZ:contained, ZR:not ...
function dbc_1st (line 733) | static int dbc_1st (BYTE c)
function dbc_2nd (line 753) | static int dbc_2nd (BYTE c)
function DWORD (line 777) | static DWORD tchar2uni ( /* Returns a character in UTF-16 encoding (>...
function BYTE (line 850) | static BYTE put_utf ( /* Returns number of encoding units written (0:b...
function lock_fs (line 939) | static int lock_fs ( /* 1:Ok, 0:timeout */
function unlock_fs (line 947) | static void unlock_fs (
function FRESULT (line 966) | static FRESULT chk_lock ( /* Check if the file can be accessed */
function enq_lock (line 993) | static int enq_lock (void) /* Check if an entry is available for a new ...
function UINT (line 1002) | static UINT inc_lock ( /* Increment object open counter and returns its...
function FRESULT (line 1033) | static FRESULT dec_lock ( /* Decrement object open counter */
function clear_lock (line 1055) | static void clear_lock ( /* Clear lock entries of the volume */
function FRESULT (line 1074) | static FRESULT sync_window ( /* Returns FR_OK or FR_DISK_ERR */
function FRESULT (line 1096) | static FRESULT move_window ( /* Returns FR_OK or FR_DISK_ERR */
function FRESULT (line 1127) | static FRESULT sync_fs ( /* Returns FR_OK or FR_DISK_ERR */
function LBA_t (line 1164) | static LBA_t clst2sect ( /* !=0:Sector number, 0:Failed (invalid clus...
function DWORD (line 1181) | static DWORD get_fat ( /* 0xFFFFFFFF:Disk error, 1:Internal error, ...
function FRESULT (line 1258) | static FRESULT put_fat ( /* FR_OK(0):succeeded, !=0:error */
function DWORD (line 1323) | static DWORD find_bitmap ( /* 0:Not found, 2..:Cluster block found, 0xF...
function FRESULT (line 1363) | static FRESULT change_bitmap (
function FRESULT (line 1399) | static FRESULT fill_first_frag (
function FRESULT (line 1422) | static FRESULT fill_last_frag (
function FRESULT (line 1448) | static FRESULT remove_chain ( /* FR_OK(0):succeeded, !=0:error */
function DWORD (line 1543) | static DWORD create_chain ( /* 0:No free cluster, 1:Internal error, 0xFF...
function DWORD (line 1646) | static DWORD clmt_clust ( /* <2:Error, >=2:Cluster number */
function FRESULT (line 1676) | static FRESULT dir_clear ( /* Returns FR_OK or FR_DISK_ERR */
function FRESULT (line 1715) | static FRESULT dir_sdi ( /* FR_OK(0):succeeded, !=0:error */
function FRESULT (line 1763) | static FRESULT dir_next ( /* FR_OK(0):succeeded, FR_NO_FILE:End of tab...
function DWORD (line 1866) | static DWORD ld_clust ( /* Returns the top cluster value of the SFN entr...
function st_clust (line 1883) | static void st_clust (
function cmp_lfn (line 1903) | static int cmp_lfn ( /* 1:matched, 0:not matched */
function pick_lfn (line 1939) | static int pick_lfn ( /* 1:succeeded, 0:buffer overflow or invalid LFN...
function put_lfn (line 1977) | static void put_lfn (
function gen_numname (line 2014) | static void gen_numname (
function BYTE (line 2072) | static BYTE sum_sfn (
function WORD (line 2094) | static WORD xdir_sum ( /* Get checksum of the directoly entry block */
function WORD (line 2115) | static WORD xname_sum ( /* Get check sum (to be used as hash) of the fil...
function DWORD (line 2133) | static DWORD xsum32 ( /* Returns 32-bit checksum */
function get_xfileinfo (line 2149) | static void get_xfileinfo (
function FRESULT (line 2190) | static FRESULT load_xdir ( /* FR_INT_ERR: invalid entry block */
function init_alloc_info (line 2241) | static void init_alloc_info (
function FRESULT (line 2259) | static FRESULT load_obj_xdir (
function FRESULT (line 2288) | static FRESULT store_xdir (
function create_xdir (line 2320) | static void create_xdir (
function FRESULT (line 2366) | static FRESULT dir_read (
function FRESULT (line 2444) | static FRESULT dir_find ( /* FR_OK(0):succeeded, !=0:error */
function FRESULT (line 2525) | static FRESULT dir_register ( /* FR_OK:succeeded, FR_DENIED:no free en...
function FRESULT (line 2631) | static FRESULT dir_remove ( /* FR_OK:Succeeded, FR_DISK_ERR:A disk error */
function get_fileinfo (line 2677) | static void get_fileinfo (
function DWORD (line 2783) | static DWORD get_achar ( /* Get a character and advances ptr */
function pattern_matching (line 2814) | static int pattern_matching ( /* 0:not matched, 1:matched */
function FRESULT (line 2861) | static FRESULT create_name ( /* FR_OK: successful, FR_INVALID_NAME: c...
function FRESULT (line 3062) | static FRESULT follow_path ( /* FR_OK(0): successful, !=0: error code */
function get_ldnumber (line 3149) | static int get_ldnumber ( /* Returns logical drive number (-1:invalid ...
function DWORD (line 3227) | static DWORD crc32 ( /* Returns next CRC value */
function test_gpt_header (line 3245) | static int test_gpt_header ( /* 0:Invalid, 1:Valid */
function DWORD (line 3267) | static DWORD make_rand (
function UINT (line 3295) | static UINT check_fs ( /* 0:FAT VBR, 1:exFAT VBR, 2:Not FAT and valid B...
function UINT (line 3332) | static UINT find_volume ( /* Returns BS status found in the hosting dr...
function FRESULT (line 3386) | static FRESULT mount_volume ( /* FR_OK(0): successful, !=0: an error o...
function FRESULT (line 3615) | static FRESULT validate ( /* Returns FR_OK or FR_INVALID_OBJECT */
function FRESULT (line 3659) | FRESULT f_mount (
function FRESULT (line 3707) | FRESULT f_open (
function FRESULT (line 3899) | FRESULT f_read (
function FRESULT (line 4000) | FRESULT f_write (
function FRESULT (line 4122) | FRESULT f_sync (
function FRESULT (line 4203) | FRESULT f_close (
function FRESULT (line 4239) | FRESULT f_chdrive (
function FRESULT (line 4256) | FRESULT f_chdir (
function FRESULT (line 4318) | FRESULT f_getcwd (
function FRESULT (line 4418) | FRESULT f_lseek (
function FRESULT (line 4581) | FRESULT f_opendir (
function FRESULT (line 4647) | FRESULT f_closedir (
function FRESULT (line 4677) | FRESULT f_readdir (
function FRESULT (line 4713) | FRESULT f_findnext (
function FRESULT (line 4738) | FRESULT f_findfirst (
function FRESULT (line 4765) | FRESULT f_stat (
function FRESULT (line 4800) | FRESULT f_getfree (
function FRESULT (line 4890) | FRESULT f_truncate (
function FRESULT (line 4940) | FRESULT f_unlink (
function FRESULT (line 5034) | FRESULT f_mkdir (
function FRESULT (line 5118) | FRESULT f_rename (
function FRESULT (line 5228) | FRESULT f_chmod (
function FRESULT (line 5275) | FRESULT f_utime (
function FRESULT (line 5322) | FRESULT f_getlabel (
function FRESULT (line 5417) | FRESULT f_setlabel (
function FRESULT (line 5537) | FRESULT f_expand (
function FRESULT (line 5627) | FRESULT f_forward (
function FRESULT (line 5706) | static FRESULT create_partition (
function FRESULT (line 5848) | FRESULT f_mkfs (
function FRESULT (line 6349) | FRESULT f_fdisk (
function TCHAR (line 6384) | TCHAR* f_gets (
type putbuff (line 6516) | typedef struct {
function putc_bfd (line 6531) | static void putc_bfd (putbuff* pb, TCHAR c)
function putc_flush (line 6662) | static int putc_flush (putbuff* pb)
function putc_init (line 6675) | static void putc_init (putbuff* pb, FIL* fp)
function f_putc (line 6683) | int f_putc (
function f_puts (line 6703) | int f_puts (
function f_printf (line 6723) | int f_printf (
function FRESULT (line 6841) | FRESULT f_setcp (
FILE: exosphere/mariko_fatal/source/fatfs/ff.h
type QWORD (line 41) | typedef unsigned __int64 QWORD;
type UINT (line 45) | typedef unsigned int UINT;
type BYTE (line 46) | typedef unsigned char BYTE;
type WORD (line 47) | typedef uint16_t WORD;
type DWORD (line 48) | typedef uint32_t DWORD;
type QWORD (line 49) | typedef uint64_t QWORD;
type WORD (line 50) | typedef WORD WCHAR;
type UINT (line 53) | typedef unsigned int UINT;
type BYTE (line 54) | typedef unsigned char BYTE;
type WORD (line 55) | typedef unsigned short WORD;
type DWORD (line 56) | typedef unsigned long DWORD;
type WORD (line 57) | typedef WORD WCHAR;
type PARTITION (line 64) | typedef struct {
type WCHAR (line 85) | typedef WCHAR TCHAR;
type TCHAR (line 89) | typedef char TCHAR;
type DWORD (line 93) | typedef DWORD TCHAR;
type TCHAR (line 99) | typedef char TCHAR;
type QWORD (line 114) | typedef QWORD FSIZE_t;
type QWORD (line 116) | typedef QWORD LBA_t;
type DWORD (line 118) | typedef DWORD LBA_t;
type DWORD (line 124) | typedef DWORD FSIZE_t;
type DWORD (line 125) | typedef DWORD LBA_t;
type FATFS (line 132) | typedef struct {
type FFOBJID (line 182) | typedef struct {
type FIL (line 205) | typedef struct {
type DIR (line 228) | typedef struct {
type FILINFO (line 247) | typedef struct {
type MKFS_PARM (line 264) | typedef struct {
type FRESULT (line 276) | typedef enum {
FILE: exosphere/mariko_fatal/source/fatfs/ffsystem.c
function ff_memfree (line 28) | void ff_memfree (
function ff_cre_syncobj (line 52) | int ff_cre_syncobj ( /* 1:Function succeeded, 0:Could not create the ...
function ff_del_syncobj (line 89) | int ff_del_syncobj ( /* 1:Function succeeded, 0:Could not delete due ...
function ff_req_grant (line 120) | int ff_req_grant ( /* 1:Got a grant to access the volume, 0:Could not g...
function ff_rel_grant (line 149) | void ff_rel_grant (
FILE: exosphere/mariko_fatal/source/fatfs/ffunicode.c
function WCHAR (line 15222) | WCHAR ff_uni2oem ( /* Returns OEM code character, zero on error */
function WCHAR (line 15244) | WCHAR ff_oem2uni ( /* Returns Unicode character in UTF-16, zero on erro...
function WCHAR (line 15275) | WCHAR ff_uni2oem ( /* Returns OEM code character, zero on error */
function WCHAR (line 15311) | WCHAR ff_oem2uni ( /* Returns Unicode character in UTF-16, zero on erro...
function WCHAR (line 15358) | WCHAR ff_uni2oem ( /* Returns OEM code character, zero on error */
function WCHAR (line 15410) | WCHAR ff_oem2uni ( /* Returns Unicode character in UTF-16, zero on erro...
function DWORD (line 15464) | DWORD ff_wtoupper ( /* Returns up-converted code point */
FILE: exosphere/mariko_fatal/source/fs/fatal_fs_api.cpp
type ams::fs (line 20) | namespace ams::fs {
function Result (line 34) | Result TranslateFatFsError(FRESULT res) {
function TranslateToFatFsMode (line 79) | int TranslateToFatFsMode(int mode) {
function FIL (line 93) | FIL *GetInternalFile(FileHandle handle) {
function ALWAYS_INLINE (line 97) | ALWAYS_INLINE size_t GetFileIndex(FIL *fp) {
function MountSdCard (line 105) | bool MountSdCard() {
function UnmountSdCard (line 111) | void UnmountSdCard() {
function Result (line 117) | Result CreateFile(const char *path, s64 size) {
function Result (line 131) | Result CreateDirectory(const char *path) {
function Result (line 135) | Result OpenFile(FileHandle *out_file, const char *path, int mode) {
function Result (line 153) | Result ReadFile(FileHandle handle, s64 offset, void *buffer, size_t si...
function Result (line 170) | Result ReadFile(FileHandle handle, s64 offset, void *buffer, size_t si...
function Result (line 174) | Result ReadFile(size_t *out, FileHandle handle, s64 offset, void *buff...
function Result (line 191) | Result ReadFile(size_t *out, FileHandle handle, s64 offset, void *buff...
function Result (line 195) | Result GetFileSize(s64 *out, FileHandle handle) {
function Result (line 201) | Result FlushFile(FileHandle handle) {
function Result (line 205) | Result WriteFile(FileHandle handle, s64 offset, const void *buffer, si...
function Result (line 224) | Result SetFileSize(FileHandle handle, s64 size) {
function GetFileOpenMode (line 248) | int GetFileOpenMode(FileHandle handle) {
function CloseFile (line 252) | void CloseFile(FileHandle handle) {
FILE: exosphere/mariko_fatal/source/fs/fatal_fs_api.hpp
type ams::fs (line 19) | namespace ams::fs {
type OpenMode (line 21) | enum OpenMode {
type ReadOption (line 30) | struct ReadOption {
type WriteOption (line 48) | struct WriteOption {
method HasFlushFlag (line 51) | constexpr inline bool HasFlushFlag() const {
type FileHandle (line 72) | struct FileHandle {
FILE: exosphere/program/rebootstub/source/rebootstub_power_off.cpp
type ams::rebootstub (line 18) | namespace ams::rebootstub {
function NORETURN (line 20) | NORETURN void Halt() {
function NORETURN (line 29) | NORETURN void PowerOff() {
type ams::diag (line 51) | namespace ams::diag {
function NORETURN (line 53) | NORETURN void AbortImpl() {
FILE: exosphere/program/sc7fw/source/sc7fw_dram.cpp
type ams::sc7fw (line 20) | namespace ams::sc7fw {
function UpdateEmcTiming (line 26) | void UpdateEmcTiming() {
function RequestAllPadsPowerDown (line 36) | void RequestAllPadsPowerDown(uintptr_t addr, uintptr_t expected) {
function SaveEmcFsp (line 53) | void SaveEmcFsp() {
function EnableSdramSelfRefresh (line 74) | void EnableSdramSelfRefresh() {
function EnableEmcAllSegmentsRefresh (line 135) | void EnableEmcAllSegmentsRefresh() {
function EnableDdrDeepPowerDown (line 153) | void EnableDdrDeepPowerDown() {
FILE: exosphere/program/sc7fw/source/sc7fw_dram.hpp
type ams::sc7fw (line 19) | namespace ams::sc7fw {
FILE: exosphere/program/sc7fw/source/sc7fw_main.cpp
type ams::sc7fw (line 20) | namespace ams::sc7fw {
function DisableCrail (line 26) | void DisableCrail() {
function DisableAllInterrupts (line 49) | void DisableAllInterrupts() {
function EnterSc7 (line 59) | void EnterSc7() {
function Main (line 98) | void Main() {
function NORETURN (line 102) | NORETURN void ExceptionHandler() {
type ams::diag (line 112) | namespace ams::diag {
function NORETURN (line 114) | NORETURN void AbortImpl() {
FILE: exosphere/program/sc7fw/source/sc7fw_util.hpp
type ams::sc7fw (line 19) | namespace ams::sc7fw {
FILE: exosphere/program/source/boot/secmon_boot.hpp
type ams::secmon::boot (line 19) | namespace ams::secmon::boot {
FILE: exosphere/program/source/boot/secmon_boot_cache.cpp
type ams::secmon::boot (line 19) | namespace ams::secmon::boot {
FILE: exosphere/program/source/boot/secmon_boot_cache.hpp
type ams::secmon::boot (line 19) | namespace ams::secmon::boot {
FILE: exosphere/program/source/boot/secmon_boot_config.cpp
type ams::secmon::boot (line 19) | namespace ams::secmon::boot {
function VerifyBootConfigSignature (line 21) | bool VerifyBootConfigSignature(pkg1::BootConfig &bc, const void *mod, ...
function VerifyBootConfigEcid (line 25) | bool VerifyBootConfigEcid(const pkg1::BootConfig &bc) {
FILE: exosphere/program/source/boot/secmon_boot_functions.cpp
type ams::secmon::boot (line 22) | namespace ams::secmon::boot {
function NOINLINE (line 28) | NOINLINE void DecryptPayload(uintptr_t dst, uintptr_t src, size_t size...
function u32 (line 32) | u32 GetChipId() {
function CheckVerifyResult (line 45) | void CheckVerifyResult(bool verify_result, pkg1::ErrorInfo error_info,...
function ClearIramBootCode (line 52) | void ClearIramBootCode() {
function ClearIramBootKeys (line 57) | void ClearIramBootKeys() {
function ClearIramDebugCode (line 62) | void ClearIramDebugCode() {
function WaitForNxBootloader (line 67) | void WaitForNxBootloader(const pkg1::SecureMonitorParameters ¶ms, ...
function LoadBootConfig (line 74) | void LoadBootConfig(const void *src) {
function VerifyOrClearBootConfig (line 86) | void VerifyOrClearBootConfig() {
function EnableTsc (line 109) | void EnableTsc(u64 initial_tsc_value) {
function WriteGpuCarveoutMagicNumbers (line 122) | void WriteGpuCarveoutMagicNumbers() {
function UpdateBootConfigForPackage2Header (line 146) | void UpdateBootConfigForPackage2Header(const pkg2::Package2Header &hea...
function VerifyPackage2HeaderSignature (line 156) | void VerifyPackage2HeaderSignature(pkg2::Package2Header &header, bool ...
function DecryptPackage2Header (line 164) | void DecryptPackage2Header(pkg2::Package2Meta *dst, const pkg2::Packag...
function VerifyPackage2Header (line 178) | void VerifyPackage2Header(const pkg2::Package2Meta &meta) {
function DecryptAndLoadPackage2Payloads (line 186) | void DecryptAndLoadPackage2Payloads(uintptr_t dst, const pkg2::Package...
FILE: exosphere/program/source/boot/secmon_boot_functions.hpp
type ams::secmon::boot (line 19) | namespace ams::secmon::boot {
FILE: exosphere/program/source/boot/secmon_boot_rsa.cpp
type ams::secmon::boot (line 19) | namespace ams::secmon::boot {
function VerifyRsaPssSha256 (line 29) | bool VerifyRsaPssSha256(const u8 *sig, const void *msg, size_t msg_siz...
function VerifyRsaPssSha256 (line 123) | bool VerifyRsaPssSha256(int slot, void *sig, size_t sig_size, const vo...
function VerifySignature (line 133) | bool VerifySignature(void *sig, size_t sig_size, const void *mod, size...
function VerifyHash (line 141) | bool VerifyHash(const void *hash, uintptr_t msg, size_t msg_size) {
FILE: exosphere/program/source/boot/secmon_boot_setup.cpp
type ams::secmon::boot (line 22) | namespace ams::secmon::boot {
function ValidateSystemCounters (line 26) | void ValidateSystemCounters() {
function SetupPmcRegisters (line 47) | void SetupPmcRegisters() {
function DeriveMasterKekAndDeviceKeyErista (line 73) | void DeriveMasterKekAndDeviceKeyErista(bool is_prod) {
function DeriveMasterKekAndDeviceKeyMariko (line 83) | void DeriveMasterKekAndDeviceKeyMariko(bool is_prod) {
function DeriveMasterKekAndDeviceKey (line 106) | void DeriveMasterKekAndDeviceKey(bool is_prod) {
function DeriveMasterKey (line 114) | void DeriveMasterKey() {
function SetupRandomKey (line 122) | void SetupRandomKey(int slot, se::KeySlotLockFlags flags) {
function TestKeyGeneration (line 146) | bool TestKeyGeneration(int generation, bool is_prod) {
function DetermineKeyGeneration (line 162) | int DetermineKeyGeneration(bool is_prod) {
function DeriveAllMasterKeys (line 174) | void DeriveAllMasterKeys(bool is_prod, u8 * const work_block) {
function DeriveAllDeviceMasterKeys (line 199) | void DeriveAllDeviceMasterKeys(bool is_prod, u8 * const work_block) {
function DeriveAllKeys (line 236) | void DeriveAllKeys(bool is_prod) {
function InitializeKeys (line 263) | void InitializeKeys() {
function UnmapPhysicalIdentityMappingImpl (line 311) | constexpr void UnmapPhysicalIdentityMappingImpl(u64 *l1, u64 *l2, u64 ...
function UnmapDramImpl (line 324) | constexpr void UnmapDramImpl(u64 *l1, u64 *l2, u64 *l3) {
function UnmapMarikoProgramImpl (line 330) | constexpr void UnmapMarikoProgramImpl(u64 *l1, u64 *l2, u64 *l3) {
function InitializeColdBoot (line 338) | void InitializeColdBoot() {
function UnmapPhysicalIdentityMapping (line 367) | void UnmapPhysicalIdentityMapping() {
function UnmapDram (line 379) | void UnmapDram() {
function LoadMarikoProgram (line 391) | void LoadMarikoProgram() {
FILE: exosphere/program/source/boot/secmon_crt0_cpp.cpp
type ams::secmon::boot (line 22) | namespace ams::secmon::boot {
function Initialize (line 24) | void Initialize(uintptr_t bss_start, size_t bss_end, uintptr_t boot_bs...
FILE: exosphere/program/source/boot/secmon_main.cpp
type ams::secmon (line 26) | namespace ams::secmon {
function Main (line 34) | void Main() {
FILE: exosphere/program/source/boot/secmon_make_page_table.cpp
type ams::secmon::boot (line 20) | namespace ams::secmon::boot {
function ClearMemory (line 36) | constexpr void ClearMemory(volatile u64 *start, size_t size) {
function MakePageTablesImpl (line 44) | constexpr void MakePageTablesImpl(u64 *l1, u64 *l2, u64 *l3) {
function ValidateTzramPageTables (line 150) | constexpr bool ValidateTzramPageTables() {
function MakePageTable (line 163) | void MakePageTable() {
FILE: exosphere/program/source/boot/secmon_package2.cpp
type ams::secmon::boot (line 21) | namespace ams::secmon::boot {
function CalculatePackage2Hash (line 23) | void CalculatePackage2Hash(se::Sha256Hash *dst, const pkg2::Package2Me...
function VerifyPackage2Signature (line 36) | bool VerifyPackage2Signature(pkg2::Package2Header &header, const void ...
function PrepareMasterKey (line 40) | int PrepareMasterKey(int key_generation) {
function PreparePackage2Key (line 51) | void PreparePackage2Key(int pkg2_slot, int key_generation, const void ...
function DecryptPackage2 (line 59) | void DecryptPackage2(void *dst, size_t dst_size, const void *src, size...
function VerifyPackage2Meta (line 81) | bool VerifyPackage2Meta(const pkg2::Package2Meta &meta) {
function VerifyPackage2Version (line 150) | bool VerifyPackage2Version(const pkg2::Package2Meta &meta) {
function VerifyPackage2Payloads (line 154) | bool VerifyPackage2Payloads(const pkg2::Package2Meta &meta, uintptr_t ...
FILE: exosphere/program/source/secmon_cache.cpp
type ams::secmon (line 19) | namespace ams::secmon {
FILE: exosphere/program/source/secmon_cache.hpp
type ams::secmon (line 19) | namespace ams::secmon {
FILE: exosphere/program/source/secmon_cpu_context.cpp
type ams::secmon (line 20) | namespace ams::secmon {
type DebugRegisters (line 24) | struct DebugRegisters {
type CoreContext (line 38) | struct CoreContext {
function SaveDebugRegisters (line 46) | void SaveDebugRegisters(DebugRegisters &dr) {
function RestoreDebugRegisters (line 64) | void RestoreDebugRegisters(const DebugRegisters &dr) {
function IsCoreOn (line 83) | bool IsCoreOn(int core) {
function SetCoreOff (line 87) | void SetCoreOff() {
function IsResetExpected (line 91) | bool IsResetExpected() {
function SetResetExpected (line 95) | void SetResetExpected(int core, bool expected) {
function SetResetExpected (line 99) | void SetResetExpected(bool expected) {
function SetEntryContext (line 103) | void SetEntryContext(int core, uintptr_t address, uintptr_t arg) {
function GetEntryContext (line 108) | void GetEntryContext(EntryContext *out) {
function SaveDebugRegisters (line 126) | void SaveDebugRegisters() {
function RestoreDebugRegisters (line 133) | void RestoreDebugRegisters() {
FILE: exosphere/program/source/secmon_cpu_context.hpp
type ams::secmon (line 19) | namespace ams::secmon {
type EntryContext (line 23) | struct EntryContext {
FILE: exosphere/program/source/secmon_error.cpp
type ams (line 19) | namespace ams {
type ams::diag (line 28) | namespace ams::diag {
function ALWAYS_INLINE (line 32) | ALWAYS_INLINE void SaveSystemStateForDebugAbort() {
function NORETURN (line 53) | NORETURN void AbortImpl() {
type ams::secmon (line 67) | namespace ams::secmon {
function ALWAYS_INLINE (line 73) | ALWAYS_INLINE void SaveSystemStateForDebugErrorReboot() {
function SetError (line 108) | void SetError(pkg1::ErrorInfo info) {
function NORETURN (line 116) | NORETURN void ErrorReboot() {
FILE: exosphere/program/source/secmon_error.hpp
type ams::secmon (line 19) | namespace ams::secmon {
FILE: exosphere/program/source/secmon_exception_handler.cpp
type ams::secmon (line 19) | namespace ams::secmon {
function ExceptionHandlerImpl (line 29) | void ExceptionHandlerImpl(uintptr_t lr, uintptr_t sp) {
function NORETURN (line 66) | NORETURN void ExceptionHandler() {
FILE: exosphere/program/source/secmon_interrupt_handler.cpp
type ams::secmon (line 20) | namespace ams::secmon {
function SetInterruptHandler (line 32) | void SetInterruptHandler(int interrupt_id, u8 core_mask, InterruptHand...
function HandleInterrupt (line 45) | void HandleInterrupt() {
FILE: exosphere/program/source/secmon_interrupt_handler.hpp
type ams::secmon (line 19) | namespace ams::secmon {
FILE: exosphere/program/source/secmon_key_storage.cpp
type ams::secmon (line 19) | namespace ams::secmon {
function ALWAYS_INLINE (line 28) | ALWAYS_INLINE u8 *GetRsaKeyModulus(ImportRsaKey which) {
function ALWAYS_INLINE (line 32) | ALWAYS_INLINE u8 *GetRsaKeyPrivateExponent(ImportRsaKey which) {
function ALWAYS_INLINE (line 36) | ALWAYS_INLINE bool IsRsaKeyProvisional(ImportRsaKey which) {
function ClearRsaKeyModulus (line 40) | void ClearRsaKeyModulus(ImportRsaKey which) {
function ALWAYS_INLINE (line 45) | ALWAYS_INLINE u8 *GetMasterKeyStorage(int index) {
function ALWAYS_INLINE (line 49) | ALWAYS_INLINE u8 *GetDeviceMasterKeyStorage(int index) {
function ImportRsaKeyExponent (line 55) | void ImportRsaKeyExponent(ImportRsaKey which, const void *src, size_t ...
function ImportRsaKeyModulusProvisionally (line 63) | void ImportRsaKeyModulusProvisionally(ImportRsaKey which, const void *...
function CommitRsaKeyModulus (line 67) | void CommitRsaKeyModulus(ImportRsaKey which) {
function LoadRsaKey (line 71) | bool LoadRsaKey(int slot, ImportRsaKey which) {
function LoadProvisionalRsaKey (line 81) | void LoadProvisionalRsaKey(int slot, ImportRsaKey which) {
function LoadProvisionalRsaPublicKey (line 85) | void LoadProvisionalRsaPublicKey(int slot, ImportRsaKey which) {
function SetMasterKey (line 89) | void SetMasterKey(int generation, const void *src, size_t size) {
function LoadMasterKey (line 94) | void LoadMasterKey(int slot, int generation) {
function SetDeviceMasterKey (line 99) | void SetDeviceMasterKey(int generation, const void *src, size_t size) {
function LoadDeviceMasterKey (line 104) | void LoadDeviceMasterKey(int slot, int generation) {
FILE: exosphere/program/source/secmon_key_storage.hpp
type ams::secmon (line 19) | namespace ams::secmon {
type ImportRsaKey (line 23) | enum ImportRsaKey {
FILE: exosphere/program/source/secmon_map.cpp
type ams::secmon (line 23) | namespace ams::secmon {
function UnmapBootCodeImpl (line 42) | constexpr void UnmapBootCodeImpl(u64 *l1, u64 *l2, u64 *l3, uintptr_t ...
function UnmapTzramImpl (line 48) | constexpr void UnmapTzramImpl(u64 *l1, u64 *l2, u64 *l3) {
function MapSmcUserPageImpl (line 59) | constexpr void MapSmcUserPageImpl(u64 *l3, uintptr_t address) {
function UnmapSmcUserPageImpl (line 64) | constexpr void UnmapSmcUserPageImpl(u64 *l3) {
function MapAtmosphereIramPageImpl (line 69) | constexpr void MapAtmosphereIramPageImpl(u64 *l3, uintptr_t address) {
function UnmapAtmosphereIramPageImpl (line 74) | constexpr void UnmapAtmosphereIramPageImpl(u64 *l3) {
function MapAtmosphereUserPageImpl (line 79) | constexpr void MapAtmosphereUserPageImpl(u64 *l3, uintptr_t address) {
function UnmapAtmosphereUserPageImpl (line 84) | constexpr void UnmapAtmosphereUserPageImpl(u64 *l3) {
function MapDramForMarikoProgramImpl (line 89) | constexpr void MapDramForMarikoProgramImpl(u64 *l1, u64 *l2, u64 *l3) {
function ClearLow (line 95) | void ClearLow(uintptr_t address, size_t size) {
function ClearHigh (line 100) | void ClearHigh(uintptr_t address, size_t size) {
function ClearBootCodeHigh (line 107) | void ClearBootCodeHigh() {
function UnmapBootCode (line 111) | void UnmapBootCode() {
function GetPhysicalMemorySize (line 126) | size_t GetPhysicalMemorySize() {
function IsPhysicalMemoryAddress (line 135) | bool IsPhysicalMemoryAddress(uintptr_t address) {
function UnmapTzram (line 139) | void UnmapTzram() {
function MapSmcUserPage (line 151) | uintptr_t MapSmcUserPage(uintptr_t address) {
function UnmapSmcUserPage (line 176) | void UnmapSmcUserPage() {
function MapAtmosphereIramPage (line 195) | uintptr_t MapAtmosphereIramPage(uintptr_t address) {
function UnmapAtmosphereIramPage (line 231) | void UnmapAtmosphereIramPage() {
function MapAtmosphereUserPage (line 255) | uintptr_t MapAtmosphereUserPage(uintptr_t address) {
function UnmapAtmosphereUserPage (line 286) | void UnmapAtmosphereUserPage() {
function MapDramForMarikoProgram (line 310) | void MapDramForMarikoProgram() {
FILE: exosphere/program/source/secmon_map.hpp
type ams::secmon (line 19) | namespace ams::secmon {
FILE: exosphere/program/source/secmon_mariko_fatal_error.cpp
type ams::secmon (line 23) | namespace ams::secmon {
function HandleMarikoFatalErrorInterrupt (line 31) | void HandleMarikoFatalErrorInterrupt() {
FILE: exosphere/program/source/secmon_mariko_fatal_error.hpp
type ams::secmon (line 19) | namespace ams::secmon {
FILE: exosphere/program/source/secmon_misc.cpp
type ams::secmon (line 19) | namespace ams::secmon {
function SaveBootInfo (line 31) | void SaveBootInfo(const pkg1::SecureMonitorParameters &secmon_params) {
function IsRecoveryBoot (line 40) | bool IsRecoveryBoot() {
function u32 (line 44) | u32 GetRestrictedSmcMask() {
function IsJtagEnabled (line 48) | bool IsJtagEnabled() {
function GetPackage2Hash (line 54) | void GetPackage2Hash(se::Sha256Hash *out) {
function SetPackage2Hash (line 58) | void SetPackage2Hash(const se::Sha256Hash &hash) {
function u32 (line 62) | u32 GetDeprecatedBootReason() {
FILE: exosphere/program/source/secmon_misc.hpp
type ams::secmon (line 19) | namespace ams::secmon {
FILE: exosphere/program/source/secmon_page_mapper.cpp
type ams::secmon (line 20) | namespace ams::secmon {
type impl (line 22) | namespace impl {
FILE: exosphere/program/source/secmon_page_mapper.hpp
type ams::secmon (line 19) | namespace ams::secmon {
type impl (line 21) | namespace impl {
class PageMapperImpl (line 23) | class PageMapperImpl {
method PageMapperImpl (line 28) | constexpr PageMapperImpl(uintptr_t phys) : m_physical_address(util...
method ALWAYS_INLINE (line 35) | ALWAYS_INLINE bool CopyToUser(uintptr_t dst_phys, const void *src,...
method ALWAYS_INLINE (line 36) | ALWAYS_INLINE bool CopyFromUser(void *dst, uintptr_t src_phys, siz...
method MapImpl (line 39) | bool MapImpl() {
method UnmapImpl (line 45) | void UnmapImpl() {
class UserPageMapper (line 53) | class UserPageMapper : public impl::PageMapperImpl {
method UserPageMapper (line 55) | constexpr UserPageMapper(uintptr_t phys) : PageMapperImpl(phys) { /*...
class AtmosphereIramPageMapper (line 60) | class AtmosphereIramPageMapper : public impl::PageMapperImpl {
method AtmosphereIramPageMapper (line 62) | constexpr AtmosphereIramPageMapper(uintptr_t phys) : PageMapperImpl(...
class AtmosphereUserPageMapper (line 68) | class AtmosphereUserPageMapper : public impl::PageMapperImpl {
method AtmosphereUserPageMapper (line 70) | constexpr AtmosphereUserPageMapper(uintptr_t phys) : PageMapperImpl(...
FILE: exosphere/program/source/secmon_setup.cpp
type ams::secmon (line 28) | namespace ams::secmon {
type Carveout (line 43) | struct Carveout {
function InitializeConfigurationContext (line 84) | void InitializeConfigurationContext() {
function GenerateSecurityEngineAesKeySlotTestVector (line 104) | void GenerateSecurityEngineAesKeySlotTestVector(void *dst, size_t size) {
function VerifySecurityEngineStickyBits (line 142) | void VerifySecurityEngineStickyBits() {
function VerifySecurityEngineAesKeySlotTestVector (line 159) | void VerifySecurityEngineAesKeySlotTestVector() {
function ClearAesKeySlots (line 166) | void ClearAesKeySlots() {
function ClearRsaKeySlots (line 177) | void ClearRsaKeySlots() {
function SetupKernelCarveouts (line 184) | void SetupKernelCarveouts() {
function ConfigureSlaveSecurity (line 384) | void ConfigureSlaveSecurity() {
function SetupSecureRegisters (line 465) | void SetupSecureRegisters() {
function SetupSmmu (line 610) | void SetupSmmu() {
function SetupSecureEl2AndEl1SystemRegisters (line 664) | void SetupSecureEl2AndEl1SystemRegisters() {
function SetupNonSecureSystemRegisters (line 736) | void SetupNonSecureSystemRegisters(u32 tsc_frequency) {
function SetupGpuCarveout (line 757) | void SetupGpuCarveout() {
function DisableArc (line 803) | void DisableArc() {
function DisableUntranslatedDeviceMemoryAccess (line 818) | void DisableUntranslatedDeviceMemoryAccess() {
function FinalizeCarveoutSecureScratchRegisters (line 828) | void FinalizeCarveoutSecureScratchRegisters() {
function EnableBpmpSmmu (line 903) | void EnableBpmpSmmu() {
function ValidateResetExpected (line 929) | void ValidateResetExpected() {
function ActmonInterruptHandler (line 938) | void ActmonInterruptHandler() {
function ExitChargerHiZMode (line 943) | void ExitChargerHiZMode() {
function IsExitLp0 (line 958) | bool IsExitLp0() {
function SetupLogForBoot (line 962) | void SetupLogForBoot() {
function LogExitLp0 (line 968) | void LogExitLp0() {
function SetupForLp0Exit (line 975) | void SetupForLp0Exit() {
function Setup1 (line 992) | void Setup1() {
function Setup1ForWarmboot (line 1006) | void Setup1ForWarmboot() {
function SaveSecurityEngineAesKeySlotTestVector (line 1014) | void SaveSecurityEngineAesKeySlotTestVector() {
function SetupSocSecurity (line 1018) | void SetupSocSecurity() {
function SetupSocSecurityWarmboot (line 1127) | void SetupSocSecurityWarmboot() {
function SetupSocProtections (line 1163) | void SetupSocProtections() {
function SetupPmcAndMcSecure (line 1220) | void SetupPmcAndMcSecure() {
function SetupCpuCoreContext (line 1236) | void SetupCpuCoreContext() {
function SetupCpuSErrorDebug (line 1262) | void SetupCpuSErrorDebug() {
function SetKernelCarveoutRegion (line 1280) | void SetKernelCarveoutRegion(int index, uintptr_t address, size_t size) {
FILE: exosphere/program/source/secmon_setup.hpp
type ams::secmon (line 19) | namespace ams::secmon {
FILE: exosphere/program/source/secmon_setup_warm.cpp
type ams::secmon (line 19) | namespace ams::secmon {
type setup (line 21) | namespace setup {
function SetupCpuCommonControllers (line 35) | void SetupCpuCommonControllers() {
function SetupCpuEl3Controllers (line 57) | void SetupCpuEl3Controllers() {
function EnableMmu (line 127) | void EnableMmu() {
function IsExitLp0 (line 153) | bool IsExitLp0() {
function AddPhysicalTzramIdentityMappingImpl (line 157) | constexpr void AddPhysicalTzramIdentityMappingImpl(u64 *l1, u64 *l2, u...
function RestoreDebugCode (line 204) | void RestoreDebugCode() {
function AddPhysicalTzramIdentityMapping (line 216) | void AddPhysicalTzramIdentityMapping() {
function SetupCpuMemoryControllersEnableMmu (line 230) | void SetupCpuMemoryControllersEnableMmu() {
function SetupSocDmaControllers (line 236) | void SetupSocDmaControllers() {
function SetupSocDmaControllersCpuMemoryControllersEnableMmuWarmboot (line 288) | void SetupSocDmaControllersCpuMemoryControllersEnableMmuWarmboot() {
FILE: exosphere/program/source/secmon_spinlock.hpp
type ams::secmon (line 19) | namespace ams::secmon {
FILE: exosphere/program/source/secmon_user_power_management.cpp
type ams::secmon (line 24) | namespace ams::secmon {
type RebootStubAction (line 32) | enum RebootStubAction {
function NORETURN (line 37) | NORETURN void PerformPmcReboot() {
function LoadRebootStub (line 46) | void LoadRebootStub(u32 action) {
function PerformUserRebootByPmic (line 73) | void PerformUserRebootByPmic() {
function PerformUserRebootToRcm (line 82) | void PerformUserRebootToRcm() {
function PerformUserRebootToPayload (line 90) | void PerformUserRebootToPayload() {
function PerformUserRebootToFatalError (line 98) | void PerformUserRebootToFatalError() {
function PerformUserShutDown (line 111) | void PerformUserShutDown() {
FILE: exosphere/program/source/secmon_user_power_management.hpp
type ams::secmon (line 19) | namespace ams::secmon {
type UserRebootType (line 21) | enum UserRebootType {
FILE: exosphere/program/source/smc/secmon_random_cache.cpp
type ams::secmon::smc (line 20) | namespace ams::secmon::smc {
function FillRandomCache (line 27) | void FillRandomCache(int offset, int size) {
function FillRandomCache (line 46) | void FillRandomCache() {
function RefillRandomCache (line 55) | void RefillRandomCache() {
function GetRandomFromCache (line 83) | void GetRandomFromCache(void *dst, size_t size) {
FILE: exosphere/program/source/smc/secmon_random_cache.hpp
type ams::secmon::smc (line 20) | namespace ams::secmon::smc {
FILE: exosphere/program/source/smc/secmon_smc_aes.cpp
type ams::secmon::smc (line 25) | namespace ams::secmon::smc {
type SealKey (line 34) | enum SealKey {
type KeyType (line 46) | enum KeyType {
type CipherMode (line 55) | enum CipherMode {
type SpecificAesKey (line 62) | enum SpecificAesKey {
type DeviceUniqueData (line 69) | enum DeviceUniqueData {
function ImportRsaKey (line 85) | constexpr ImportRsaKey ConvertToImportRsaKey(DeviceUniqueData data) {
type SecureData (line 93) | enum SecureData {
type GenerateAesKekOption (line 102) | struct GenerateAesKekOption {
type ComputeAesOption (line 109) | struct ComputeAesOption {
type DecryptDeviceUniqueDataOption (line 114) | struct DecryptDeviceUniqueDataOption {
function u8 (line 187) | constexpr const u8 *GetSecureDataCounter(SecureData which) {
function u8 (line 201) | constexpr const u8 *GetSecureDataTweak(SecureData which) {
function IsValidLinkedListAddress (line 221) | constexpr bool IsValidLinkedListAddress(uintptr_t address) {
function SecurityEngineDoneHandler (line 227) | void SecurityEngineDoneHandler() {
function SmcResult (line 236) | SmcResult GetComputeAesResult(void *dst, size_t size) {
function PrepareMasterKey (line 249) | int PrepareMasterKey(int generation) {
function PrepareDeviceMasterKey (line 260) | int PrepareDeviceMasterKey(int generation) {
function GetSecureDataImpl (line 274) | void GetSecureDataImpl(u8 *dst, SecureData which, bool tweak) {
function SmcResult (line 300) | SmcResult GenerateAesKekImpl(SmcArguments &args) {
function SmcResult (line 365) | SmcResult LoadAesKeyImpl(SmcArguments &args) {
function SmcResult (line 393) | SmcResult ComputeAesImpl(SmcArguments &args) {
function SmcResult (line 429) | SmcResult GenerateSpecificAesKeyImpl(SmcArguments &args) {
function SmcResult (line 456) | SmcResult ComputeCmacImpl(SmcArguments &args) {
function SmcResult (line 491) | SmcResult LoadPreparedAesKeyImpl(SmcArguments &args) {
function SmcResult (line 510) | SmcResult PrepareEsCommonTitleKeyImpl(SmcArguments &args) {
function GetDiscountedMinimumDeviceUniqueDataSize (line 536) | constexpr size_t GetDiscountedMinimumDeviceUniqueDataSize(bool enforce...
function SmcResult (line 544) | SmcResult ValidateDeviceUniqueDataSize(DeviceUniqueData mode, size_t d...
function SmcResult (line 570) | SmcResult DecryptDeviceUniqueDataImpl(const u8 *access_key, const u8 *...
function SmcResult (line 616) | SmcResult DecryptDeviceUniqueDataImpl(SmcArguments &args) {
function SmcResult (line 639) | SmcResult DecryptAndImportEsDeviceKeyImpl(SmcArguments &args) {
function SmcResult (line 669) | SmcResult DecryptAndImportLotusKeyImpl(SmcArguments &args) {
function SmcResult (line 699) | SmcResult ReencryptDeviceUniqueDataImpl(SmcArguments &args) {
function SmcResult (line 764) | SmcResult GetSecureDataImpl(SmcArguments &args) {
function SmcResult (line 784) | SmcResult SmcGenerateAesKek(SmcArguments &args) {
function SmcResult (line 788) | SmcResult SmcLoadAesKey(SmcArguments &args) {
function SmcResult (line 792) | SmcResult SmcComputeAes(SmcArguments &args) {
function SmcResult (line 796) | SmcResult SmcGenerateSpecificAesKey(SmcArguments &args) {
function SmcResult (line 800) | SmcResult SmcComputeCmac(SmcArguments &args) {
function SmcResult (line 804) | SmcResult SmcLoadPreparedAesKey(SmcArguments &args) {
function SmcResult (line 808) | SmcResult SmcPrepareEsCommonTitleKey(SmcArguments &args) {
function SmcResult (line 813) | SmcResult SmcDecryptDeviceUniqueData(SmcArguments &args) {
function SmcResult (line 817) | SmcResult SmcReencryptDeviceUniqueData(SmcArguments &args) {
function SmcResult (line 822) | SmcResult SmcDecryptAndImportEsDeviceKey(SmcArguments &args) {
function SmcResult (line 826) | SmcResult SmcDecryptAndImportLotusKey(SmcArguments &args) {
function DecryptWithEsCommonKey (line 831) | void DecryptWithEsCommonKey(void *dst, size_t dst_size, const void *sr...
function PrepareEsAesKey (line 847) | void PrepareEsAesKey(void *dst, size_t dst_size, const void *src, size...
function SmcResult (line 861) | SmcResult SmcGetSecureData(SmcArguments &args) {
FILE: exosphere/program/source/smc/secmon_smc_aes.hpp
type ams::secmon::smc (line 20) | namespace ams::secmon::smc {
type EsCommonKeyType (line 22) | enum EsCommonKeyType {
FILE: exosphere/program/source/smc/secmon_smc_carveout.cpp
type ams::secmon::smc (line 21) | namespace ams::secmon::smc {
function SmcResult (line 23) | SmcResult SmcSetKernelCarveoutRegion(SmcArguments &args) {
FILE: exosphere/program/source/smc/secmon_smc_carveout.hpp
type ams::secmon::smc (line 20) | namespace ams::secmon::smc {
FILE: exosphere/program/source/smc/secmon_smc_common.hpp
type ams::secmon::smc (line 19) | namespace ams::secmon::smc {
type SmcResult (line 21) | enum class SmcResult : u32 {
type SmcArguments (line 44) | struct SmcArguments {
FILE: exosphere/program/source/smc/secmon_smc_device_unique_data.cpp
type ams::secmon::smc (line 20) | namespace ams::secmon::smc {
function GenerateIv (line 24) | void GenerateIv(void *dst, size_t dst_size) {
function PrepareDeviceUniqueDataKey (line 38) | void PrepareDeviceUniqueDataKey(const void *seal_key_source, size_t se...
function ComputeAes128Ctr (line 49) | void ComputeAes128Ctr(void *dst, size_t dst_size, int slot, const void...
function ComputeGmac (line 64) | void ComputeGmac(void *dst, size_t dst_size, const void *data, size_t ...
function u64 (line 75) | constexpr u64 GetDeviceIdLow(u64 device_id) {
function u8 (line 82) | constexpr u8 GetDeviceIdHigh(u64 device_id) {
function u64 (line 87) | constexpr u64 EncodeDeviceId(u8 device_id_high, u64 device_id_low) {
function DecryptDeviceUniqueData (line 93) | bool DecryptDeviceUniqueData(void *dst, size_t dst_size, u8 *out_devic...
function EncryptDeviceUniqueData (line 160) | void EncryptDeviceUniqueData(void *dst, size_t dst_size, const void *sea...
FILE: exosphere/program/source/smc/secmon_smc_device_unique_data.hpp
type ams::secmon::smc (line 20) | namespace ams::secmon::smc {
FILE: exosphere/program/source/smc/secmon_smc_error.cpp
type ams::secmon::smc (line 20) | namespace ams::secmon::smc {
function SmcResult (line 22) | SmcResult SmcShowError(SmcArguments &args) {
FILE: exosphere/program/source/smc/secmon_smc_error.hpp
type ams::secmon::smc (line 20) | namespace ams::secmon::smc {
FILE: exosphere/program/source/smc/secmon_smc_handler.cpp
type ams::secmon::smc (line 33) | namespace ams::secmon::smc {
type HandlerInfo (line 37) | struct HandlerInfo {
type HandlerTable (line 43) | struct HandlerTable {
type HandlerType (line 48) | enum HandlerType : int {
type Restriction (line 54) | enum Restriction {
type SmcCallRange (line 61) | enum SmcCallRange {
type SmcArgumentType (line 71) | enum SmcArgumentType {
type SmcConvention (line 76) | enum SmcConvention {
type SmcCallType (line 81) | enum SmcCallType {
type SmcFunctionId (line 86) | struct SmcFunctionId {
function NORETURN (line 170) | NORETURN void InvalidSmcError(u64 id) {
function HandlerTable (line 175) | const HandlerTable &GetHandlerTable(HandlerType type, u64 id) {
function HandlerInfo (line 203) | const HandlerInfo &GetHandlerInfo(const HandlerTable &table, u64 id) {
function IsHandlerRestricted (line 231) | bool IsHandlerRestricted(const HandlerInfo &info) {
function SmcResult (line 235) | SmcResult InvokeSmcHandler(const HandlerInfo &info, SmcArguments &args) {
function ConfigureSmcHandlersForTargetFirmware (line 247) | void ConfigureSmcHandlersForTargetFirmware() {
function HandleSmc (line 256) | void HandleSmc(int type, SmcArguments &args) {
FILE: exosphere/program/source/smc/secmon_smc_handler.hpp
type ams::secmon::smc (line 20) | namespace ams::secmon::smc {
FILE: exosphere/program/source/smc/secmon_smc_info.cpp
type ams::secmon::smc (line 25) | namespace ams::secmon::smc {
type KernelConfiguration (line 29) | struct KernelConfiguration {
function IsValidMemoryMode (line 98) | constexpr bool IsValidMemoryMode(pkg1::MemoryMode mode) {
function SanitizeMemoryMode (line 107) | pkg1::MemoryMode SanitizeMemoryMode(pkg1::MemoryMode mode) {
function GetAvailableMemorySize (line 114) | pkg1::MemorySize GetAvailableMemorySize(pkg1::MemorySize size) {
function GetMemoryMode (line 118) | pkg1::MemoryMode GetMemoryMode(pkg1::MemoryMode mode) {
function u32 (line 134) | u32 GetMemoryMode() {
function u32 (line 145) | u32 GetKernelConfiguration() {
function SmcResult (line 175) | SmcResult GetConfig(SmcArguments &args, bool kern) {
function SmcResult (line 330) | SmcResult SetConfig(SmcArguments &args) {
function SmcResult (line 404) | SmcResult SmcGetConfigUser(SmcArguments &args) {
function SmcResult (line 408) | SmcResult SmcGetConfigKern(SmcArguments &args) {
function SmcResult (line 412) | SmcResult SmcSetConfig(SmcArguments &args) {
function SmcResult (line 417) | SmcResult SmcGetEmummcConfig(SmcArguments &args) {
function GetPhysicalMemorySize (line 473) | pkg1::MemorySize GetPhysicalMemorySize() {
FILE: exosphere/program/source/smc/secmon_smc_info.hpp
type ams::secmon::smc (line 20) | namespace ams::secmon::smc {
type ConfigItem (line 22) | enum class ConfigItem : u32 {
FILE: exosphere/program/source/smc/secmon_smc_memory_access.cpp
type ams::secmon::smc (line 21) | namespace ams::secmon::smc {
type IramCopyType (line 25) | enum IramCopyType {
type IramCopyOption (line 31) | struct IramCopyOption {
function SmcResult (line 38) | SmcResult SmcIramCopy(SmcArguments &args) {
function SmcResult (line 70) | SmcResult SmcWriteAddress(SmcArguments &args) {
FILE: exosphere/program/source/smc/secmon_smc_memory_access.hpp
type ams::secmon::smc (line 20) | namespace ams::secmon::smc {
FILE: exosphere/program/source/smc/secmon_smc_power_management.cpp
type ams::secmon (line 26) | namespace ams::secmon {
type ams::secmon::smc (line 33) | namespace ams::secmon::smc {
type PowerStateType (line 51) | enum PowerStateType {
type PowerStateId (line 56) | enum PowerStateId {
type SuspendCpuPowerState (line 61) | struct SuspendCpuPowerState {
function IsCpuPoweredOn (line 83) | bool IsCpuPoweredOn(const reg::BitsMask mask) {
function PowerOnCpu (line 87) | void PowerOnCpu(const reg::BitsMask mask, u32 toggle_partid) {
function ResetCpu (line 126) | void ResetCpu(int which_core) {
function StartCpu (line 131) | void StartCpu(int which_core) {
function PowerOffCpuImpl (line 136) | void PowerOffCpuImpl() {
function ValidateSocStateForSuspend (line 156) | void ValidateSocStateForSuspend() {
function GenerateCryptographicallyRandomBytes (line 204) | void GenerateCryptographicallyRandomBytes(void * const dst, int size) {
function SaveSecureContextForErista (line 218) | void SaveSecureContextForErista() {
function SaveSecureContextForMariko (line 327) | void SaveSecureContextForMariko() {
function SaveSecureContext (line 335) | void SaveSecureContext() {
function LoadAndStartSc7BpmpFirmware (line 356) | void LoadAndStartSc7BpmpFirmware() {
function SaveSecureContextAndSuspend (line 395) | void SaveSecureContextAndSuspend() {
function SmcResult (line 426) | SmcResult SuspendCpuImpl(SmcArguments &args) {
function PowerOffCpu (line 508) | void PowerOffCpu() {
function SmcResult (line 526) | SmcResult SmcPowerOffCpu(SmcArguments &args) {
function SmcResult (line 532) | SmcResult SmcPowerOnCpu(SmcArguments &args) {
function SmcResult (line 555) | SmcResult SmcSuspendCpu(SmcArguments &args) {
function IsChargerHiZModeEnabled (line 559) | bool IsChargerHiZModeEnabled() {
function SetChargerHiZModeEnabled (line 563) | void SetChargerHiZModeEnabled(bool en) {
FILE: exosphere/program/source/smc/secmon_smc_power_management.hpp
type ams::secmon::smc (line 20) | namespace ams::secmon::smc {
FILE: exosphere/program/source/smc/secmon_smc_random.cpp
type ams::secmon::smc (line 22) | namespace ams::secmon::smc {
function SmcResult (line 26) | SmcResult GenerateRandomBytesImpl(SmcArguments &args) {
function SmcResult (line 51) | SmcResult SmcGenerateRandomBytes(SmcArguments &args) {
function SmcResult (line 55) | SmcResult SmcGenerateRandomBytesNonBlocking(SmcArguments &args) {
FILE: exosphere/program/source/smc/secmon_smc_random.hpp
type ams::secmon::smc (line 20) | namespace ams::secmon::smc {
FILE: exosphere/program/source/smc/secmon_smc_register_access.cpp
type ams::secmon::smc (line 20) | namespace ams::secmon::smc {
function SetRegisterTableAllowed (line 25) | constexpr void SetRegisterTableAllowed(std::array<u8, N> &arr, uintptr...
function GetReducedAccessTableInfo (line 53) | consteval std::pair<size_t, size_t> GetReducedAccessTableInfo(const st...
type AccessTable (line 72) | struct AccessTable {
type AccessTableEntry (line 91) | struct AccessTableEntry {
function IsAccessAllowed (line 110) | constexpr bool IsAccessAllowed(const AccessTableEntry &entry, uintptr_...
function AccessTableEntry (line 134) | constexpr const AccessTableEntry *GetAccessTableEntry(uintptr_t addres...
function SmcResult (line 146) | SmcResult SmcReadWriteRegister(SmcArguments &args) {
FILE: exosphere/program/source/smc/secmon_smc_register_access.hpp
type ams::secmon::smc (line 20) | namespace ams::secmon::smc {
FILE: exosphere/program/source/smc/secmon_smc_result.cpp
type ams::secmon::smc (line 21) | namespace ams::secmon::smc {
function u64 (line 28) | u64 GenerateRandomU64() {
function u64 (line 40) | u64 BeginAsyncOperation(GetResultHandler handler) {
function CancelAsyncOperation (line 53) | void CancelAsyncOperation(u64 async_key) {
function EndAsyncOperation (line 59) | void EndAsyncOperation() {
function SmcResult (line 63) | SmcResult SmcGetResult(SmcArguments &args) {
function SmcResult (line 78) | SmcResult SmcGetResultData(SmcArguments &args) {
FILE: exosphere/program/source/smc/secmon_smc_result.hpp
type ams::secmon::smc (line 20) | namespace ams::secmon::smc {
FILE: exosphere/program/source/smc/secmon_smc_rsa.cpp
type ams::secmon::smc (line 24) | namespace ams::secmon::smc {
type ModularExponentiateByStorageKeyOption (line 28) | struct ModularExponentiateByStorageKeyOption {
type PrepareEsDeviceUniqueKeyOption (line 33) | struct PrepareEsDeviceUniqueKeyOption {
function u32 (line 46) | consteval u32 GetModeForImportRsaKey(ImportRsaKey import_key) {
class PrepareEsDeviceUniqueKeyAsyncArguments (line 56) | class PrepareEsDeviceUniqueKeyAsyncArguments {
method Set (line 62) | void Set(int gen, EsCommonKeyType t, const u8 ld[crypto::Sha256Gener...
method GetKeyGeneration (line 68) | int GetKeyGeneration() const { return m_generation; }
method EsCommonKeyType (line 69) | EsCommonKeyType GetCommonKeyType() const { return m_type; }
method GetLabelDigest (line 70) | void GetLabelDigest(u8 dst[crypto::Sha256Generator::HashSize]) const...
class ModularExponentiateByStorageKeyAsyncArguments (line 73) | class ModularExponentiateByStorageKeyAsyncArguments {
method Set (line 77) | void Set(const void *m, size_t m_size) {
method u8 (line 82) | const u8 *GetMessage() const { return m_msg; }
function ALWAYS_INLINE (line 96) | ALWAYS_INLINE ModularExponentiateByStorageKeyAsyncArguments &GetModula...
function ALWAYS_INLINE (line 100) | ALWAYS_INLINE PrepareEsDeviceUniqueKeyAsyncArguments &GetPrepareEsDevi...
function SecurityEngineDoneHandler (line 104) | void SecurityEngineDoneHandler() {
function TestRsaPublicKey (line 110) | void TestRsaPublicKey(ImportRsaKey which, int slot, const void *mod, s...
function TestRsaPrivateKey (line 125) | void TestRsaPrivateKey(ImportRsaKey which, int slot, se::DoneHandler h...
function VerifyTestRsaKeyResult (line 137) | void VerifyTestRsaKeyResult(ImportRsaKey which) {
function TestRsaKeyDoneHandler (line 151) | void TestRsaKeyDoneHandler() {
function SmcResult (line 173) | SmcResult ModularExponentiateImpl(SmcArguments &args) {
function SmcResult (line 208) | SmcResult ModularExponentiateByStorageKeyImpl(SmcArguments &args) {
function SmcResult (line 255) | SmcResult PrepareEsDeviceUniqueKeyImpl(SmcArguments &args) {
function SmcResult (line 299) | SmcResult GetModularExponentiateResult(void *dst, size_t dst_size) {
function SmcResult (line 313) | SmcResult GetPrepareEsDeviceUniqueKeyResult(void *dst, size_t dst_size) {
function SmcResult (line 356) | SmcResult SmcModularExponentiate(SmcArguments &args) {
function SmcResult (line 360) | SmcResult SmcModularExponentiateByStorageKey(SmcArguments &args) {
function SmcResult (line 364) | SmcResult SmcPrepareEsDeviceUniqueKey(SmcArguments &args) {
FILE: exosphere/program/source/smc/secmon_smc_rsa.hpp
type ams::secmon::smc (line 20) | namespace ams::secmon::smc {
FILE: exosphere/program/source/smc/secmon_smc_se_lock.cpp
type ams::secmon::smc (line 20) | namespace ams::secmon::smc {
function ALWAYS_INLINE (line 26) | ALWAYS_INLINE bool TryLockSecurityEngineImpl() {
function ALWAYS_INLINE (line 31) | ALWAYS_INLINE void UnlockSecurityEngineImpl() {
function ALWAYS_INLINE (line 35) | ALWAYS_INLINE bool IsSecurityEngineLockedImpl() {
function TryLockSecurityEngine (line 41) | bool TryLockSecurityEngine() {
function UnlockSecurityEngine (line 45) | void UnlockSecurityEngine() {
function IsSecurityEngineLocked (line 49) | bool IsSecurityEngineLocked() {
function SmcResult (line 53) | SmcResult LockSecurityEngineAndInvoke(SmcArguments &args, SmcHandler i...
function SmcResult (line 61) | SmcResult LockSecurityEngineAndInvokeAsync(SmcArguments &args, SmcHand...
FILE: exosphere/program/source/smc/secmon_smc_se_lock.hpp
type ams::secmon::smc (line 22) | namespace ams::secmon::smc {
FILE: exosphere/program/split_program.py
function lz4_compress (line 5) | def lz4_compress(data):
function split_binary (line 12) | def split_binary(data):
function main (line 25) | def main(argc, argv):
FILE: exosphere/sdmmc_test/source/sdmmc_test_main.cpp
type ams::sdmmc_test (line 18) | namespace ams::sdmmc_test {
function NORETURN (line 30) | NORETURN void PmcMainReboot() {
function CheckResult (line 38) | void CheckResult(const Result result) {
function Main (line 48) | void Main() {
function NORETURN (line 134) | NORETURN void ExceptionHandler() {
type ams::diag (line 140) | namespace ams::diag {
function AbortImpl (line 142) | void AbortImpl() {
FILE: exosphere/warmboot/source/warmboot_bootrom_workaround.cpp
type ams::warmboot (line 19) | namespace ams::warmboot {
function ApplyMbistWorkaround (line 28) | void ApplyMbistWorkaround() {
FILE: exosphere/warmboot/source/warmboot_bootrom_workaround.hpp
type ams::warmboot (line 19) | namespace ams::warmboot {
FILE: exosphere/warmboot/source/warmboot_clkrst.cpp
type ams::warmboot (line 19) | namespace ams::warmboot {
function ConfigureOscillators (line 29) | void ConfigureOscillators() {
FILE: exosphere/warmboot/source/warmboot_clkrst.hpp
type ams::warmboot (line 19) | namespace ams::warmboot {
FILE: exosphere/warmboot/source/warmboot_cpu_cluster.cpp
type ams::warmboot (line 20) | namespace ams::warmboot {
function ALWAYS_INLINE (line 32) | ALWAYS_INLINE void EnableClusterPartition(const reg::BitsValue value, ...
function InitializeCpuCluster (line 51) | void InitializeCpuCluster() {
function PowerOnCpu (line 210) | void PowerOnCpu() {
FILE: exosphere/warmboot/source/warmboot_cpu_cluster.hpp
type ams::warmboot (line 19) | namespace ams::warmboot {
FILE: exosphere/warmboot/source/warmboot_dram.cpp
type ams::warmboot (line 19) | namespace ams::warmboot {
function RestrictBpmpAccessToMainMemory (line 33) | void RestrictBpmpAccessToMainMemory() {
function RestoreRamSvop (line 82) | void RestoreRamSvop() {
function ConfigureEmcPmacroTraining (line 86) | void ConfigureEmcPmacroTraining() {
FILE: exosphere/warmboot/source/warmboot_dram.hpp
type ams::warmboot (line 19) | namespace ams::warmboot {
FILE: exosphere/warmboot/source/warmboot_main.cpp
type ams::warmboot (line 25) | namespace ams::warmboot {
function Main (line 36) | void Main(const Metadata *metadata) {
function NORETURN (line 89) | NORETURN void ExceptionHandler() {
type ams::diag (line 99) | namespace ams::diag {
function NORETURN (line 101) | NORETURN void AbortImpl() {
FILE: exosphere/warmboot/source/warmboot_main.hpp
type ams::warmboot (line 19) | namespace ams::warmboot {
type Metadata (line 21) | struct Metadata {
FILE: exosphere/warmboot/source/warmboot_misc.cpp
type ams::warmboot (line 19) | namespace ams::warmboot {
function ConfigureMiscSystemDebug (line 29) | void ConfigureMiscSystemDebug() {
FILE: exosphere/warmboot/source/warmboot_misc.hpp
type ams::warmboot (line 19) | namespace ams::warmboot {
FILE: exosphere/warmboot/source/warmboot_secure_monitor.cpp
type ams::warmboot (line 19) | namespace ams::warmboot {
function ALWAYS_INLINE (line 34) | constexpr ALWAYS_INLINE bool IsSavedAesKeySlot(int slot) {
function ClearUnsavedSecurityEngineKeySlots (line 44) | void ClearUnsavedSecurityEngineKeySlots() {
function RestoreEncryptedTzram (line 59) | void RestoreEncryptedTzram(void * const tzram_dst, const void * const ...
function RestoreSecureMonitorToTzramErista (line 80) | void RestoreSecureMonitorToTzramErista(const TargetFirmware target_fw) {
function RestoreSecureMonitorToTzram (line 117) | void RestoreSecureMonitorToTzram(const TargetFirmware target_fw) {
FILE: exosphere/warmboot/source/warmboot_secure_monitor.hpp
type ams::warmboot (line 19) | namespace ams::warmboot {
FILE: exosphere/warmboot/source/warmboot_util.hpp
type ams::warmboot (line 19) | namespace ams::warmboot {
FILE: fusee/build_package3.py
function lz4_compress (line 5) | def lz4_compress(data):
function read_file (line 12) | def read_file(fn):
function pad (line 16) | def pad(data, size):
function get_overlay (line 20) | def get_overlay(program, i):
function get_kips (line 25) | def get_kips(ams_dir, build_out_dir):
function write_kip_meta (line 44) | def write_kip_meta(f, kip, ofs):
function write_header (line 52) | def write_header(f, all_kips, wb_size, tk_size, xf_size, ex_size, ms_siz...
function write_kips (line 114) | def write_kips(f, all_kips):
function main (line 136) | def main(argc, argv):
FILE: fusee/loader_stub/source/fusee_loader_error.cpp
type ams::diag (line 19) | namespace ams::diag {
function NORETURN (line 21) | NORETURN void AbortImpl(const char *expr, const char *func, const char...
function NORETURN (line 27) | NORETURN void AbortImpl(const char *expr, const char *func, const char...
function NORETURN (line 33) | NORETURN void AbortImpl() {
type ams::nxboot::loader (line 39) | namespace ams::nxboot::loader {
function NORETURN (line 41) | NORETURN void ErrorStop() {
FILE: fusee/loader_stub/source/fusee_loader_error.hpp
type ams::nxboot::loader (line 19) | namespace ams::nxboot::loader {
FILE: fusee/loader_stub/source/fusee_loader_main.cpp
type ams::nxboot::loader (line 20) | namespace ams::nxboot::loader {
function CopyBackwards (line 28) | void CopyBackwards(void *dst, const void *src, size_t size) {
function NORETURN (line 39) | NORETURN void UncompressAndExecute(const void *program, size_t program...
FILE: fusee/loader_stub/source/fusee_loader_uncompress.cpp
type ams::nxboot::loader (line 19) | namespace ams::nxboot::loader {
class Lz4Uncompressor (line 23) | class Lz4Uncompressor {
method Lz4Uncompressor (line 32) | Lz4Uncompressor(void *dst, size_t dst_size, const void *src, size_t ...
method Uncompress (line 36) | void Uncompress() {
method u8 (line 67) | u8 ReadByte() {
method CanRead (line 71) | bool CanRead() const {
method GetCopySize (line 75) | size_t GetCopySize(u8 control) {
method Copy (line 89) | void Copy(size_t size) {
function Uncompress (line 98) | void Uncompress(void *dst, size_t dst_size, const void *src, size_t sr...
FILE: fusee/loader_stub/source/fusee_loader_uncompress.hpp
type ams::nxboot::loader (line 19) | namespace ams::nxboot::loader {
FILE: fusee/program/lz4_compress.py
function lz4_compress (line 5) | def lz4_compress(data):
function read_file (line 12) | def read_file(fn):
function get_overlay (line 16) | def get_overlay(program, i):
function main (line 19) | def main(argc, argv):
FILE: fusee/program/source/fatfs/diskio.c
function DSTATUS (line 22) | DSTATUS disk_status (
function DSTATUS (line 35) | DSTATUS disk_initialize (
function DRESULT (line 48) | DRESULT disk_read (
function DRESULT (line 73) | DRESULT disk_write (
function DRESULT (line 97) | DRESULT disk_ioctl (
FILE: fusee/program/source/fatfs/diskio.h
type BYTE (line 13) | typedef BYTE DSTATUS;
type DRESULT (line 16) | typedef enum {
type DDRIVE (line 25) | typedef enum {
FILE: fusee/program/source/fatfs/ff.c
type FILESEM (line 283) | typedef struct {
function WORD (line 612) | static WORD ld_word (const BYTE* ptr) /* Load a 2-byte little-endian...
function DWORD (line 621) | static DWORD ld_dword (const BYTE* ptr) /* Load a 4-byte little-endian w...
function QWORD (line 633) | static QWORD ld_qword (const BYTE* ptr) /* Load an 8-byte little-endian ...
function st_word (line 650) | static void st_word (BYTE* ptr, WORD val) /* Store a 2-byte word in li...
function st_dword (line 656) | static void st_dword (BYTE* ptr, DWORD val) /* Store a 4-byte word in li...
function st_qword (line 665) | static void st_qword (BYTE* ptr, QWORD val) /* Store an 8-byte word in l...
function mem_cpy (line 686) | static void mem_cpy (void* dst, const void* src, UINT cnt)
function mem_set (line 700) | static void mem_set (void* dst, int val, UINT cnt)
function mem_cmp (line 711) | static int mem_cmp (const void* dst, const void* src, UINT cnt) /* ZR:sa...
function chk_chr (line 725) | static int chk_chr (const char* str, int chr) /* NZ:contained, ZR:not ...
function dbc_1st (line 733) | static int dbc_1st (BYTE c)
function dbc_2nd (line 753) | static int dbc_2nd (BYTE c)
function DWORD (line 777) | static DWORD tchar2uni ( /* Returns a character in UTF-16 encoding (>...
function BYTE (line 850) | static BYTE put_utf ( /* Returns number of encoding units written (0:b...
function lock_fs (line 939) | static int lock_fs ( /* 1:Ok, 0:timeout */
function unlock_fs (line 947) | static void unlock_fs (
function FRESULT (line 966) | static FRESULT chk_lock ( /* Check if the file can be accessed */
function enq_lock (line 993) | static int enq_lock (void) /* Check if an entry is available for a new ...
function UINT (line 1002) | static UINT inc_lock ( /* Increment object open counter and returns its...
function FRESULT (line 1033) | static FRESULT dec_lock ( /* Decrement object open counter */
function clear_lock (line 1055) | static void clear_lock ( /* Clear lock entries of the volume */
function FRESULT (line 1074) | static FRESULT sync_window ( /* Returns FR_OK or FR_DISK_ERR */
function FRESULT (line 1096) | static FRESULT move_window ( /* Returns FR_OK or FR_DISK_ERR */
function FRESULT (line 1127) | static FRESULT sync_fs ( /* Returns FR_OK or FR_DISK_ERR */
function LBA_t (line 1164) | static LBA_t clst2sect ( /* !=0:Sector number, 0:Failed (invalid clus...
function DWORD (line 1181) | static DWORD get_fat ( /* 0xFFFFFFFF:Disk error, 1:Internal error, ...
function FRESULT (line 1258) | static FRESULT put_fat ( /* FR_OK(0):succeeded, !=0:error */
function DWORD (line 1323) | static DWORD find_bitmap ( /* 0:Not found, 2..:Cluster block found, 0xF...
function FRESULT (line 1363) | static FRESULT change_bitmap (
function FRESULT (line 1399) | static FRESULT fill_first_frag (
function FRESULT (line 1422) | static FRESULT fill_last_frag (
function FRESULT (line 1448) | static FRESULT remove_chain ( /* FR_OK(0):succeeded, !=0:error */
function DWORD (line 1543) | static DWORD create_chain ( /* 0:No free cluster, 1:Internal error, 0xFF...
function DWORD (line 1646) | static DWORD clmt_clust ( /* <2:Error, >=2:Cluster number */
function FRESULT (line 1676) | static FRESULT dir_clear ( /* Returns FR_OK or FR_DISK_ERR */
function FRESULT (line 1715) | static FRESULT dir_sdi ( /* FR_OK(0):succeeded, !=0:error */
function FRESULT (line 1763) | static FRESULT dir_next ( /* FR_OK(0):succeeded, FR_NO_FILE:End of tab...
function DWORD (line 1866) | static DWORD ld_clust ( /* Returns the top cluster value of the SFN entr...
function st_clust (line 1883) | static void st_clust (
function cmp_lfn (line 1903) | static int cmp_lfn ( /* 1:matched, 0:not matched */
function pick_lfn (line 1939) | static int pick_lfn ( /* 1:succeeded, 0:buffer overflow or invalid LFN...
function put_lfn (line 1977) | static void put_lfn (
function gen_numname (line 2014) | static void gen_numname (
function BYTE (line 2072) | static BYTE sum_sfn (
function WORD (line 2094) | static WORD xdir_sum ( /* Get checksum of the directoly entry block */
function WORD (line 2115) | static WORD xname_sum ( /* Get check sum (to be used as hash) of the fil...
function DWORD (line 2133) | static DWORD xsum32 ( /* Returns 32-bit checksum */
function get_xfileinfo (line 2149) | static void get_xfileinfo (
function FRESULT (line 2190) | static FRESULT load_xdir ( /* FR_INT_ERR: invalid entry block */
function init_alloc_info (line 2241) | static void init_alloc_info (
function FRESULT (line 2259) | static FRESULT load_obj_xdir (
function FRESULT (line 2288) | static FRESULT store_xdir (
function create_xdir (line 2320) | static void create_xdir (
function FRESULT (line 2366) | static FRESULT dir_read (
function FRESULT (line 2444) | static FRESULT dir_find ( /* FR_OK(0):succeeded, !=0:error */
function FRESULT (line 2525) | static FRESULT dir_register ( /* FR_OK:succeeded, FR_DENIED:no free en...
function FRESULT (line 2631) | static FRESULT dir_remove ( /* FR_OK:Succeeded, FR_DISK_ERR:A disk error */
function get_fileinfo (line 2677) | static void get_fileinfo (
function DWORD (line 2783) | static DWORD get_achar ( /* Get a character and advances ptr */
function pattern_matching (line 2814) | static int pattern_matching ( /* 0:not matched, 1:matched */
function FRESULT (line 2861) | static FRESULT create_name ( /* FR_OK: successful, FR_INVALID_NAME: c...
function FRESULT (line 3062) | static FRESULT follow_path ( /* FR_OK(0): successful, !=0: error code */
function get_ldnumber (line 3149) | static int get_ldnumber ( /* Returns logical drive number (-1:invalid ...
function DWORD (line 3227) | static DWORD crc32 ( /* Returns next CRC value */
function test_gpt_header (line 3245) | static int test_gpt_header ( /* 0:Invalid, 1:Valid */
function DWORD (line 3267) | static DWORD make_rand (
function UINT (line 3295) | static UINT check_fs ( /* 0:FAT VBR, 1:exFAT VBR, 2:Not FAT and valid B...
function UINT (line 3332) | static UINT find_volume ( /* Returns BS status found in the hosting dr...
function FRESULT (line 3386) | static FRESULT mount_volume ( /* FR_OK(0): successful, !=0: an error o...
function FRESULT (line 3615) | static FRESULT validate ( /* Returns FR_OK or FR_INVALID_OBJECT */
function FRESULT (line 3659) | FRESULT f_mount (
function FRESULT (line 3707) | FRESULT f_open (
function FRESULT (line 3899) | FRESULT f_read (
function FRESULT (line 4000) | FRESULT f_write (
function FRESULT (line 4122) | FRESULT f_sync (
function FRESULT (line 4203) | FRESULT f_close (
function FRESULT (line 4239) | FRESULT f_chdrive (
function FRESULT (line 4256) | FRESULT f_chdir (
function FRESULT (line 4318) | FRESULT f_getcwd (
function FRESULT (line 4418) | FRESULT f_lseek (
function FRESULT (line 4581) | FRESULT f_opendir (
function FRESULT (line 4647) | FRESULT f_closedir (
function FRESULT (line 4677) | FRESULT f_readdir (
function FRESULT (line 4713) | FRESULT f_findnext (
function FRESULT (line 4738) | FRESULT f_findfirst (
function FRESULT (line 4765) | FRESULT f_stat (
function FRESULT (line 4800) | FRESULT f_getfree (
function FRESULT (line 4890) | FRESULT f_truncate (
function FRESULT (line 4940) | FRESULT f_unlink (
function FRESULT (line 5034) | FRESULT f_mkdir (
function FRESULT (line 5118) | FRESULT f_rename (
function FRESULT (line 5228) | FRESULT f_chmod (
function FRESULT (line 5275) | FRESULT f_utime (
function FRESULT (line 5322) | FRESULT f_getlabel (
function FRESULT (line 5417) | FRESULT f_setlabel (
function FRESULT (line 5537) | FRESULT f_expand (
function FRESULT (line 5627) | FRESULT f_forward (
function FRESULT (line 5706) | static FRESULT create_partition (
function FRESULT (line 5848) | FRESULT f_mkfs (
function FRESULT (line 6349) | FRESULT f_fdisk (
function TCHAR (line 6384) | TCHAR* f_gets (
type putbuff (line 6516) | typedef struct {
function putc_bfd (line 6531) | static void putc_bfd (putbuff* pb, TCHAR c)
function putc_flush (line 6662) | static int putc_flush (putbuff* pb)
function putc_init (line 6675) | static void putc_init (putbuff* pb, FIL* fp)
function f_putc (line 6683) | int f_putc (
function f_puts (line 6703) | int f_puts (
function f_printf (line 6723) | int f_printf (
function FRESULT (line 6841) | FRESULT f_setcp (
FILE: fusee/program/source/fatfs/ff.h
type QWORD (line 41) | typedef unsigned __int64 QWORD;
type UINT (line 45) | typedef unsigned int UINT;
type BYTE (line 46) | typedef unsigned char BYTE;
type WORD (line 47) | typedef uint16_t WORD;
type DWORD (line 48) | typedef uint32_t DWORD;
type QWORD (line 49) | typedef uint64_t QWORD;
type WORD (line 50) | typedef WORD WCHAR;
type UINT (line 53) | typedef unsigned int UINT;
type BYTE (line 54) | typedef unsigned char BYTE;
type WORD (line 55) | typedef unsigned short WORD;
type DWORD (line 56) | typedef unsigned long DWORD;
type WORD (line 57) | typedef WORD WCHAR;
type PARTITION (line 64) | typedef struct {
type WCHAR (line 85) | typedef WCHAR TCHAR;
type TCHAR (line 89) | typedef char TCHAR;
type DWORD (line 93) | typedef DWORD TCHAR;
type TCHAR (line 99) | typedef char TCHAR;
type QWORD (line 114) | typedef QWORD FSIZE_t;
type QWORD (line 116) | typedef QWORD LBA_t;
type DWORD (line 118) | typedef DWORD LBA_t;
type DWORD (line 124) | typedef DWORD FSIZE_t;
type DWORD (line 125) | typedef DWORD LBA_t;
type FATFS (line 132) | typedef struct {
type FFOBJID (line 183) | typedef struct {
type FIL (line 206) | typedef struct {
type DIR (line 229) | typedef struct {
type FILINFO (line 248) | typedef struct {
type MKFS_PARM (line 265) | typedef struct {
type FRESULT (line 277) | typedef enum {
FILE: fusee/program/source/fatfs/ffsystem.c
function ff_memfree (line 28) | void ff_memfree (
function ff_cre_syncobj (line 52) | int ff_cre_syncobj ( /* 1:Function succeeded, 0:Could not create the ...
function ff_del_syncobj (line 89) | int ff_del_syncobj ( /* 1:Function succeeded, 0:Could not delete due ...
function ff_req_grant (line 120) | int ff_req_grant ( /* 1:Got a grant to access the volume, 0:Could not g...
function ff_rel_grant (line 149) | void ff_rel_grant (
FILE: fusee/program/source/fatfs/ffunicode.c
function WCHAR (line 15222) | WCHAR ff_uni2oem ( /* Returns OEM code character, zero on error */
function WCHAR (line 15244) | WCHAR ff_oem2uni ( /* Returns Unicode character in UTF-16, zero on erro...
function WCHAR (line 15275) | WCHAR ff_uni2oem ( /* Returns OEM code character, zero on error */
function WCHAR (line 15311) | WCHAR ff_oem2uni ( /* Returns Unicode character in UTF-16, zero on erro...
function WCHAR (line 15358) | WCHAR ff_uni2oem ( /* Returns OEM code character, zero on error */
function WCHAR (line 15410) | WCHAR ff_oem2uni ( /* Returns Unicode character in UTF-16, zero on erro...
function DWORD (line 15464) | DWORD ff_wtoupper ( /* Returns up-converted code point */
FILE: fusee/program/source/fatfs/fusee_diskio.cpp
function diskio_read_sd_card (line 21) | bool diskio_read_sd_card(void *dst, size_t size, size_t sector_index, si...
function diskio_write_sd_card (line 25) | bool diskio_write_sd_card(size_t sector_index, size_t sector_count, cons...
function diskio_read_system (line 29) | bool diskio_read_system(void *dst, size_t size, size_t sector_index, siz...
function diskio_write_system (line 33) | bool diskio_write_system(size_t sector_index, size_t sector_count, const...
FILE: fusee/program/source/fs/fusee_fs_api.cpp
type ams::fs (line 20) | namespace ams::fs {
function Result (line 39) | Result TranslateFatFsError(FRESULT res) {
function TranslateToFatFsMode (line 84) | int TranslateToFatFsMode(int mode) {
function FIL (line 98) | FIL *GetInternalFile(FileHandle handle) {
function DIR (line 102) | DIR *GetInternalDirectory(DirectoryHandle handle) {
function ALWAYS_INLINE (line 106) | ALWAYS_INLINE size_t GetFileIndex(FIL *fp) {
function ALWAYS_INLINE (line 112) | ALWAYS_INLINE size_t GetDirectoryIndex(DIR *dp) {
function MountSdCard (line 120) | bool MountSdCard() {
function UnmountSdCard (line 126) | void UnmountSdCard() {
function Result (line 132) | Result GetEntryType(DirectoryEntryType *out_entry_type, bool *out_arch...
function Result (line 144) | Result CreateFile(const char *path, s64 size) {
function Result (line 158) | Result CreateDirectory(const char *path) {
function Result (line 162) | Result OpenFile(FileHandle *out_file, const char *path, int mode) {
function Result (line 180) | Result OpenDirectory(DirectoryHandle *out_dir, const char *path) {
function Result (line 197) | Result ReadDirectory(s64 *out_count, DirectoryEntry *out_entries, Dire...
function CloseDirectory (line 215) | void CloseDirectory(DirectoryHandle handle) {
function Result (line 221) | Result ReadFile(FileHandle handle, s64 offset, void *buffer, size_t si...
function Result (line 238) | Result ReadFile(FileHandle handle, s64 offset, void *buffer, size_t si...
function Result (line 242) | Result ReadFile(size_t *out, FileHandle handle, s64 offset, void *buff...
function Result (line 259) | Result ReadFile(size_t *out, FileHandle handle, s64 offset, void *buff...
function Result (line 263) | Result GetFileSize(s64 *out, FileHandle handle) {
function Result (line 269) | Result FlushFile(FileHandle handle) {
function Result (line 273) | Result WriteFile(FileHandle handle, s64 offset, const void *buffer, si...
function Result (line 292) | Result SetFileSize(FileHandle handle, s64 size) {
function GetFileOpenMode (line 316) | int GetFileOpenMode(FileHandle handle) {
function CloseFile (line 320) | void CloseFile(FileHandle handle) {
FILE: fusee/program/source/fs/fusee_fs_api.hpp
type ams::fs (line 19) | namespace ams::fs {
type OpenMode (line 21) | enum OpenMode {
type ReadOption (line 30) | struct ReadOption {
type WriteOption (line 48) | struct WriteOption {
method HasFlushFlag (line 51) | constexpr inline bool HasFlushFlag() const {
type DirectoryEntryType (line 72) | enum DirectoryEntryType {
type DirectoryEntry (line 77) | struct DirectoryEntry {
function ALWAYS_INLINE (line 86) | constexpr ALWAYS_INLINE DirectoryEntryType GetEntryType(const Director...
type FileHandle (line 90) | struct FileHandle {
type DirectoryHandle (line 94) | struct DirectoryHandle {
FILE: fusee/program/source/fs/fusee_fs_file_storage.cpp
type ams::fs (line 19) | namespace ams::fs {
function Result (line 21) | Result FileHandleStorage::UpdateSize() {
function Result (line 26) | Result FileHandleStorage::Read(s64 offset, void *buffer, size_t size) {
function Result (line 42) | Result FileHandleStorage::Write(s64 offset, const void *buffer, size_t...
function Result (line 58) | Result FileHandleStorage::Flush() {
function Result (line 62) | Result FileHandleStorage::GetSize(s64 *out_size) {
function Result (line 68) | Result FileHandleStorage::SetSize(s64 size) {
FILE: fusee/program/source/fs/fusee_fs_storage.hpp
type ams::fs (line 20) | namespace ams::fs {
class IStorage (line 22) | class IStorage {
method Result (line 34) | static inline Result CheckAccessRange(s64 offset, s64 size, s64 tota...
method ALWAYS_INLINE (line 42) | static ALWAYS_INLINE Result CheckAccessRange(s64 offset, size_t size...
method Result (line 46) | static inline Result CheckOffsetAndSize(s64 offset, s64 size) {
method ALWAYS_INLINE (line 53) | static ALWAYS_INLINE Result CheckOffsetAndSize(s64 offset, size_t si...
method Result (line 57) | static inline Result CheckOffsetAndSizeWithResult(s64 offset, s64 si...
method ALWAYS_INLINE (line 64) | static ALWAYS_INLINE Result CheckOffsetAndSizeWithResult(s64 offset,...
class ReadOnlyStorageAdapter (line 69) | class ReadOnlyStorageAdapter : public IStorage {
method ReadOnlyStorageAdapter (line 73) | ReadOnlyStorageAdapter(IStorage &s) : m_storage(s) { /* ... */ }
method Result (line 75) | virtual Result Read(s64 offset, void *buffer, size_t size) override {
method Result (line 79) | virtual Result Flush() override {
method Result (line 83) | virtual Result GetSize(s64 *out) override {
method Result (line 87) | virtual Result Write(s64 offset, const void *buffer, size_t size) ov...
method Result (line 91) | virtual Result SetSize(s64 size) override {
class SubStorage (line 96) | class SubStorage : public IStorage {
method SubStorage (line 102) | SubStorage(IStorage &s, s64 o, s64 sz) : m_storage(s), m_offset(o), ...
method Result (line 104) | virtual Result Read(s64 offset, void *buffer, size_t size) override {
method Result (line 114) | virtual Result Write(s64 offset, const void *buffer, size_t size) ov...
method Result (line 124) | virtual Result Flush() override {
method Result (line 128) | virtual Result GetSize(s64 *out) override {
method Result (line 133) | virtual Result SetSize(s64 size) override {
class FileHandleStorage (line 138) | class FileHandleStorage : public IStorage {
method FileHandleStorage (line 145) | constexpr explicit FileHandleStorage(FileHandle handle) : m_handle(h...
FILE: fusee/program/source/fusee_cpu.cpp
type ams::nxboot (line 19) | namespace ams::nxboot {
function IsPartitionPowered (line 29) | bool IsPartitionPowered(u32 mask) {
function PowerOnPartition (line 33) | void PowerOnPartition(u32 status_mask, u32 toggle_mask) {
function SetupCpu (line 72) | void SetupCpu(uintptr_t entrypoint) {
function StartCpu (line 164) | void StartCpu() {
FILE: fusee/program/source/fusee_cpu.hpp
type ams::nxboot (line 19) | namespace ams::nxboot {
FILE: fusee/program/source/fusee_crt0.cpp
type ams::nxboot::crt0 (line 21) | namespace ams::nxboot::crt0 {
function ALWAYS_INLINE (line 25) | ALWAYS_INLINE void SetExceptionVector(u32 which, uintptr_t impl) {
function Initialize (line 31) | void Initialize() {
FILE: fusee/program/source/fusee_display.cpp
type ams::nxboot (line 22) | namespace ams::nxboot {
function DoRegisterWrites (line 61) | inline void DoRegisterWrites(uintptr_t base_address, const RegisterWri...
function DoSocDependentRegisterWrites (line 67) | inline void DoSocDependentRegisterWrites(uintptr_t base_address, const...
function DoSleepOrRegisterWrites (line 75) | inline void DoSleepOrRegisterWrites(uintptr_t base_address, const Slee...
function WaitDsiTrigger (line 89) | void WaitDsiTrigger() {
function WaitDsiHostControl (line 104) | void WaitDsiHostControl() {
function EnableBacklightForVendor2050ForAula (line 117) | void EnableBacklightForVendor2050ForAula(int brightness) {
function EnableBacklightForGeneric (line 154) | void EnableBacklightForGeneric(int brightness) {
function InitializeFrameBuffer (line 164) | void InitializeFrameBuffer() {
function FinalizeFrameBuffer (line 171) | [[maybe_unused]] void FinalizeFrameBuffer() {
function PrintSuggestedErrorFix (line 202) | void PrintSuggestedErrorFix(const ams::impl::FatalErrorContext *f_ctx) {
function IsDisplayInitialized (line 259) | bool IsDisplayInitialized() {
function InitializeDisplay (line 263) | void InitializeDisplay() {
function FinalizeDisplay (line 501) | void FinalizeDisplay() {
function ShowDisplay (line 575) | void ShowDisplay() {
function u16 (line 585) | u16 GetDisplayLcdVendor() {
function ShowFatalError (line 589) | void ShowFatalError(const ams::impl::FatalErrorContext *f_ctx, const R...
function ShowFatalError (line 622) | void ShowFatalError(const char *fmt, ...) {
FILE: fusee/program/source/fusee_display.hpp
type ams::nxboot (line 19) | namespace ams::nxboot {
FILE: fusee/program/source/fusee_emummc.cpp
type ams::nxboot (line 25) | namespace ams::nxboot {
class SdCardStorage (line 29) | class SdCardStorage : public fs::IStorage {
method Result (line 31) | virtual Result Read(s64 offset, void *buffer, size_t size) override {
method Result (line 39) | virtual Result Flush() override {
method Result (line 43) | virtual Result GetSize(s64 *out) override {
method Result (line 51) | virtual Result Write(s64 offset, const void *buffer, size_t size) ov...
method Result (line 55) | virtual Result SetSize(s64 size) override {
class MmcPartitionStorage (line 61) | class MmcPartitionStorage : public fs::IStorage {
method MmcPartitionStorage (line 63) | constexpr MmcPartitionStorage() { /* ... */ }
method Result (line 65) | virtual Result Read(s64 offset, void *buffer, size_t size) override {
method Result (line 73) | virtual Result Flush() override {
method Result (line 77) | virtual Result GetSize(s64 *out) override {
method Result (line 85) | virtual Result Write(s64 offset, const void *buffer, size_t size) ov...
method Result (line 89) | virtual Result SetSize(s64 size) override {
class EmummcFileStorage (line 99) | class EmummcFileStorage : public fs::IStorage {
method EnsureFile (line 106) | void EnsureFile(int id) {
method EmummcFileStorage (line 122) | EmummcFileStorage(fs::FileHandle user00, int ofs) : m_file_path_ofs(...
method Result (line 136) | virtual Result Read(s64 offset, void *buffer, size_t size) override {
method Result (line 159) | virtual Result Flush() override {
method Result (line 163) | virtual Result GetSize(s64 *out) override {
method Result (line 167) | virtual Result Write(s64 offset, const void *buffer, size_t size) ov...
method Result (line 171) | virtual Result SetSize(s64 size) override {
type Guid (line 186) | struct Guid {
type GptHeader (line 194) | struct GptHeader {
type GptPartitionEntry (line 213) | struct GptPartitionEntry {
type Gpt (line 223) | struct Gpt {
function InitializeEmummc (line 236) | void InitializeEmummc(bool emummc_enabled, const secmon::EmummcConfigu...
function Result (line 351) | Result ReadBoot0(s64 offset, void *dst, size_t size) {
function Result (line 355) | Result ReadPackage2(s64 offset, void *dst, size_t size) {
FILE: fusee/program/source/fusee_emummc.hpp
type ams::nxboot (line 21) | namespace ams::nxboot {
FILE: fusee/program/source/fusee_exception_handler.cpp
type ams::nxboot (line 20) | namespace ams::nxboot {
function NORETURN (line 22) | NORETURN void ExceptionHandlerImpl(s32 which, u32 lr, u32 svc_lr) {
type ams::diag (line 28) | namespace ams::diag {
function NORETURN (line 30) | NORETURN void AbortImpl(const char *expr, const char *func, const char...
function NORETURN (line 38) | NORETURN void AbortImpl(const char *expr, const char *func, const char...
function NORETURN (line 46) | NORETURN void AbortImpl(const char *expr, const char *func, const char...
function NORETURN (line 54) | NORETURN void AbortImpl(const char *expr, const char *func, const char...
function NORETURN (line 62) | NORETURN void AbortImpl() {
function NORETURN (line 68) | NORETURN void OnAssertionFailure(AssertionType type, const char *expr,...
function NORETURN (line 76) | NORETURN void OnAssertionFailure(AssertionType type, const char *expr,...
FILE: fusee/program/source/fusee_exception_handler.hpp
type ams::nxboot (line 19) | namespace ams::nxboot {
FILE: fusee/program/source/fusee_external_package.hpp
type ams::nxboot (line 20) | namespace ams::nxboot {
type ExternalPackageContentMeta (line 26) | struct ExternalPackageContentMeta {
type ExternalPackageKipMeta (line 36) | struct ExternalPackageKipMeta {
type ExternalPackageHeader (line 44) | struct ExternalPackageHeader {
type ExternalPackage (line 69) | struct ExternalPackage {
function ALWAYS_INLINE (line 86) | ALWAYS_INLINE const ExternalPackage &GetExternalPackage() { return *re...
FILE: fusee/program/source/fusee_fatal.cpp
type ams::nxboot (line 21) | namespace ams::nxboot {
function Result (line 27) | Result SaveFatalErrorContext(const ams::impl::FatalErrorContext *ctx) {
function NORETURN (line 53) | NORETURN void RebootToSelf() {
function SaveAndShowFatalError (line 78) | void SaveAndShowFatalError() {
function WaitForReboot (line 97) | void WaitForReboot() {
FILE: fusee/program/source/fusee_fatal.hpp
type ams::nxboot (line 19) | namespace ams::nxboot {
FILE: fusee/program/source/fusee_ini.cpp
type ams::nxboot (line 21) | namespace ams::nxboot {
function IsWhiteSpace (line 27) | constexpr bool IsWhiteSpace(char c) {
function ParseIniResult (line 33) | ParseIniResult ParseIniFile(IniSectionList &out_sections, const char *...
FILE: fusee/program/source/fusee_ini.hpp
type ams::nxboot (line 19) | namespace ams::nxboot {
type IniKeyValueEntry (line 21) | struct IniKeyValueEntry {
type IniSection (line 29) | struct IniSection {
type ParseIniResult (line 37) | enum ParseIniResult {
FILE: fusee/program/source/fusee_key_derivation.cpp
type ams::nxboot (line 20) | namespace ams::nxboot {
function DeriveMasterKeys (line 173) | void DeriveMasterKeys(bool is_prod) {
function DeriveDeviceMasterKeys (line 198) | void DeriveDeviceMasterKeys(fuse::SocType soc_type, bool is_prod) {
function GeneratePersonalizedAesKeyForBis (line 241) | void GeneratePersonalizedAesKeyForBis(int slot, const void *kek_source...
function DeriveBisPartitionSystemKeys (line 260) | void DeriveBisPartitionSystemKeys() {
function DeriveKeysErista (line 271) | void DeriveKeysErista() {
function DeriveKeysMariko (line 303) | void DeriveKeysMariko() {
function PrepareMasterKey (line 322) | int PrepareMasterKey(int generation) {
function PrepareDeviceMasterKey (line 332) | int PrepareDeviceMasterKey(int generation) {
FILE: fusee/program/source/fusee_key_derivation.hpp
type ams::nxboot (line 19) | namespace ams::nxboot {
FILE: fusee/program/source/fusee_main.cpp
type ams::nxboot (line 29) | namespace ams::nxboot {
function OpenExternalPackage (line 37) | void OpenExternalPackage() {
function ReadFullExternalPackage (line 57) | void ReadFullExternalPackage() {
function CloseExternalPackage (line 65) | void CloseExternalPackage() {
function Main (line 71) | void Main() {
FILE: fusee/program/source/fusee_malloc.cpp
type ams::nxboot (line 20) | namespace ams::nxboot {
FILE: fusee/program/source/fusee_malloc.hpp
type ams::nxboot (line 19) | namespace ams::nxboot {
function ALWAYS_INLINE (line 23) | ALWAYS_INLINE void *AllocateAligned(size_t size, size_t align) {
function T (line 28) | inline T *AllocateObject(Args &&... args) {
FILE: fusee/program/source/fusee_mmc.cpp
type ams::nxboot (line 19) | namespace ams::nxboot {
function Result (line 29) | Result SelectMmcPartition(sdmmc::MmcPartition partition) {
function Result (line 42) | Result InitializeMmc() {
function Result (line 53) | Result CheckMmcConnection(sdmmc::SpeedMode *out_sm, sdmmc::BusWidth *o...
function Result (line 57) | Result GetMmcMemoryCapacity(u32 *out_num_sectors, sdmmc::MmcPartition ...
function Result (line 65) | Result ReadMmc(void *dst, size_t size, sdmmc::MmcPartition partition, ...
function Result (line 70) | Result WriteMmc(sdmmc::MmcPartition partition, size_t sector_index, si...
FILE: fusee/program/source/fusee_mmc.hpp
type ams::nxboot (line 19) | namespace ams::nxboot {
FILE: fusee/program/source/fusee_overlay_manager.cpp
type ams::nxboot (line 21) | namespace ams::nxboot {
function ALWAYS_INLINE (line 27) | ALWAYS_INLINE void *GetOverlayDestination() {
function LoadMemoryTrainingOverlay (line 31) | void LoadMemoryTrainingOverlay(fs::FileHandle archive_file) {
function LoadOverlay (line 56) | void LoadOverlay(fs::FileHandle archive_file, OverlayId ovl) {
function SaveMemoryTrainingOverlay (line 64) | void SaveMemoryTrainingOverlay() {
function RestoreMemoryTrainingOverlay (line 73) | void RestoreMemoryTrainingOverlay() {
function RestoreSecureMonitorOverlay (line 83) | void RestoreSecureMonitorOverlay() {
FILE: fusee/program/source/fusee_overlay_manager.hpp
type ams::nxboot (line 20) | namespace ams::nxboot {
type OverlayId (line 22) | enum OverlayId {
FILE: fusee/program/source/fusee_package2.cpp
type ams::nxboot (line 21) | namespace ams::nxboot {
function PreparePackage2Key (line 29) | void PreparePackage2Key(int pkg2_slot, int key_generation) {
function DecryptPackage2 (line 37) | void DecryptPackage2(void *dst, size_t dst_size, const void *src, size...
function DecryptPackage2Header (line 57) | void DecryptPackage2Header(pkg2::Package2Meta *dst, const pkg2::Packag...
function VerifyPackage2Meta (line 67) | bool VerifyPackage2Meta(const pkg2::Package2Meta &meta) {
function DecryptPackage2 (line 138) | void DecryptPackage2(u8 *package2) {
FILE: fusee/program/source/fusee_package2.hpp
type ams::nxboot (line 19) | namespace ams::nxboot {
FILE: fusee/program/source/fusee_print.cpp
type ams::nxboot (line 20) | namespace ams::nxboot {
function SetPixel (line 35) | void SetPixel(size_t x, size_t y, u32 color) {
function PutCarriageReturn (line 39) | void PutCarriageReturn() {
function PutNewLine (line 43) | void PutNewLine() {
function PutCharImpl (line 50) | void PutCharImpl(const char c) {
function PutChar (line 79) | void PutChar(const char c) {
function InitializeConsole (line 97) | void InitializeConsole(u32 *frame_buffer) {
function VPrint (line 107) | void VPrint(const char *fmt, std::va_list vl) {
function Print (line 119) | void Print(const char *fmt, ...) {
FILE: fusee/program/source/fusee_print.hpp
type ams::nxboot (line 19) | namespace ams::nxboot {
FILE: fusee/program/source/fusee_sd_card.cpp
type ams::nxboot (line 19) | namespace ams::nxboot {
function ConfigureInitialSdCardPinmux (line 29) | void ConfigureInitialSdCardPinmux() {
function Result (line 70) | Result InitializeSdCard() {
function FinalizeSdCard (line 84) | void FinalizeSdCard() {
function Result (line 92) | Result CheckSdCardConnection(sdmmc::SpeedMode *out_sm, sdmmc::BusWidth...
function Result (line 96) | Result GetSdCardMemoryCapacity(u32 *out_num_sectors) {
function Result (line 100) | Result ReadSdCard(void *dst, size_t size, size_t sector_index, size_t ...
function Result (line 104) | Result WriteSdCard(size_t sector_index, size_t sector_count, const voi...
FILE: fusee/program/source/fusee_sd_card.hpp
type ams::nxboot (line 19) | namespace ams::nxboot {
FILE: fusee/program/source/fusee_secmon_sync.cpp
type ams::nxboot (line 19) | namespace ams::nxboot {
function ALWAYS_INLINE (line 23) | ALWAYS_INLINE pkg1::SecureMonitorParameters &GetSecureMonitorParameter...
function InitializeSecureMonitorMailbox (line 29) | void InitializeSecureMonitorMailbox() {
function WaitSecureMonitorState (line 33) | void WaitSecureMonitorState(pkg1::SecureMonitorState state) {
function SetBootloaderState (line 42) | void SetBootloaderState(pkg1::BootloaderState state) {
FILE: fusee/program/source/fusee_secmon_sync.hpp
type ams::nxboot (line 19) | namespace ams::nxboot {
FILE: fusee/program/source/fusee_setup_horizon.cpp
type ams::nxboot (line 32) | namespace ams::nxboot {
function DeriveAllKeys (line 42) | void DeriveAllKeys(const fuse::SocType soc_type) {
function ParseIniSafe (line 62) | bool ParseIniSafe(IniSectionList &out_sections, const char *ini_path) {
function u32 (line 73) | u32 ParseHexInteger(const char *s) {
function u32 (line 98) | u32 ParseDecimalInteger(const char *s) {
function IsDirectoryExist (line 115) | bool IsDirectoryExist(const char *path) {
function IsFileExist (line 121) | bool IsFileExist(const char *path) {
function ConfigureEmummc (line 127) | bool ConfigureEmummc() {
function u8 (line 186) | u8 *LoadPackage1(fuse::SocType soc_type) {
function GetApproximateTargetFirmware (line 209) | ams::TargetFirmware GetApproximateTargetFirmware(const u8 *package1) {
function u8 (line 279) | u8 *LoadBootConfigAndPackage2() {
function LoadWarmbootFirmware (line 350) | void LoadWarmbootFirmware(fuse::SocType soc_type, ams::TargetFirmware ...
function ConfigureExosphere (line 490) | void ConfigureExosphere(fuse::SocType soc_type, ams::TargetFirmware ta...
function IsNogcEnabled (line 687) | bool IsNogcEnabled(ams::TargetFirmware target_firmware) {
function SetupAndStartHorizon (line 728) | void SetupAndStartHorizon() {
FILE: fusee/program/source/fusee_setup_horizon.hpp
type ams::nxboot (line 19) | namespace ams::nxboot {
FILE: fusee/program/source/fusee_stratosphere.cpp
type ams::nxboot (line 23) | namespace ams::nxboot {
type InitialProcessBinaryHeader (line 30) | struct InitialProcessBinaryHeader {
type InitialProcessHeader (line 39) | struct InitialProcessHeader {
type PatchMeta (line 69) | struct PatchMeta {
type InitialProcessMeta (line 78) | struct alignas(0x10) InitialProcessMeta {
type FsVersion (line 93) | enum FsVersion {
function InitialProcessBinaryHeader (line 301) | const InitialProcessBinaryHeader *FindInitialProcessBinary(const pkg2:...
function GetInitialProcessSize (line 328) | constexpr size_t GetInitialProcessSize(const InitialProcessHeader *kip) {
function InitialProcessHeader (line 332) | const InitialProcessHeader *FindInitialProcessInBinary(const InitialPr...
function FsVersion (line 350) | FsVersion GetFsVersion(const se::Sha256Hash &fs_hash) {
function AddInitialProcessImpl (line 363) | void AddInitialProcessImpl(InitialProcessMeta *meta, const InitialProc...
function AddInitialProcess (line 386) | bool AddInitialProcess(const InitialProcessHeader *kip, const se::Sha2...
function InitialProcessMeta (line 421) | InitialProcessMeta *FindInitialProcess(u64 program_id) {
function u32 (line 430) | u32 GetPatchSegments(const InitialProcessHeader *kip, u32 offset, size...
function AddPatch (line 469) | void AddPatch(InitialProcessMeta *meta, u32 offset, const void *data, ...
function AddNogcPatches (line 518) | void AddNogcPatches(InitialProcessMeta *fs_meta, FsVersion fs_version) {
type BlzSegmentFlags (line 717) | struct BlzSegmentFlags {
function BlzUncompress (line 722) | void BlzUncompress(void *_end) {
function u32 (line 799) | u32 ConfigureStratosphere(const u8 *nn_package2, ams::TargetFirmware t...
function RebuildPackage2 (line 911) | void RebuildPackage2(ams::TargetFirmware target_firmware, bool emummc_...
FILE: fusee/program/source/fusee_stratosphere.hpp
type ams::nxboot (line 19) | namespace ams::nxboot {
FILE: fusee/program/source/fusee_uncompress.cpp
type ams::nxboot (line 19) | namespace ams::nxboot {
class Lz4Uncompressor (line 23) | class Lz4Uncompressor {
method Lz4Uncompressor (line 32) | Lz4Uncompressor(void *dst, size_t dst_size, const void *src, size_t ...
method Uncompress (line 36) | void Uncompress() {
method u8 (line 67) | u8 ReadByte() {
method CanRead (line 71) | bool CanRead() const {
method GetCopySize (line 75) | size_t GetCopySize(u8 control) {
method Copy (line 89) | void Copy(size_t size) {
function Uncompress (line 98) | void Uncompress(void *dst, size_t dst_size, const void *src, size_t sr...
FILE: fusee/program/source/fusee_uncompress.hpp
type ams::nxboot (line 19) | namespace ams::nxboot {
FILE: fusee/program/source/mtc/fusee_mtc.cpp
type ams::nxboot (line 18) | namespace ams::nxboot {
function GetMemoryTrainingTableIndex (line 71) | int GetMemoryTrainingTableIndex() {
function DoMemoryTraining (line 81) | void DoMemoryTraining() {
function RestoreMemoryClockRate (line 91) | void RestoreMemoryClockRate() {
FILE: fusee/program/source/mtc/fusee_mtc.hpp
type ams::nxboot (line 19) | namespace ams::nxboot {
FILE: fusee/program/source/mtc/fusee_mtc_erista.cpp
type ams::nxboot (line 21) | namespace ams::nxboot {
function EmcDvfsTimingTable (line 75) | EmcDvfsTimingTable *GetEmcDvfsTimingTables(int index, void *mtc_tables...
function IsSamePll (line 92) | bool IsSamePll(u32 next_2x, u32 prev_2x) {
function PllReprogram (line 102) | bool PllReprogram(u32 next_rate_khz, u32 next_clk_src, u32 prev_rate_k...
function u32 (line 154) | u32 ProgramPllm(u32 next_rate_khz, u32 next_clk_src, bool is_pllmb) {
function u32 (line 220) | u32 GetDllState(EmcDvfsTimingTable *timing) {
function WaitForUpdate (line 224) | int WaitForUpdate(u32 reg_offset, u32 mask, bool updated, u32 fbio_cfg...
function TimingUpdate (line 256) | void TimingUpdate(u32 fbio_cfg7) {
function DllDisable (line 264) | void DllDisable(u32 fbio_cfg7) {
function DllEnableStall (line 275) | void DllEnableStall(u32 fbio_cfg7) {
function ChangeDllSrc (line 287) | void ChangeDllSrc(EmcDvfsTimingTable *dst_timing, u32 next_clk_src) {
function SetShadowBypass (line 314) | void SetShadowBypass(u32 val) {
function u32 (line 318) | u32 DllPrelock(EmcDvfsTimingTable *dst_timing, bool training_enabled, ...
function CcfifoWrite (line 372) | void CcfifoWrite(u32 addr, u32 data, u32 wait) {
function u32 (line 377) | u32 ActualOscClocks(u32 in) {
function StartPeriodicCompensation (line 389) | void StartPeriodicCompensation() {
function u32 (line 394) | u32 UpdateClockTreeDelay(EmcDvfsTimingTable *src_timing, EmcDvfsTiming...
function u32 (line 678) | u32 PeriodicCompensationHandler(int type, u32 dram_dev_num, u32 fbio_c...
function ApplyPeriodicCompensationTrimmer (line 757) | uint32_t ApplyPeriodicCompensationTrimmer(EmcDvfsTimingTable *dst_timi...
function DvfsPowerRampDown (line 961) | uint32_t DvfsPowerRampDown(bool flip_backward, EmcDvfsTimingTable *src...
function DvfsPowerRampUp (line 1047) | uint32_t DvfsPowerRampUp(bool flip_backward, EmcDvfsTimingTable *src_t...
function FreqChange (line 1151) | void FreqChange(EmcDvfsTimingTable *src_timing, EmcDvfsTimingTable *ds...
function CleanupActiveShadowCopy (line 2598) | void CleanupActiveShadowCopy(EmcDvfsTimingTable *src_timing, EmcDvfsTi...
function TrainFreq (line 2666) | void TrainFreq(EmcDvfsTimingTable *src_timing, EmcDvfsTimingTable *dst...
function PeriodicCompensationRoutine (line 2733) | void PeriodicCompensationRoutine(EmcDvfsTimingTable *timing) {
function Dvfs (line 2796) | void Dvfs(EmcDvfsTimingTable *dst_timing, EmcDvfsTimingTable *src_timi...
function DoMemoryTrainingErista (line 2841) | void DoMemoryTrainingErista(int index, void *mtc_tables_buffer) {
FILE: fusee/program/source/mtc/fusee_mtc_mariko.cpp
type ams::nxboot (line 22) | namespace ams::nxboot {
function EmcDvfsTimingTable (line 75) | EmcDvfsTimingTable *GetEmcDvfsTimingTables(int index, void *mtc_tables...
function IsSamePll (line 113) | bool IsSamePll(u32 next_2x, u32 prev_2x) {
function PllReprogram (line 123) | bool PllReprogram(u32 next_rate_khz, u32 next_clk_src, u32 prev_rate_k...
function u32 (line 168) | u32 ProgramPllm(u32 next_rate_khz, u32 next_clk_src, u32 ret_clk_src, ...
function u32 (line 233) | u32 GetDllState(EmcDvfsTimingTable *timing) {
function WaitForUpdate (line 237) | int WaitForUpdate(u32 reg_offset, u32 mask, bool updated, u32 fbio_cfg...
function TimingUpdate (line 269) | void TimingUpdate(u32 fbio_cfg7) {
function CcfifoWrite (line 277) | void CcfifoWrite(u32 addr, u32 data, u32 wait) {
function u32 (line 282) | u32 ActualOscClocks(u32 in) {
function u32 (line 294) | u32 DivideUpFloat(u32 a, u32 b) {
function StartPeriodicCompensation (line 302) | void StartPeriodicCompensation() {
function u32 (line 307) | u32 SetShadowBypass(u32 val, u32 emc_dbg) {
function ApplyPeriodicCompensationTrimmer (line 314) | uint32_t ApplyPeriodicCompensationTrimmer(EmcDvfsTimingTable *timing, ...
function u32 (line 511) | u32 UpdateClockTreeDelay(EmcDvfsTimingTable *src_timing, EmcDvfsTiming...
function u32 (line 800) | u32 PeriodicCompensationHandler(int type, u32 dram_dev_num, EmcDvfsTim...
function ChangeDllSrc (line 875) | void ChangeDllSrc(EmcDvfsTimingTable *dst_timing, u32 next_clk_src) {
function DllPrelock (line 895) | void DllPrelock(EmcDvfsTimingTable *dst_timing, EmcDvfsTimingTable *sr...
function DllDisable (line 951) | void DllDisable(u32 fbio_cfg7) {
function PllDisable (line 962) | void PllDisable(u32 dst_clk_src) {
function DvfsPowerRampDown (line 979) | void DvfsPowerRampDown(EmcDvfsTimingTable *src_timing, EmcDvfsTimingTa...
function u32 (line 1023) | u32 DvfsPowerRampUp(u32 dst_clock_period, bool flip_backward, EmcDvfsT...
function FreqChange (line 1078) | void FreqChange(EmcDvfsTimingTable *src_timing, EmcDvfsTimingTable *ds...
function CleanupActiveShadowCopy (line 2646) | void CleanupActiveShadowCopy(EmcDvfsTimingTable *src_timing, EmcDvfsTi...
function TrainFreq (line 2698) | void TrainFreq(EmcDvfsTimingTable *src_timing, EmcDvfsTimingTable *dst...
function Dvfs (line 2745) | void Dvfs(EmcDvfsTimingTable *dst_timing, EmcDvfsTimingTable *src_timi...
function DoMemoryTrainingMariko (line 2797) | void DoMemoryTrainingMariko(bool *out_did_training, int index, void *m...
function RestoreMemoryClockRateMariko (line 2826) | void RestoreMemoryClockRateMariko(void *mtc_tables_buffer) {
FILE: fusee/program/source/mtc/fusee_mtc_timing_table_common.hpp
type ams::nxboot (line 19) | namespace ams::nxboot {
FILE: fusee/program/source/mtc/fusee_mtc_timing_table_erista.hpp
type ams::nxboot::erista (line 20) | namespace ams::nxboot::erista {
type EmcDvfsTimingTable (line 250) | struct EmcDvfsTimingTable {
FILE: fusee/program/source/mtc/fusee_mtc_timing_table_mariko.hpp
type ams::nxboot::mariko (line 20) | namespace ams::nxboot::mariko {
type EmcDvfsTimingTable (line 257) | struct EmcDvfsTimingTable {
FILE: fusee/program/source/sdram/fusee_sdram.cpp
type ams::nxboot (line 20) | namespace ams::nxboot {
type SdramParamsImpl (line 25) | struct SdramParamsImpl
type SdramParamsImpl<fuse::SocType_Erista> (line 27) | struct SdramParamsImpl<fuse::SocType_Erista> { using Type = br::erista...
type SdramParamsImpl<fuse::SocType_Mariko> (line 28) | struct SdramParamsImpl<fuse::SocType_Mariko> { using Type = br::mariko...
function SpareWrite (line 124) | void SpareWrite(u32 reg, u32 value) {
function InitializeSdramImpl (line 136) | void InitializeSdramImpl(BootSdramParams<SocType> *params) {
function u32 (line 933) | consteval u32 GetBitMask32(u32 range) {
function SaveSdramParamsToScratch (line 942) | void SaveSdramParamsToScratch(BootSdramParams<SocType> *params) {
function InitializeSdram (line 1064) | void InitializeSdram(void *generic_params) {
function InitializeSdram (line 1097) | void InitializeSdram() {
FILE: fusee/program/source/sdram/fusee_sdram.hpp
type ams::nxboot (line 19) | namespace ams::nxboot {
FILE: fusee/program/source/sein/fusee_secure_initialize.cpp
type ams::nxboot (line 20) | namespace ams::nxboot {
function DoRcmWorkaround (line 35) | void DoRcmWorkaround(const void *sbk, size_t sbk_size) {
function DoMbistWorkaround (line 61) | void DoMbistWorkaround() {
function EnableArc (line 172) | void EnableArc() {
function InitializeClock (line 200) | void InitializeClock() {
function InitializePinmux (line 269) | void InitializePinmux(fuse::HardwareType hw_type) {
function SecureInitialize (line 286) | void SecureInitialize(bool enable_log) {
FILE: fusee/program/source/sein/fusee_secure_initialize.hpp
type ams::nxboot (line 19) | namespace ams::nxboot {
FILE: fusee/program/update_mtc_tables.py
function lz4_compress (line 5) | def lz4_compress(data):
function read_file (line 12) | def read_file(fn):
function write_file (line 16) | def write_file(fn, data):
function get_param_size (line 20) | def get_param_size(soc):
function main (line 26) | def main(argc, argv):
FILE: fusee/program/update_sdram_params.py
function lz4_compress (line 5) | def lz4_compress(data):
function read_file (line 12) | def read_file(fn):
function write_file (line 16) | def write_file(fn, data):
function get_param_size (line 20) | def get_param_size(soc):
function main (line 26) | def main(argc, argv):
FILE: libraries/libexosphere/include/exosphere/actmon.hpp
type ams::actmon (line 19) | namespace ams::actmon {
FILE: libraries/libexosphere/include/exosphere/br/br_types.hpp
type ams::br (line 22) | namespace ams::br {
type BootEcid (line 24) | struct BootEcid {
FILE: libraries/libexosphere/include/exosphere/br/impl/br_common_types.hpp
type ams::br (line 19) | namespace ams::br {
type BootMemoryType (line 21) | enum BootMemoryType : u32 {
FILE: libraries/libexosphere/include/exosphere/br/impl/br_erista_types.hpp
type ams::br::erista (line 20) | namespace ams::br::erista {
type BootSdramParams (line 22) | struct BootSdramParams {
FILE: libraries/libexosphere/include/exosphere/br/impl/br_mariko_types.hpp
type ams::br::mariko (line 20) | namespace ams::br::mariko {
type BootSdramParams (line 22) | struct BootSdramParams {
FILE: libraries/libexosphere/include/exosphere/charger.hpp
type ams::charger (line 19) | namespace ams::charger {
FILE: libraries/libexosphere/include/exosphere/clkrst.hpp
type ams::clkrst (line 19) | namespace ams::clkrst {
type BpmpClockRate (line 57) | enum BpmpClockRate {
FILE: libraries/libexosphere/include/exosphere/flow.hpp
type ams::flow (line 19) | namespace ams::flow {
FILE: libraries/libexosphere/include/exosphere/fuse.hpp
type ams::fuse (line 21) | namespace ams::fuse {
type HardwareType (line 23) | enum HardwareType {
type SocType (line 34) | enum SocType {
type HardwareState (line 40) | enum HardwareState {
type PatchVersion (line 46) | enum PatchVersion {
type DramId (line 50) | enum DramId {
type RetailInteractiveDisplayState (line 90) | enum RetailInteractiveDisplayState {
FILE: libraries/libexosphere/include/exosphere/gic.hpp
type ams::gic (line 19) | namespace ams::gic {
type InterruptMode (line 21) | enum InterruptMode {
FILE: libraries/libexosphere/include/exosphere/hw.hpp
type ams::hw (line 21) | namespace ams::hw { using namespace ams::hw::arch::arm64; }
type ams::hw (line 24) | namespace ams::hw { using namespace ams::hw::arch::arm; }
FILE: libraries/libexosphere/include/exosphere/hw/hw_arm.hpp
type ams::hw::arch::arm (line 19) | namespace ams::hw::arch::arm {
function ALWAYS_INLINE (line 25) | ALWAYS_INLINE void DataSynchronizationBarrier() {
function ALWAYS_INLINE (line 29) | ALWAYS_INLINE void DataSynchronizationBarrierInnerShareable() {
function ALWAYS_INLINE (line 33) | ALWAYS_INLINE void DataMemoryBarrier() {
function ALWAYS_INLINE (line 37) | ALWAYS_INLINE void InstructionSynchronizationBarrier() {
FILE: libraries/libexosphere/include/exosphere/hw/hw_arm64.hpp
type ams::hw::arch::arm64 (line 21) | namespace ams::hw::arch::arm64 {
function ALWAYS_INLINE (line 23) | ALWAYS_INLINE void DataSynchronizationBarrier() {
function ALWAYS_INLINE (line 27) | ALWAYS_INLINE void DataSynchronizationBarrierInnerShareable() {
function ALWAYS_INLINE (line 31) | ALWAYS_INLINE void DataMemoryBarrier() {
function ALWAYS_INLINE (line 35) | ALWAYS_INLINE void InstructionSynchronizationBarrier() {
function ALWAYS_INLINE (line 39) | ALWAYS_INLINE void WaitForInterrupt() {
function ALWAYS_INLINE (line 43) | ALWAYS_INLINE void WaitForEvent() {
function ALWAYS_INLINE (line 47) | ALWAYS_INLINE void SendEvent() {
function ALWAYS_INLINE (line 51) | ALWAYS_INLINE int CountLeadingZeros(u64 v) {
function ALWAYS_INLINE (line 57) | ALWAYS_INLINE int CountLeadingZeros(u32 v) {
function ALWAYS_INLINE (line 63) | ALWAYS_INLINE int GetCurrentCoreId() {
FILE: libraries/libexosphere/include/exosphere/hw/hw_arm64_cache.hpp
type ams::hw::arch::arm64 (line 19) | namespace ams::hw::arch::arm64 {
function ALWAYS_INLINE (line 29) | ALWAYS_INLINE void InvalidateEntireTlb() {
function ALWAYS_INLINE (line 33) | ALWAYS_INLINE void InvalidateDataCacheLine(void *ptr) {
function ALWAYS_INLINE (line 37) | ALWAYS_INLINE void FlushDataCacheLine(void *ptr) {
function ALWAYS_INLINE (line 41) | ALWAYS_INLINE void InvalidateEntireInstructionCache() {
function ALWAYS_INLINE (line 45) | ALWAYS_INLINE void InvalidateTlb(uintptr_t address) {
function ALWAYS_INLINE (line 50) | ALWAYS_INLINE void InvalidateTlbLastLevel(uintptr_t address) {
FILE: libraries/libexosphere/include/exosphere/hw/hw_arm64_system_registers.hpp
type ams::hw::arch::arm64 (line 19) | namespace ams::hw::arch::arm64 {
type SctlrEl3 (line 181) | struct SctlrEl3 {
type SctlrEl2 (line 194) | struct SctlrEl2 {
type SctlrEl1 (line 207) | struct SctlrEl1 {
type ScrEl3 (line 232) | struct ScrEl3 {
type CptrEl3 (line 250) | struct CptrEl3 {
type TcrEl3 (line 257) | struct TcrEl3 {
type ClidrEl1 (line 269) | struct ClidrEl1 {
type CcsidrEl1 (line 278) | struct CcsidrEl1 {
type CsselrEl1 (line 288) | struct CsselrEl1 {
type CpuactlrEl1CortexA57 (line 294) | struct CpuactlrEl1CortexA57 {
type CpuectlrEl1CortexA57 (line 303) | struct CpuectlrEl1CortexA57 {
type DbgAuthStatusEl1 (line 312) | struct DbgAuthStatusEl1 {
type CnthctlEl2 (line 320) | struct CnthctlEl2 {
type ActlrCortexA57 (line 329) | struct ActlrCortexA57 {
type HcrEl2 (line 338) | struct HcrEl2 {
type EsrEl3 (line 342) | struct EsrEl3 {
FILE: libraries/libexosphere/include/exosphere/i2c.hpp
type ams::i2c (line 19) | namespace ams::i2c {
type Port (line 21) | enum Port {
function u8 (line 36) | inline u8 QueryByte(Port port, int address, int r) {
function SendByte (line 42) | inline void SendByte(Port port, int address, int r, u8 byte) {
FILE: libraries/libexosphere/include/exosphere/log.hpp
type ams::log (line 19) | namespace ams::log {
FILE: libraries/libexosphere/include/exosphere/mmu/mmu_api.arch.arm.hpp
type ams::mmu::arch::arm (line 19) | namespace ams::mmu::arch::arm {
FILE: libraries/libexosphere/include/exosphere/mmu/mmu_api.arch.arm64.hpp
type ams::mmu::arch::arm64 (line 19) | namespace ams::mmu::arch::arm64 {
type PageTableTableAttribute (line 21) | enum PageTableTableAttribute : u64 {
type PageTableMappingAttribute (line 33) | enum PageTableMappingAttribute : u64{
type MemoryRegionAttribute (line 102) | enum MemoryRegionAttribute : u64 {
function ALWAYS_INLINE (line 143) | constexpr ALWAYS_INLINE PageTableMappingAttribute AddMappingAttributeI...
function ALWAYS_INLINE (line 172) | constexpr ALWAYS_INLINE u64 MakeTableEntry(u64 address, PageTableTable...
function ALWAYS_INLINE (line 176) | constexpr ALWAYS_INLINE u64 MakeL1BlockEntry(u64 address, PageTableMap...
function ALWAYS_INLINE (line 180) | constexpr ALWAYS_INLINE u64 MakeL2BlockEntry(u64 address, PageTableMap...
function ALWAYS_INLINE (line 184) | constexpr ALWAYS_INLINE u64 MakeL3BlockEntry(u64 address, PageTableMap...
function ALWAYS_INLINE (line 188) | constexpr ALWAYS_INLINE uintptr_t GetL2Offset(uintptr_t address) {
function ALWAYS_INLINE (line 192) | constexpr ALWAYS_INLINE u64 GetL1EntryIndex(uintptr_t address) {
function ALWAYS_INLINE (line 196) | constexpr ALWAYS_INLINE u64 GetL2EntryIndex(uintptr_t address) {
function ALWAYS_INLINE (line 200) | constexpr ALWAYS_INLINE u64 GetL3EntryIndex(uintptr_t address) {
function ALWAYS_INLINE (line 204) | constexpr ALWAYS_INLINE void SetTableEntryImpl(volatile u64 *table, u6...
function ALWAYS_INLINE (line 209) | constexpr ALWAYS_INLINE void SetTableEntry(u64 *table, u64 index, u64 ...
function ALWAYS_INLINE (line 221) | constexpr ALWAYS_INLINE void SetL1TableEntry(u64 *table, uintptr_t vir...
function ALWAYS_INLINE (line 225) | constexpr ALWAYS_INLINE void SetL2TableEntry(u64 *table, uintptr_t vir...
function ALWAYS_INLINE (line 229) | constexpr ALWAYS_INLINE void SetL1BlockEntry(u64 *table, uintptr_t vir...
function ALWAYS_INLINE (line 238) | constexpr ALWAYS_INLINE void SetL2BlockEntry(u64 *table, uintptr_t vir...
function ALWAYS_INLINE (line 247) | constexpr ALWAYS_INLINE void SetL3BlockEntry(u64 *table, uintptr_t vir...
function ALWAYS_INLINE (line 256) | constexpr ALWAYS_INLINE void InvalidateL1Entries(volatile u64 *table, ...
function ALWAYS_INLINE (line 266) | constexpr ALWAYS_INLINE void InvalidateL2Entries(volatile u64 *table, ...
function ALWAYS_INLINE (line 276) | constexpr ALWAYS_INLINE void InvalidateL3Entries(volatile u64 *table, ...
FILE: libraries/libexosphere/include/exosphere/mmu/mmu_api.hpp
type ams::mmu (line 27) | namespace ams::mmu {
FILE: libraries/libexosphere/include/exosphere/pinmux.hpp
type ams::pinmux (line 20) | namespace ams::pinmux {
FILE: libraries/libexosphere/include/exosphere/pkg1/pkg1_api.hpp
type ams::pkg1 (line 19) | namespace ams::pkg1 {
FILE: libraries/libexosphere/include/exosphere/pkg1/pkg1_boot_config.hpp
type ams::pkg1 (line 19) | namespace ams::pkg1 {
type MemorySize (line 21) | enum MemorySize {
type MemoryArrange (line 27) | enum MemoryArrange {
type MemoryMode (line 33) | enum MemoryMode {
function ALWAYS_INLINE (line 51) | constexpr ALWAYS_INLINE MemorySize GetMemorySize(MemoryMode mode) {
function ALWAYS_INLINE (line 55) | constexpr ALWAYS_INLINE MemoryArrange GetMemoryArrange(MemoryMode mode) {
function ALWAYS_INLINE (line 59) | constexpr ALWAYS_INLINE MemoryMode MakeMemoryMode(MemorySize size, Mem...
type BootConfigData (line 63) | struct BootConfigData {
method IsDevelopmentFunctionEnabled (line 73) | constexpr bool IsDevelopmentFunctionEnabled() const {
method IsSErrorDebugEnabled (line 77) | constexpr bool IsSErrorDebugEnabled() const {
method u8 (line 81) | constexpr u8 GetKernelFlags0() const {
method u8 (line 85) | constexpr u8 GetKernelFlags1() const {
method MemoryMode (line 89) | constexpr MemoryMode GetMemoryMode() const {
method IsInitialTscValueValid (line 93) | constexpr bool IsInitialTscValueValid() const {
method u64 (line 97) | constexpr u64 GetInitialTscValue() const {
type BootConfigSignedData (line 104) | struct BootConfigSignedData {
method IsPackage2EncryptionDisabled (line 114) | constexpr bool IsPackage2EncryptionDisabled() const {
method IsPackage2SignatureVerificationDisabled (line 118) | constexpr bool IsPackage2SignatureVerificationDisabled() const {
method IsProgramVerificationDisabled (line 122) | constexpr bool IsProgramVerificationDisabled() const {
method SetPackage2SignatureVerificationDisabled (line 126) | constexpr void SetPackage2SignatureVerificationDisabled(bool decrypt...
method SetPackage2EncryptionDisabled (line 130) | constexpr void SetPackage2EncryptionDisabled(bool decrypted) {
type BootConfig (line 137) | struct BootConfig {
FILE: libraries/libexosphere/include/exosphere/pkg1/pkg1_bootloader_parameters.hpp
type ams::pkg1 (line 19) | namespace ams::pkg1 {
type BootloaderState (line 21) | enum BootloaderState {
type SecureMonitorState (line 29) | enum SecureMonitorState {
type BctParameters (line 34) | struct BctParameters {
type SecureMonitorParameters (line 42) | struct SecureMonitorParameters {
type BootloaderAttribute (line 62) | enum BootloaderAttribute {
FILE: libraries/libexosphere/include/exosphere/pkg1/pkg1_error_types.hpp
type ams::pkg1 (line 19) | namespace ams::pkg1 {
type ErrorReason (line 21) | enum ErrorReason {
type ErrorColor (line 49) | enum ErrorColor {
type ErrorInfo (line 61) | enum ErrorInfo {
function ErrorReason (line 98) | constexpr inline ErrorReason GetErrorReason(u32 info) {
function ErrorInfo (line 102) | constexpr inline ErrorInfo MakeKernelPanicResetInfo(u32 color) {
FILE: libraries/libexosphere/include/exosphere/pkg1/pkg1_key_generation.hpp
type ams::pkg1 (line 19) | namespace ams::pkg1 {
type KeyGeneration (line 21) | enum KeyGeneration : int {
function IsValidDeviceUniqueKeyGeneration (line 57) | constexpr bool IsValidDeviceUniqueKeyGeneration(int generation) {
function IsValidKeyGeneration (line 61) | constexpr bool IsValidKeyGeneration(int generation) {
FILE: libraries/libexosphere/include/exosphere/pkg1/pkg1_se_key_slots.hpp
type ams::pkg1 (line 19) | namespace ams::pkg1 {
type AesKeySlot (line 21) | enum AesKeySlot {
type RsaKeySlot (line 66) | enum RsaKeySlot {
function IsUserAesKeySlot (line 71) | constexpr bool IsUserAesKeySlot(int slot) {
FILE: libraries/libexosphere/include/exosphere/pkg2.hpp
type ams::pkg2 (line 19) | namespace ams::pkg2 {
type Package2Meta (line 29) | struct Package2Meta {
method ALWAYS_INLINE (line 51) | static ALWAYS_INLINE u32 ReadWord(const void *ptr, int offset) {
method ALWAYS_INLINE (line 55) | ALWAYS_INLINE u8 GetKeyGeneration() const {
method ALWAYS_INLINE (line 59) | ALWAYS_INLINE u32 GetSize() const {
type Package2Header (line 66) | struct Package2Header {
type StorageLayout (line 73) | struct StorageLayout {
FILE: libraries/libexosphere/include/exosphere/pmc.hpp
type ams::pmc (line 19) | namespace ams::pmc {
type SecureRegister (line 21) | enum SecureRegister {
type LockState (line 44) | enum class LockState {
FILE: libraries/libexosphere/include/exosphere/pmic.hpp
type ams::pmic (line 19) | namespace ams::pmic {
type Regulator (line 21) | enum Regulator {
FILE: libraries/libexosphere/include/exosphere/pmic_setup.hpp
type ams::pmic (line 21) | namespace ams::pmic {
FILE: libraries/libexosphere/include/exosphere/rtc.hpp
type ams::rtc (line 19) | namespace ams::rtc {
FILE: libraries/libexosphere/include/exosphere/se/se_aes.hpp
type ams::se (line 20) | namespace ams::se {
FILE: libraries/libexosphere/include/exosphere/se/se_common.hpp
type ams::secmon (line 19) | namespace ams::secmon {
type ams::se (line 25) | namespace ams::se {
type KeySlotLockFlags (line 29) | enum KeySlotLockFlags {
function ALWAYS_INLINE (line 49) | ALWAYS_INLINE u8 *GetEphemeralWorkBlock() {
FILE: libraries/libexosphere/include/exosphere/se/se_hash.hpp
type ams::se (line 19) | namespace ams::se {
FILE: libraries/libexosphere/include/exosphere/se/se_management.hpp
type ams::se (line 19) | namespace ams::se {
FILE: libraries/libexosphere/include/exosphere/se/se_oaep.hpp
type ams::se (line 19) | namespace ams::se {
FILE: libraries/libexosphere/include/exosphere/se/se_rng.hpp
type ams::se (line 19) | namespace ams::se {
FILE: libraries/libexosphere/include/exosphere/se/se_rsa.hpp
type ams::se (line 20) | namespace ams::se {
FILE: libraries/libexosphere/include/exosphere/se/se_suspend.hpp
type ams::se (line 21) | namespace ams::se {
type Context (line 31) | struct Context {
type StickyBits (line 43) | struct StickyBits {
FILE: libraries/libexosphere/include/exosphere/secmon/secmon_configuration_context.arch.arm64.hpp
type ams::secmon (line 22) | namespace ams::secmon {
type ConfigurationContext (line 24) | struct ConfigurationContext {
type impl (line 45) | namespace impl {
function ALWAYS_INLINE (line 47) | ALWAYS_INLINE uintptr_t GetConfigurationContextAddress() {
function ALWAYS_INLINE (line 53) | ALWAYS_INLINE ConfigurationContext &GetConfigurationContext() {
function ALWAYS_INLINE (line 57) | ALWAYS_INLINE u8 *GetMasterKeyStorage(int generation) {
function ALWAYS_INLINE (line 61) | ALWAYS_INLINE u8 *GetDeviceMasterKeyStorage(int generation) {
function ALWAYS_INLINE (line 65) | ALWAYS_INLINE u8 *GetRsaPrivateExponentStorage(int which) {
function ALWAYS_INLINE (line 69) | ALWAYS_INLINE void SetKeyGeneration(int generation) {
function ALWAYS_INLINE (line 73) | ALWAYS_INLINE void SetTargetFirmware(ams::TargetFirmware target_firm...
function ALWAYS_INLINE (line 77) | ALWAYS_INLINE pkg1::BootConfig *GetBootConfigStorage() {
function ALWAYS_INLINE (line 83) | ALWAYS_INLINE const ConfigurationContext &GetConfigurationContext() {
function ALWAYS_INLINE (line 87) | ALWAYS_INLINE const SecureMonitorConfiguration &GetSecmonConfiguration...
function ALWAYS_INLINE (line 91) | ALWAYS_INLINE const EmummcConfiguration &GetEmummcConfiguration() {
function ALWAYS_INLINE (line 95) | ALWAYS_INLINE const pkg1::BootConfig &GetBootConfig() {
function ALWAYS_INLINE (line 99) | ALWAYS_INLINE ams::TargetFirmware GetTargetFirmware() {
function ALWAYS_INLINE (line 103) | ALWAYS_INLINE int GetKeyGeneration() {
function ALWAYS_INLINE (line 107) | ALWAYS_INLINE fuse::HardwareType GetHardwareType() {
function ALWAYS_INLINE (line 111) | ALWAYS_INLINE fuse::SocType GetSocType() {
function ALWAYS_INLINE (line 115) | ALWAYS_INLINE fuse::HardwareState GetHardwareState() {
function ALWAYS_INLINE (line 119) | ALWAYS_INLINE u16 GetLcdVendor() {
function ALWAYS_INLINE (line 123) | ALWAYS_INLINE uart::Port GetLogPort() {
function ALWAYS_INLINE (line 127) | ALWAYS_INLINE u8 GetLogFlags() {
function ALWAYS_INLINE (line 131) | ALWAYS_INLINE u32 GetLogBaudRate() {
function ALWAYS_INLINE (line 135) | ALWAYS_INLINE bool IsProduction() {
FILE: libraries/libexosphere/include/exosphere/secmon/secmon_emummc_context.hpp
type ams::secmon (line 19) | namespace ams::secmon {
type EmummcType (line 21) | enum EmummcType : u32 {
type EmummcMmc (line 27) | enum EmummcMmc {
type EmummcFilePath (line 35) | struct EmummcFilePath {
type EmummcBaseConfiguration (line 41) | struct EmummcBaseConfiguration {
method IsValid (line 49) | constexpr bool IsValid() const {
method IsEmummcActive (line 53) | constexpr bool IsEmummcActive() const {
type EmummcPartitionConfiguration (line 60) | struct EmummcPartitionConfiguration {
type EmummcFileConfiguration (line 65) | struct EmummcFileConfiguration {
type EmummcConfiguration (line 70) | struct EmummcConfiguration {
method IsValid (line 78) | constexpr bool IsValid() const {
method IsEmummcActive (line 82) | constexpr bool IsEmummcActive() const {
FILE: libraries/libexosphere/include/exosphere/secmon/secmon_memory_layout.hpp
type ams::secmon (line 20) | namespace ams::secmon {
type MemoryRegion (line 24) | struct MemoryRegion {
method MemoryRegion (line 29) | consteval MemoryRegion(Address address, size_t size) : m_start_addre...
method Address (line 35) | constexpr Address GetStartAddress() const {
method Address (line 39) | constexpr Address GetAddress() const {
method Address (line 43) | constexpr Address GetEndAddress() const {
method Address (line 47) | constexpr Address GetLastAddress() const {
method GetSize (line 51) | constexpr size_t GetSize() const {
method Contains (line 55) | constexpr bool Contains(Address address, size_t size) const {
method Contains (line 59) | constexpr bool Contains(const MemoryRegion &rhs) const {
method ALWAYS_INLINE (line 64) | ALWAYS_INLINE T *GetPointer() const {
method ALWAYS_INLINE (line 69) | ALWAYS_INLINE T *GetEndPointer() const {
function GetPhysicalTzramProgramAddress (line 236) | constexpr uintptr_t GetPhysicalTzramProgramAddress(uintptr_t virtual_a...
FILE: libraries/libexosphere/include/exosphere/secmon/secmon_monitor_context.hpp
type ams::secmon (line 22) | namespace ams::secmon {
type SecureMonitorConfigurationFlag (line 24) | enum SecureMonitorConfigurationFlag : u32 {
type SecureMonitorStorageConfiguration (line 37) | struct SecureMonitorStorageConfiguration {
method IsValid (line 50) | constexpr bool IsValid() const { return this->magic == Magic; }
type SecureMonitorConfiguration (line 55) | struct SecureMonitorConfiguration {
method CopyFrom (line 69) | constexpr void CopyFrom(const SecureMonitorStorageConfiguration &sto...
method SetFuseInfo (line 79) | void SetFuseInfo() {
method GetTargetFirmware (line 85) | constexpr ams::TargetFirmware GetTargetFirmware() const { return thi...
method GetKeyGeneration (line 86) | constexpr int GetKeyGeneration() const { return this->key_generation; }
method GetHardwareType (line 87) | constexpr fuse::HardwareType GetHardwareType() const { return stat...
method GetSocType (line 88) | constexpr fuse::SocType GetSocType() const { return stat...
method GetHardwareState (line 89) | constexpr fuse::HardwareState GetHardwareState() const { return stat...
method GetLogPort (line 90) | constexpr uart::Port GetLogPort() const { return static_cast<uart::P...
method u8 (line 91) | constexpr u8 GetLogFlags() const { return this->log_flags; }
method u16 (line 93) | constexpr u16 GetLcdVendor() const { return this->lcd_vendor; }
method u32 (line 95) | constexpr u32 GetLogBaudRate() const { return this->log_baud_rate; }
method IsProduction (line 97) | constexpr bool IsProduction() const { return this->GetHardwareState(...
method IsDevelopmentFunctionEnabledForKernel (line 99) | constexpr bool IsDevelopmentFunctionEnabledForKernel() const { retu...
method IsDevelopmentFunctionEnabledForUser (line 100) | constexpr bool IsDevelopmentFunctionEnabledForUser() const { retu...
method DisableUserModeExceptionHandlers (line 101) | constexpr bool DisableUserModeExceptionHandlers() const { retu...
method EnableUserModePerformanceCounterAccess (line 102) | constexpr bool EnableUserModePerformanceCounterAccess() const { retu...
method ShouldUseBlankCalibrationBinary (line 103) | constexpr bool ShouldUseBlankCalibrationBinary() const { retu...
method AllowWritingToCalibrationBinarySysmmc (line 104) | constexpr bool AllowWritingToCalibrationBinarySysmmc() const { retu...
method IsUsb30ForceEnabled (line 105) | constexpr bool IsUsb30ForceEnabled() const { retu...
method IsDevelopmentFunctionEnabled (line 107) | constexpr bool IsDevelopmentFunctionEnabled(bool for_kern) const { r...
FILE: libraries/libexosphere/include/exosphere/secmon/secmon_volatile_context.hpp
type ams::secmon (line 21) | namespace ams::secmon {
type VolatileKeys (line 29) | struct VolatileKeys {
type VolatileData (line 49) | struct VolatileData {
function ALWAYS_INLINE (line 63) | ALWAYS_INLINE VolatileData &GetVolatileData() {
function ALWAYS_INLINE (line 67) | ALWAYS_INLINE u8 *GetRandomBytesCache() {
function ALWAYS_INLINE (line 71) | constexpr ALWAYS_INLINE size_t GetRandomBytesCacheSize() {
function ALWAYS_INLINE (line 75) | ALWAYS_INLINE u8 *GetSecurityEngineEphemeralWorkBlock() {
type boot (line 79) | namespace boot {
function ALWAYS_INLINE (line 81) | ALWAYS_INLINE VolatileKeys &GetVolatileKeys() {
function ALWAYS_INLINE (line 85) | ALWAYS_INLINE const u8 *GetBootConfigRsaModulus() {
function ALWAYS_INLINE (line 89) | ALWAYS_INLINE const u8 *GetPackage2RsaModulus(bool is_prod) {
function ALWAYS_INLINE (line 94) | ALWAYS_INLINE const u8 *GetPackage2AesKey() {
function ALWAYS_INLINE (line 98) | ALWAYS_INLINE const u8 *GetMasterKeySource() {
function ALWAYS_INLINE (line 102) | ALWAYS_INLINE const u8 *GetDeviceMasterKeySourceKekSource() {
function ALWAYS_INLINE (line 106) | ALWAYS_INLINE const u8 *GetMarikoMasterKekSource(bool is_prod) {
function ALWAYS_INLINE (line 111) | ALWAYS_INLINE const u8 *GetMasterKeyVector(bool is_prod, size_t i) {
function ALWAYS_INLINE (line 116) | ALWAYS_INLINE const u8 *GetDeviceMasterKeySourceSource(size_t i) {
function ALWAYS_INLINE (line 120) | ALWAYS_INLINE const u8 *GetDeviceMasterKekSource(bool is_prod, size_...
function ALWAYS_INLINE (line 125) | ALWAYS_INLINE pkg2::Package2Meta &GetEphemeralPackage2Meta() {
FILE: libraries/libexosphere/include/exosphere/tsec.hpp
type ams::tsec (line 19) | namespace ams::tsec {
FILE: libraries/libexosphere/include/exosphere/uart.hpp
type ams::uart (line 19) | namespace ams::uart {
type Port (line 21) | enum Port {
type Flags (line 33) | enum Flags {
FILE: libraries/libexosphere/include/exosphere/util.hpp
type ams::util (line 19) | namespace ams::util {
FILE: libraries/libexosphere/include/exosphere/wdt.hpp
type ams::wdt (line 19) | namespace ams::wdt {
FILE: libraries/libexosphere/source/actmon/actmon_api.cpp
type ams::actmon (line 19) | namespace ams::actmon {
function SetRegisterAddress (line 29) | void SetRegisterAddress(uintptr_t address) {
function HandleInterrupt (line 33) | void HandleInterrupt() {
function StartMonitoringBpmp (line 50) | void StartMonitoringBpmp(InterruptHandler handler) {
function StopMonitoringBpmp (line 80) | void StopMonitoringBpmp() {
FILE: libraries/libexosphere/source/actmon/actmon_registers.hpp
type ams::actmon (line 18) | namespace ams::actmon {
FILE: libraries/libexosphere/source/charger/charger_api.cpp
type ams::charger (line 18) | namespace ams::charger {
type EnHiZ (line 28) | enum EnHiZ : u8 {
function IsHiZMode (line 37) | bool IsHiZMode() {
function EnterHiZMode (line 41) | void EnterHiZMode() {
function ExitHiZMode (line 48) | void ExitHiZMode() {
FILE: libraries/libexosphere/source/clkrst/clkrst_api.cpp
type ams::clkrst (line 18) | namespace ams::clkrst {
type ClockParameters (line 26) | struct ClockParameters {
function EnableClock (line 35) | void EnableClock(const ClockParameters ¶m) {
function DisableClock (line 54) | void DisableClock(const ClockParameters ¶m) {
function EnablePllc (line 113) | void EnablePllc(BpmpClockRate rate) {
function DisablePllc (line 151) | void DisablePllc() {
function SetRegisterAddress (line 165) | void SetRegisterAddress(uintptr_t address) {
function SetFuseVisibility (line 169) | void SetFuseVisibility(bool visible) {
function EnableUartAClock (line 173) | void EnableUartAClock() {
function EnableUartBClock (line 177) | void EnableUartBClock() {
function EnableUartCClock (line 181) | void EnableUartCClock() {
function EnableActmonClock (line 185) | void EnableActmonClock() {
function EnableI2c1Clock (line 189) | void EnableI2c1Clock() {
function EnableI2c5Clock (line 193) | void EnableI2c5Clock() {
function EnableSeClock (line 197) | void EnableSeClock() {
function EnableCldvfsClock (line 204) | void EnableCldvfsClock() {
function EnableCsiteClock (line 208) | void EnableCsiteClock() {
function EnableTzramClock (line 212) | void EnableTzramClock() {
function EnableCache2Clock (line 216) | void EnableCache2Clock() {
function EnableCram2Clock (line 220) | void EnableCram2Clock() {
function EnableHost1xClock (line 224) | void EnableHost1xClock() {
function EnableTsecClock (line 228) | void EnableTsecClock() {
function EnableSorSafeClock (line 232) | void EnableSorSafeClock() {
function EnableSor0Clock (line 236) | void EnableSor0Clock() {
function EnableSor1Clock (line 240) | void EnableSor1Clock() {
function EnableKfuseClock (line 244) | void EnableKfuseClock() {
function DisableI2c1Clock (line 248) | void DisableI2c1Clock() {
function DisableHost1xClock (line 252) | void DisableHost1xClock() {
function DisableTsecClock (line 256) | void DisableTsecClock() {
function DisableSorSafeClock (line 260) | void DisableSorSafeClock() {
function DisableSor0Clock (line 264) | void DisableSor0Clock() {
function DisableSor1Clock (line 268) | void DisableSor1Clock() {
function DisableKfuseClock (line 272) | void DisableKfuseClock() {
function BpmpClockRate (line 276) | BpmpClockRate GetBpmpClockRate() {
function BpmpClockRate (line 280) | BpmpClockRate SetBpmpClockRate(BpmpClockRate rate) {
FILE: libraries/libexosphere/source/crypto/crypto_aes_impl_security_engine.cpp
type ams::crypto::impl (line 18) | namespace ams::crypto::impl {
function IsSupportedKeySize (line 22) | constexpr bool IsSupportedKeySize(size_t size) {
class AesImpl<16> (line 91) | class AesImpl<16>
class AesImpl<24> (line 92) | class AesImpl<24>
class AesImpl<32> (line 93) | class AesImpl<32>
FILE: libraries/libexosphere/source/flow/flow_api.cpp
type ams::flow (line 18) | namespace ams::flow {
type FlowControllerRegisterOffset (line 22) | struct FlowControllerRegisterOffset {
function u32 (line 37) | constexpr u32 GetHaltCpuEventsValue(bool resume_on_irq) {
function SetRegisterAddress (line 51) | void SetRegisterAddress(uintptr_t address) {
function ResetCpuRegisters (line 55) | void ResetCpuRegisters(int core) {
function SetCpuCsr (line 63) | void SetCpuCsr(int core, u32 enable_ext) {
function SetHaltCpuEvents (line 71) | void SetHaltCpuEvents(int core, bool resume_on_irq) {
function SetCc4Ctrl (line 75) | void SetCc4Ctrl(int core, u32 value) {
function ClearL2FlushControl (line 79) | void ClearL2FlushControl() {
FILE: libraries/libexosphere/source/fuse/fuse_api.cpp
type ams::fuse (line 19) | namespace ams::fuse {
type BypassEntry (line 29) | struct BypassEntry {
type OdmWord2 (line 34) | struct OdmWord2 {
type OdmWord4 (line 39) | struct OdmWord4 {
type OdmWord28 (line 52) | struct OdmWord28 {
function ALWAYS_INLINE (line 57) | constexpr ALWAYS_INLINE int GetHardwareStateValue(const util::BitPack3...
function ALWAYS_INLINE (line 65) | constexpr ALWAYS_INLINE int GetHardwareTypeValue(const util::BitPack32...
function ALWAYS_INLINE (line 75) | constexpr ALWAYS_INLINE int GetDramIdValue(const util::BitPack32 odm_w...
function ALWAYS_INLINE (line 89) | ALWAYS_INLINE volatile FuseRegisterRegion *GetRegisterRegion() {
function ALWAYS_INLINE (line 93) | ALWAYS_INLINE volatile FuseRegisters &GetRegisters() {
function ALWAYS_INLINE (line 97) | ALWAYS_INLINE volatile FuseChipRegistersCommon &GetChipRegistersCommon...
function ALWAYS_INLINE (line 101) | ALWAYS_INLINE volatile FuseChipRegistersErista &GetChipRegistersErista...
function ALWAYS_INLINE (line 105) | ALWAYS_INLINE volatile FuseChipRegistersMariko &GetChipRegistersMariko...
function IsIdle (line 109) | bool IsIdle() {
function WaitForIdle (line 113) | void WaitForIdle() {
function u32 (line 117) | u32 GetOdmWordImpl(int index, fuse::SocType soc_type) {
function u32 (line 138) | u32 GetCommonOdmWord(int index) {
function IsNewFuseFormat (line 142) | bool IsNewFuseFormat() {
function u32 (line 163) | constexpr u32 CompressLotCode(u32 lot0) {
function GetExpectedFuseVersionImpl (line 222) | constexpr int GetExpectedFuseVersionImpl(TargetFirmware target_fw) {
function SetRegisterAddress (line 237) | void SetRegisterAddress(uintptr_t address) {
function SetWriteSecureOnly (line 241) | void SetWriteSecureOnly() {
function Lockout (line 245) | void Lockout() {
function u32 (line 249) | u32 ReadWord(int address) {
function u32 (line 271) | u32 GetOdmWord(int index) {
function GetEcid (line 275) | void GetEcid(br::BootEcid *out) {
function u64 (line 299) | u64 GetDeviceId() {
function DramId (line 323) | DramId GetDramId() {
function HardwareType (line 328) | HardwareType GetHardwareType() {
function HardwareState (line 345) | HardwareState GetHardwareState() {
function PatchVersion (line 359) | PatchVersion GetPatchVersion() {
function RetailInteractiveDisplayState (line 364) | RetailInteractiveDisplayState GetRetailInteractiveDisplayState() {
function GetRegulator (line 368) | pmic::Regulator GetRegulator() {
function GetDeviceUniqueKeyGeneration (line 379) | int GetDeviceUniqueKeyGeneration() {
function SocType (line 387) | SocType GetSocType() {
function GetExpectedFuseVersion (line 411) | int GetExpectedFuseVersion(TargetFirmware target_fw) {
function GetFuseVersion (line 415) | int GetFuseVersion() {
function HasRcmVulnerabilityPatch (line 419) | bool HasRcmVulnerabilityPatch() {
function IsOdmProductionMode (line 464) | bool IsOdmProductionMode() {
function GetSecureBootKey (line 468) | bool GetSecureBootKey(void *dst) {
function ConfigureFuseBypass (line 481) | void ConfigureFuseBypass() {
FILE: libraries/libexosphere/source/fuse/fuse_registers.hpp
type ams::fuse (line 18) | namespace ams::fuse {
type FuseRegisters (line 20) | struct FuseRegisters {
type FuseChipRegistersCommon (line 50) | struct FuseChipRegistersCommon {
type FuseChipRegistersErista (line 199) | struct FuseChipRegistersErista {
type FuseChipRegistersMariko (line 348) | struct FuseChipRegistersMariko {
type FuseRegisterRegion (line 496) | struct FuseRegisterRegion {
type FUSE_FUSECTRL_STATE (line 522) | enum FUSE_FUSECTRL_STATE {
FILE: libraries/libexosphere/source/gic/gic_api.cpp
type ams::gic (line 18) | namespace ams::gic {
type GicDistributor (line 22) | struct GicDistributor {
type SgirTargetListFilter (line 67) | enum SgirTargetListFilter : u32 {
type GicCpuInterface (line 78) | struct GicCpuInterface {
function GicDistributor (line 111) | volatile GicDistributor *GetDistributor() {
type SgirTargetListFilter (line 67) | enum SgirTargetListFilter : u32 {
function GicCpuInterface (line 115) | volatile GicCpuInterface *GetCpuInterface() {
function ReadWrite (line 119) | void ReadWrite(uintptr_t address, int width, int i, u32 value) {
function Write (line 134) | void Write(uintptr_t address, int width, int i, u32 value) {
function SetRegisterAddress (line 147) | void SetRegisterAddress(uintptr_t distributor_address, uintptr_t cpu_i...
function InitializeCommon (line 152) | void InitializeCommon() {
function InitializeCoreUnique (line 170) | void InitializeCoreUnique() {
function SetPriority (line 193) | void SetPriority(int interrupt_id, int priority) {
function SetInterruptGroup (line 197) | void SetInterruptGroup(int interrupt_id, int group) {
function SetEnable (line 201) | void SetEnable(int interrupt_id, bool enable) {
function SetSpiTargetCpu (line 205) | void SetSpiTargetCpu(int interrupt_id, u32 cpu_mask) {
function SetSpiMode (line 209) | void SetSpiMode(int interrupt_id, InterruptMode mode) {
function SetPending (line 213) | void SetPending(int interrupt_id) {
function GetInterruptRequestId (line 217) | int GetInterruptRequestId() {
function SetEndOfInterrupt (line 221) | void SetEndOfInterrupt(int interrupt_id) {
FILE: libraries/libexosphere/source/hw/hw_cache.arch.arm.cpp
type ams::hw::arch::arm (line 18) | namespace ams::hw::arch::arm {
function ALWAYS_INLINE (line 26) | ALWAYS_INLINE bool IsLargeBuffer(size_t size) {
function ALWAYS_INLINE (line 32) | ALWAYS_INLINE bool IsCacheEnabled() {
function DoPhyCacheOperation (line 36) | void DoPhyCacheOperation(AVP_CACHE_MAINT_OPCODE op, uintptr_t addr) {
function DoEntireCacheOperation (line 56) | void DoEntireCacheOperation(AVP_CACHE_MAINT_OPCODE op) {
function InitializeDataCache (line 90) | void InitializeDataCache() {
function FinalizeDataCache (line 158) | void FinalizeDataCache() {
function InvalidateEntireDataCache (line 168) | void InvalidateEntireDataCache() {
function StoreEntireDataCache (line 174) | void StoreEntireDataCache() {
function FlushEntireDataCache (line 180) | void FlushEntireDataCache() {
function InvalidateDataCacheLine (line 186) | void InvalidateDataCacheLine(void *ptr) {
function StoreDataCacheLine (line 193) | void StoreDataCacheLine(void *ptr) {
function FlushDataCacheLine (line 200) | void FlushDataCacheLine(void *ptr) {
function InvalidateDataCache (line 207) | void InvalidateDataCache(void *ptr, size_t size) {
function StoreDataCache (line 222) | void StoreDataCache(const void *ptr, size_t size) {
function FlushDataCache (line 237) | void FlushDataCache(const void *ptr, size_t size) {
FILE: libraries/libexosphere/source/hw/hw_cache.arch.arm64.cpp
type ams::hw::arch::arm64 (line 18) | namespace ams::hw::arch::arm64 {
function FlushDataCache (line 20) | void FlushDataCache(const void *ptr, size_t size) {
function InvalidateDataCache (line 31) | void InvalidateDataCache(const void *ptr, size_t size) {
FILE: libraries/libexosphere/source/i2c/i2c_api.cpp
type ams::i2c (line 18) | namespace ams::i2c {
function LoadConfig (line 33) | void LoadConfig(uintptr_t address) {
function ClearBus (line 51) | void ClearBus(uintptr_t address) {
function InitializePort (line 74) | void InitializePort(uintptr_t address) {
function Write (line 89) | bool Write(uintptr_t base_address, Port port, int address, const void ...
function Read (line 128) | bool Read(uintptr_t base_address, Port port, void *dst, size_t dst_siz...
function SetRegisterAddress (line 168) | void SetRegisterAddress(Port port, uintptr_t address) {
function Initialize (line 172) | void Initialize(Port port) {
function Query (line 176) | bool Query(void *dst, size_t dst_size, Port port, int address, int r) {
function Send (line 189) | bool Send(Port port, int address, int r, const void *src, size_t src_s...
FILE: libraries/libexosphere/source/impl/ams_impl_unexpected_default.cpp
type ams::impl (line 18) | namespace ams::impl {
function NORETURN (line 20) | NORETURN void UnexpectedDefaultImpl(const char *func, const char *file...
FILE: libraries/libexosphere/source/libc/libc.c
function __libc_init_array (line 44) | void
function __libc_fini_array (line 73) | void
function memcmp (line 545) | int
function strcmp (line 736) | int
function strlen (line 882) | size_t
function strncmp (line 947) | int
function strnlen (line 1127) | size_t
FILE: libraries/libexosphere/source/libc/libexo_cxx.cpp
function __cxa_pure_virtual (line 23) | void __cxa_pure_virtual() { AMS_ABORT("pure virtual function call"); }
FILE: libraries/libexosphere/source/log/log_api.cpp
type ams::log (line 18) | namespace ams::log {
function ALWAYS_INLINE (line 28) | ALWAYS_INLINE void SetupUartClock(uart::Port port) {
function Initialize (line 49) | void Initialize() {
function Initialize (line 53) | void Initialize(uart::Port port, u32 baud_rate, u32 flags) {
function Finalize (line 65) | void Finalize() {
function NOINLINE (line 69) | NOINLINE void VPrintf(const char *fmt, ::std::va_list vl) {
function NOINLINE (line 79) | NOINLINE void Printf(const char *fmt, ...) {
function NOINLINE (line 86) | NOINLINE void Dump(const void *src, size_t size) {
function SendText (line 104) | void SendText(const void *text, size_t size) {
function Flush (line 110) | void Flush() {
FILE: libraries/libexosphere/source/pinmux/pinmux_api.cpp
type ams::pinmux (line 18) | namespace ams::pinmux {
function SetupFirstImpl (line 25) | void SetupFirstImpl(bool tx_cross_ext_con) {
function SetRegisterAddress (line 72) | void SetRegisterAddress(uintptr_t pinmux_address, uintptr_t gpio_addre...
function SetupFirst (line 77) | void SetupFirst(fuse::HardwareType hw_type) {
function SetupUartA (line 94) | void SetupUartA() {
function SetupUartB (line 128) | void SetupUartB() {
function SetupUartC (line 165) | void SetupUartC() {
function SetupI2c1 (line 205) | void SetupI2c1() {
function SetupI2c5 (line 225) | void SetupI2c5() {
function SetupVolumeButton (line 245) | void SetupVolumeButton() {
function SetupHomeButton (line 253) | void SetupHomeButton() {
FILE: libraries/libexosphere/source/pkg1/pkg1_api.cpp
type ams::pkg1 (line 18) | namespace ams::pkg1 {
function IsProductionImpl (line 22) | bool IsProductionImpl() {
function IsProduction (line 28) | bool IsProduction() {
function IsProductionForVersionCheck (line 32) | bool IsProductionForVersionCheck() {
function IsProductionForPublicKey (line 36) | bool IsProductionForPublicKey() {
FILE: libraries/libexosphere/source/pmc/pmc_api.cpp
type ams::pmc (line 18) | namespace ams::pmc {
type LockMode (line 27) | enum class LockMode {
type LockInfo (line 56) | struct LockInfo {
function ALWAYS_INLINE (line 62) | constexpr ALWAYS_INLINE void SetSecureScratchMask(std::array<u32, NumS...
function ALWAYS_INLINE (line 68) | constexpr ALWAYS_INLINE void SetSecureScratchMasks(std::array<u32, Num...
function ALWAYS_INLINE (line 73) | constexpr ALWAYS_INLINE void SetSecureScratchReadWriteMasks(std::array...
function ALWAYS_INLINE (line 78) | constexpr ALWAYS_INLINE void SetSecureScratchReadMasks(std::array<u32,...
function ALWAYS_INLINE (line 83) | constexpr ALWAYS_INLINE void SetSecureScratchWriteMasks(std::array<u32...
function ALWAYS_INLINE (line 88) | constexpr ALWAYS_INLINE std::array<u32, NumSecureDisableRegisters> Get...
function ALWAYS_INLINE (line 137) | ALWAYS_INLINE void LockBits(uintptr_t address, u32 mask) {
function ALWAYS_INLINE (line 142) | ALWAYS_INLINE void SetSecureScratchMasks(uintptr_t address) {
function ALWAYS_INLINE (line 158) | ALWAYS_INLINE bool TestSecureScratchMasks(uintptr_t address) {
function NOINLINE (line 174) | NOINLINE void WriteRandomValueToRegister(uintptr_t offset) {
function SetRegisterAddress (line 196) | void SetRegisterAddress(uintptr_t address) {
function InitializeRandomScratch (line 200) | void InitializeRandomScratch() {
function EnableWakeEventDetection (line 227) | void EnableWakeEventDetection() {
function ConfigureForSc7Entry (line 242) | void ConfigureForSc7Entry() {
function LockSecureRegister (line 253) | void LockSecureRegister(SecureRegister reg) {
function LockState (line 272) | LockState GetSecureRegisterLockState(SecureRegister reg) {
FILE: libraries/libexosphere/source/pmic/max77620.h
type max77620_fps_src (line 327) | enum max77620_fps_src {
type max77620_chip_id (line 335) | enum max77620_chip_id {
FILE: libraries/libexosphere/source/pmic/pmic_api.cpp
type ams::pmic (line 20) | namespace ams::pmic {
function Max77620EnableGpio (line 64) | void Max77620EnableGpio(int gpio) {
function SetEnBitErista (line 77) | void SetEnBitErista() {
function EnableVddCpuErista (line 81) | void EnableVddCpuErista() {
function DisableVddCpuErista (line 95) | void DisableVddCpuErista() {
function GetI2cAddressForMarikoMax77812 (line 100) | int GetI2cAddressForMarikoMax77812(Regulator regulator) {
function SetEnBitMariko (line 108) | void SetEnBitMariko(Regulator regulator) {
function EnableVddCpuMariko (line 113) | void EnableVddCpuMariko(Regulator regulator) {
function DisableVddCpuMariko (line 127) | void DisableVddCpuMariko(Regulator regulator) {
function u8 (line 138) | u8 GetPmicOnOffStat() {
function ShutdownSystemImpl (line 142) | void ShutdownSystemImpl(bool reboot) {
function SetBackupBatteryConfig (line 165) | void SetBackupBatteryConfig() {
function SetForcePowerOffTimeConfig (line 169) | void SetForcePowerOffTimeConfig() {
function SetFlexiblePowerSequencer (line 173) | void SetFlexiblePowerSequencer() {
function SetVoltage (line 189) | void SetVoltage(int reg, int mv) {
function SetEnBit (line 196) | void SetEnBit(Regulator regulator) {
function EnableVddCpu (line 207) | void EnableVddCpu(Regulator regulator) {
function DisableVddCpu (line 218) | void DisableVddCpu(Regulator regulator) {
function EnableSleep (line 229) | void EnableSleep() {
function ShutdownSystem (line 240) | void ShutdownSystem(bool reboot) {
function PowerOff (line 249) | void PowerOff() {
function IsAcOk (line 253) | bool IsAcOk() {
function IsPowerButtonPressed (line 257) | bool IsPowerButtonPressed() {
function SetSystemSetting (line 261) | void SetSystemSetting(fuse::SocType soc_type) {
function EnableVddCore (line 269) | void EnableVddCore(fuse::SocType soc_type) {
function EnableLdo8 (line 277) | void EnableLdo8() {
function EnableVddMemory (line 281) | void EnableVddMemory(fuse::SocType soc_type) {
FILE: libraries/libexosphere/source/rtc/rtc_api.cpp
type ams::rtc (line 19) | namespace ams::rtc {
function StopAlarm (line 50) | void StopAlarm() {
FILE: libraries/libexosphere/source/se/se_aes.cpp
type ams::se (line 19) | namespace ams::se {
type AesMode (line 25) | enum AesMode {
type MemoryInterface (line 31) | enum MemoryInterface {
function SetConfig (line 76) | void SetConfig(volatile SecurityEngineRegisters *SE, bool encrypt, SE_...
function SetAesConfig (line 84) | void SetAesConfig(volatile SecurityEngineRegisters *SE, int slot, bool...
function SetBlockCount (line 92) | void SetBlockCount(volatile SecurityEngineRegisters *SE, int count) {
function UpdateAesMode (line 96) | void UpdateAesMode(volatile SecurityEngineRegisters *SE, AesMode mode) {
function UpdateMemoryInterface (line 100) | void UpdateMemoryInterface(volatile SecurityEngineRegisters *SE, Memor...
function SetCounter (line 104) | void SetCounter(volatile SecurityEngineRegisters *SE, const void *ctr) {
function SetAesKeyIv (line 114) | void SetAesKeyIv(volatile SecurityEngineRegisters *SE, int slot, const...
function SetEncryptedAesKey (line 133) | void SetEncryptedAesKey(int dst_slot, int kek_slot, const void *key, s...
function EncryptAes (line 158) | void EncryptAes(void *dst, size_t dst_size, int slot, const void *src,...
function ExpandSubkey (line 179) | void ExpandSubkey(u8 *subkey) {
function ExpandSubkeyLittleEndian (line 194) | void ExpandSubkeyLittleEndian(u8 *subkey) {
function GetCmacResult (line 209) | void GetCmacResult(volatile SecurityEngineRegisters *SE, void *dst, si...
function ComputeAesCmac (line 216) | void ComputeAesCmac(void *dst, size_t dst_size, int slot, const void *...
function EncryptAesCbc (line 295) | void EncryptAesCbc(void *dst, size_t dst_size, int slot, const void *s...
function DecryptAesCbc (line 326) | void DecryptAesCbc(void *dst, size_t dst_size, int slot, const void *s...
function XorWithXtsTweak (line 357) | void XorWithXtsTweak(void *dst, size_t dst_size, const void *src, size...
function DecryptAesXts (line 379) | void DecryptAesXts(void *dst, size_t dst_size, int slot_enc, int slot_...
function ComputeAes128Async (line 431) | void ComputeAes128Async(u32 out_ll_address, int slot, u32 in_ll_addres...
function ClearAesKeySlot (line 454) | void ClearAesKeySlot(volatile SecurityEngineRegisters *SE, int slot) {
function ClearAesKeySlot (line 469) | void ClearAesKeySlot(int slot) {
funct
Copy disabled (too large)
Download .json
Condensed preview — 3719 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (16,277K chars).
[
{
"path": ".gitattributes",
"chars": 422,
"preview": "config_templates/hbl_html/accessible-urls/accessible-urls.txt text eol=lf\n\n# Mark C++ \"include\" files as C++\n*.inc lingu"
},
{
"path": ".gitignore",
"chars": 1078,
"preview": "# Prerequisites\n*.d\n\n# Object files\n*.o\n*.ko\n*.obj\n*.elf\n\n# Linker output\n*.ilk\n*.map\n*.exp\n*.lst\n\n# Precompiled Headers"
},
{
"path": ".gitmodules",
"chars": 0,
"preview": ""
},
{
"path": "LICENSE",
"chars": 18091,
"preview": " GNU GENERAL PUBLIC LICENSE\n Version 2, June 1991\n\n Copyright (C) 1989, 1991 Fr"
},
{
"path": "Makefile",
"chars": 1623,
"preview": "ATMOSPHERE_BUILD_CONFIGS :=\nall: nx_release\nclean: clean-nx_release\n\nTHIS_MAKEFILE := $(abspath $(lastword $(MAKEFIL"
},
{
"path": "README.md",
"chars": 3266,
"preview": "\n\n=====\n\n\n[![Chat on Di"
},
{
"path": "atmosphere.mk",
"chars": 14196,
"preview": "#---------------------------------------------------------------------------------\n# pull in common atmosphere configura"
},
{
"path": "config_templates/exosphere.ini",
"chars": 2298,
"preview": "# Key: debugmode, default: 1.\n# Desc: Controls whether kernel is debug mode.\n# Disabling this will break Atmosphere.\n"
},
{
"path": "config_templates/hbl_html/accessible-urls/accessible-urls.txt",
"chars": 7,
"preview": "^http*\n"
},
{
"path": "config_templates/override_config.ini",
"chars": 614,
"preview": "[hbl_config]\n; Program Specific Config\n; Up to 8 program-specific configurations can be set.\n; These use `program_id_#`,"
},
{
"path": "config_templates/stratosphere.ini",
"chars": 91,
"preview": "[stratosphere]\n; To force-enable nogc, add nogc = 1\n; To force-disable nogc, add nogc = 0\n\n"
},
{
"path": "config_templates/system_settings.ini",
"chars": 3840,
"preview": "[eupld]\n; Disable uploading error reports to Nintendo\n; upload_enabled = u8!0x0\n[usb]\n; Enable USB 3.0 superspeed for ho"
},
{
"path": "docs/building.md",
"chars": 1082,
"preview": "# Building Atmosphère\nBuilding Atmosphère is a very straightforward process that relies almost exclusively on tools prov"
},
{
"path": "docs/changelog.md",
"chars": 140534,
"preview": "# Changelog\n## 1.10.2\n+ Basic support was added for 21.2.0.\n+ General system stability improvements to enhance the user'"
},
{
"path": "docs/components/detail/exosphere_memory_layout.txt",
"chars": 3463,
"preview": "exosphere, storage requirements:\n\nNonvolatile memory:\n0xE000\n\nVolatile memory: 0x2000\n\nPhysical Address Space:\n-0x7C0100"
},
{
"path": "docs/components/emummc.md",
"chars": 207,
"preview": "# emummc\nemummc is a collaborative project that provides eMMC storage emulation.\n\nPlease refer to the project's reposito"
},
{
"path": "docs/components/exosphere.md",
"chars": 3603,
"preview": "# exosphère\nexosphère is a customized reimplementation of the Horizon OS's Secure Monitor.\nThe Secure Monitor follows th"
},
{
"path": "docs/components/fusee.md",
"chars": 520,
"preview": "# fusée\nfusée is a custom bootloader used to start the Atmosphère environment.\n\n## fusée\nfusée is the first piece of Atm"
},
{
"path": "docs/components/libraries.md",
"chars": 418,
"preview": "# libraries\nThis is a collection of libraries for doing operating system development for the Nintendo Switch.\n\n## libmes"
},
{
"path": "docs/components/mesosphere.md",
"chars": 251,
"preview": "# mesosphère\nmesosphère is a work in progress customized kernel reimplementation.\nThe Horizon OS's kernel follows microk"
},
{
"path": "docs/components/modules/ams_mitm.md",
"chars": 2617,
"preview": "# ams_mitm\nThis module provides methods to intercept services provided by other system modules. It is further sub-divide"
},
{
"path": "docs/components/modules/boot.md",
"chars": 319,
"preview": "# boot\nThis module is a reimplementation of the Horizon OS's `boot` system module, which is responsible for initializing"
},
{
"path": "docs/components/modules/boot2.md",
"chars": 322,
"preview": "# boot2\nThis module is a reimplementation of the Horizon OS's `boot2` system module, which is responsible for launching "
},
{
"path": "docs/components/modules/creport.md",
"chars": 340,
"preview": "# creport\nThis module is a reimplementation of the Horizon OS's `creport` system module, which is responsible for managi"
},
{
"path": "docs/components/modules/dmnt.md",
"chars": 2143,
"preview": "# dmnt\nThis module is a reimplementation of the Horizon OS's `dmnt` system module, which provides a debug monitor.\n\n## E"
},
{
"path": "docs/components/modules/eclct.stub.md",
"chars": 236,
"preview": "# eclct.stub\nThis module is a reimplementation of the Horizon OS's `eclct` system module, which collects error reports.\n"
},
{
"path": "docs/components/modules/erpt.md",
"chars": 269,
"preview": "# erpt\nThis module is a reimplementation of the Horizon OS's `erpt` system module, which is responsible for managing err"
},
{
"path": "docs/components/modules/fatal.md",
"chars": 418,
"preview": "# fatal\nThis module is a reimplementation of the Horizon OS's `fatal` system module, which is responsible for managing f"
},
{
"path": "docs/components/modules/jpegdec.md",
"chars": 281,
"preview": "# jpegdec\nThis module is a reimplementation of the Horizon OS's `jpegdec` system module, which is responsible for JPEG f"
},
{
"path": "docs/components/modules/loader.md",
"chars": 8150,
"preview": "# loader\nThis module is a reimplementation of the Horizon OS's `ldr` system module, which is responsible for creating pr"
},
{
"path": "docs/components/modules/ncm.md",
"chars": 250,
"preview": "# ncm\nThis module is a reimplementation of the Horizon OS's `ncm` system module, which is responsible for content manage"
},
{
"path": "docs/components/modules/pgl.md",
"chars": 305,
"preview": "# pgl\nThis module is a reimplementation of the Horizon OS's `pgl` system module, which is responsible for launching prog"
},
{
"path": "docs/components/modules/pm.md",
"chars": 1547,
"preview": "# pm\nThis module is a reimplementation of the Horizon OS's `pm` system module, which is responsible for tracking running"
},
{
"path": "docs/components/modules/ro.md",
"chars": 1176,
"preview": "# ro\nThis module is a reimplementation of the Horizon OS's `ro` system module, which is responsible for loading dynamic "
},
{
"path": "docs/components/modules/sm.md",
"chars": 2090,
"preview": "# sm\nThis module is a reimplementation of the Horizon OS's `sm` system module, which is responsible for service manageme"
},
{
"path": "docs/components/modules/spl.md",
"chars": 175,
"preview": "# spl\nThis module is a reimplementation of the Horizon OS's `spl` system module, which is responsible for providing secu"
},
{
"path": "docs/components/stratosphere.md",
"chars": 731,
"preview": "# stratosphère\nstratosphère provides customization of the Horizon OS at the system level. This includes a reimplementati"
},
{
"path": "docs/components/thermosphere.md",
"chars": 169,
"preview": "# thermosphère\nthermosphère is a work in progress hypervisor implementation.\nThis aims to provide functionality at the E"
},
{
"path": "docs/components/troposphere.md",
"chars": 187,
"preview": "# troposphère\ntroposphère provides customization of the Horizon OS at the application level.\n\n## reboot_to_payload\nSampl"
},
{
"path": "docs/faq.md",
"chars": 844,
"preview": "# Frequently Asked Questions\n\nThis document serves as a place to store answers for common questions received about Atmos"
},
{
"path": "docs/features/cheats.md",
"chars": 16572,
"preview": "# Cheats\nAtmosphère supports Action-Replay style cheat codes, with cheats loaded off of the SD card.\n\n## Cheat Loading P"
},
{
"path": "docs/features/configurations.md",
"chars": 6944,
"preview": "# Configurations\nAtmosphère provides a variety of customizable configurations to better adjust to users' needs.\n\n## stra"
},
{
"path": "docs/features/dns_mitm.md",
"chars": 2787,
"preview": "# DNS.mitm\nAs of 0.18.0, atmosphère provides a mechanism for redirecting DNS resolution requests.\n\nBy default, atmosphèr"
},
{
"path": "docs/licensing_exemptions/MIT_LICENSE",
"chars": 1065,
"preview": "MIT License\n\nCopyright (c) Atmosphère-NX\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\no"
},
{
"path": "docs/main.md",
"chars": 1370,
"preview": "# Atmosphère\nAtmosphère is a work-in-progress customized firmware for the Nintendo Switch. Its design principle consists"
},
{
"path": "docs/roadmap.md",
"chars": 5075,
"preview": "# Planned Features\natmosphère has a number of features that are either works-in-progress or planned. Please note that wh"
},
{
"path": "emummc/.gitignore",
"chars": 85,
"preview": "*.kip\n*.data\n*.elf\nbuild\n.vscode/ipch\n.vscode/settings.json\n*.exe\n*.kip*\nemummc.caps\n"
},
{
"path": "emummc/.gitrepo",
"chars": 411,
"preview": "; DO NOT EDIT (unless you know what you are doing)\n;\n; This subdirectory is a git \"subrepo\", and this file is maintained"
},
{
"path": "emummc/LICENSE",
"chars": 18092,
"preview": " GNU GENERAL PUBLIC LICENSE\n Version 2, June 1991\n\n Copyright (C) 1989, 1991 Fr"
},
{
"path": "emummc/Makefile",
"chars": 2956,
"preview": ".SUFFIXES:\n\nifeq ($(strip $(DEVKITPRO)),)\n$(error \"Please set DEVKITPRO in your environment. export DEVKITPRO=<path to>/"
},
{
"path": "emummc/README.md",
"chars": 1573,
"preview": "# emuMMC\n*A SDMMC driver replacement for Nintendo's Filesystem Services, by **m4xw*** \n\n### Supported Horizon Versions\n"
},
{
"path": "emummc/build.sh",
"chars": 214,
"preview": "#!/bin/bash\n\nset -e\n\nmake clean\nmake -j\n./hactool.exe -t kip emummc.kip --uncompressed emummc_unpacked.kip\npython2.7 too"
},
{
"path": "emummc/emummc.json",
"chars": 4686,
"preview": "{\n \"name\": \"FS\",\n \"title_id\": \"0x0100000000000000\",\n \"main_thread_stack_size\": \"0x00008000\",\n \"main_thread_p"
},
{
"path": "emummc/emummc.ld",
"chars": 4867,
"preview": "OUTPUT_ARCH(aarch64)\nENTRY(_start)\n\nPHDRS\n{\n\tcode PT_LOAD FLAGS(5) /* Read | Execute */;\n\trodata PT_LOAD FLAGS(4) /* R"
},
{
"path": "emummc/emummc.specs",
"chars": 255,
"preview": "%rename link old_link\n\n*link:\n%(old_link) -T %:getenv(TOPDIR /emummc.ld) -pie --no-dynamic-linker --spare"
},
{
"path": "emummc/source/FS/FS.h",
"chars": 1341,
"preview": "/*\n * Copyright (c) 2019 m4xw <m4x@m4xw.net>\n * Copyright (c) 2019 Atmosphere-NX\n *\n * This program is free software; yo"
},
{
"path": "emummc/source/FS/FS_offsets.c",
"chars": 12254,
"preview": "/*\n * Copyright (c) 2019 m4xw <m4x@m4xw.net>\n * Copyright (c) 2019 Atmosphere-NX\n *\n * This program is free software; yo"
},
{
"path": "emummc/source/FS/FS_offsets.h",
"chars": 1736,
"preview": "/*\n * Copyright (c) 2019 m4xw <m4x@m4xw.net>\n * Copyright (c) 2019 Atmosphere-NX\n *\n * This program is free software; yo"
},
{
"path": "emummc/source/FS/FS_structs.h",
"chars": 1817,
"preview": "/*\n * Copyright (c) 2019 m4xw <m4x@m4xw.net>\n * Copyright (c) 2019 Atmosphere-NX\n *\n * This program is free software; yo"
},
{
"path": "emummc/source/FS/FS_versions.h",
"chars": 2296,
"preview": "/*\n * Copyright (c) 2019 m4xw <m4x@m4xw.net>\n * Copyright (c) 2019 Atmosphere-NX\n *\n * This program is free software; yo"
},
{
"path": "emummc/source/FS/offsets/100.h",
"chars": 1960,
"preview": "/*\n * Copyright (c) 2019 m4xw <m4x@m4xw.net>\n * Copyright (c) 2019 Atmosphere-NX\n *\n * This program is free software; yo"
},
{
"path": "emummc/source/FS/offsets/1000.h",
"chars": 2166,
"preview": "/*\n * Copyright (c) 2019 m4xw <m4x@m4xw.net>\n * Copyright (c) 2019 Atmosphere-NX\n *\n * This program is free software; yo"
},
{
"path": "emummc/source/FS/offsets/1000_exfat.h",
"chars": 2292,
"preview": "/*\n * Copyright (c) 2019 m4xw <m4x@m4xw.net>\n * Copyright (c) 2019 Atmosphere-NX\n *\n * This program is free software; yo"
},
{
"path": "emummc/source/FS/offsets/1020.h",
"chars": 2166,
"preview": "/*\n * Copyright (c) 2019 m4xw <m4x@m4xw.net>\n * Copyright (c) 2019 Atmosphere-NX\n *\n * This program is free software; yo"
},
{
"path": "emummc/source/FS/offsets/1020_exfat.h",
"chars": 2292,
"preview": "/*\n * Copyright (c) 2019 m4xw <m4x@m4xw.net>\n * Copyright (c) 2019 Atmosphere-NX\n *\n * This program is free software; yo"
},
{
"path": "emummc/source/FS/offsets/1100.h",
"chars": 2197,
"preview": "/*\n * Copyright (c) 2019 m4xw <m4x@m4xw.net>\n * Copyright (c) 2019 Atmosphere-NX\n *\n * This program is free software; yo"
},
{
"path": "emummc/source/FS/offsets/1100_exfat.h",
"chars": 2323,
"preview": "/*\n * Copyright (c) 2019 m4xw <m4x@m4xw.net>\n * Copyright (c) 2019 Atmosphere-NX\n *\n * This program is free software; yo"
},
{
"path": "emummc/source/FS/offsets/1200.h",
"chars": 2197,
"preview": "/*\n * Copyright (c) 2019 m4xw <m4x@m4xw.net>\n * Copyright (c) 2019 Atmosphere-NX\n *\n * This program is free software; yo"
},
{
"path": "emummc/source/FS/offsets/1200_exfat.h",
"chars": 2323,
"preview": "/*\n * Copyright (c) 2019 m4xw <m4x@m4xw.net>\n * Copyright (c) 2019 Atmosphere-NX\n *\n * This program is free software; yo"
},
{
"path": "emummc/source/FS/offsets/1203.h",
"chars": 2226,
"preview": "/*\n * Copyright (c) 2019 m4xw <m4x@m4xw.net>\n * Copyright (c) 2019 Atmosphere-NX\n * Copyright (c) 2021 CTCaer\n *\n * This"
},
{
"path": "emummc/source/FS/offsets/1203_exfat.h",
"chars": 2352,
"preview": "/*\n * Copyright (c) 2019 m4xw <m4x@m4xw.net>\n * Copyright (c) 2019 Atmosphere-NX\n * Copyright (c) 2021 CTCaer\n *\n * This"
},
{
"path": "emummc/source/FS/offsets/1300.h",
"chars": 2197,
"preview": "/*\n * Copyright (c) 2019 m4xw <m4x@m4xw.net>\n * Copyright (c) 2019 Atmosphere-NX\n *\n * This program is free software; yo"
},
{
"path": "emummc/source/FS/offsets/1300_exfat.h",
"chars": 2323,
"preview": "/*\n * Copyright (c) 2019 m4xw <m4x@m4xw.net>\n * Copyright (c) 2019 Atmosphere-NX\n *\n * This program is free software; yo"
},
{
"path": "emummc/source/FS/offsets/1310.h",
"chars": 2197,
"preview": "/*\n * Copyright (c) 2019 m4xw <m4x@m4xw.net>\n * Copyright (c) 2019 Atmosphere-NX\n *\n * This program is free software; yo"
},
{
"path": "emummc/source/FS/offsets/1310_exfat.h",
"chars": 2323,
"preview": "/*\n * Copyright (c) 2019 m4xw <m4x@m4xw.net>\n * Copyright (c) 2019 Atmosphere-NX\n *\n * This program is free software; yo"
},
{
"path": "emummc/source/FS/offsets/1400.h",
"chars": 2201,
"preview": "/*\n * Copyright (c) 2019 m4xw <m4x@m4xw.net>\n * Copyright (c) 2019 Atmosphere-NX\n *\n * This program is free software; yo"
},
{
"path": "emummc/source/FS/offsets/1400_exfat.h",
"chars": 2330,
"preview": "/*\n * Copyright (c) 2019 m4xw <m4x@m4xw.net>\n * Copyright (c) 2019 Atmosphere-NX\n *\n * This program is free software; yo"
},
{
"path": "emummc/source/FS/offsets/1500.h",
"chars": 2201,
"preview": "/*\n * Copyright (c) 2019 m4xw <m4x@m4xw.net>\n * Copyright (c) 2019 Atmosphere-NX\n *\n * This program is free software; yo"
},
{
"path": "emummc/source/FS/offsets/1500_exfat.h",
"chars": 2330,
"preview": "/*\n * Copyright (c) 2019 m4xw <m4x@m4xw.net>\n * Copyright (c) 2019 Atmosphere-NX\n *\n * This program is free software; yo"
},
{
"path": "emummc/source/FS/offsets/1600.h",
"chars": 2201,
"preview": "/*\n * Copyright (c) 2019 m4xw <m4x@m4xw.net>\n * Copyright (c) 2019 Atmosphere-NX\n *\n * This program is free software; yo"
},
{
"path": "emummc/source/FS/offsets/1600_exfat.h",
"chars": 2330,
"preview": "/*\n * Copyright (c) 2019 m4xw <m4x@m4xw.net>\n * Copyright (c) 2019 Atmosphere-NX\n *\n * This program is free software; yo"
},
{
"path": "emummc/source/FS/offsets/1603.h",
"chars": 2201,
"preview": "/*\n * Copyright (c) 2019 m4xw <m4x@m4xw.net>\n * Copyright (c) 2019 Atmosphere-NX\n *\n * This program is free software; yo"
},
{
"path": "emummc/source/FS/offsets/1603_exfat.h",
"chars": 2330,
"preview": "/*\n * Copyright (c) 2019 m4xw <m4x@m4xw.net>\n * Copyright (c) 2019 Atmosphere-NX\n *\n * This program is free software; yo"
},
{
"path": "emummc/source/FS/offsets/1700.h",
"chars": 2201,
"preview": "/*\n * Copyright (c) 2019 m4xw <m4x@m4xw.net>\n * Copyright (c) 2019 Atmosphere-NX\n *\n * This program is free software; yo"
},
{
"path": "emummc/source/FS/offsets/1700_exfat.h",
"chars": 2327,
"preview": "/*\n * Copyright (c) 2019 m4xw <m4x@m4xw.net>\n * Copyright (c) 2019 Atmosphere-NX\n *\n * This program is free software; yo"
},
{
"path": "emummc/source/FS/offsets/1800.h",
"chars": 2201,
"preview": "/*\n * Copyright (c) 2019 m4xw <m4x@m4xw.net>\n * Copyright (c) 2019 Atmosphere-NX\n *\n * This program is free software; yo"
},
{
"path": "emummc/source/FS/offsets/1800_exfat.h",
"chars": 2327,
"preview": "/*\n * Copyright (c) 2019 m4xw <m4x@m4xw.net>\n * Copyright (c) 2019 Atmosphere-NX\n *\n * This program is free software; yo"
},
{
"path": "emummc/source/FS/offsets/1810.h",
"chars": 2201,
"preview": "/*\n * Copyright (c) 2019 m4xw <m4x@m4xw.net>\n * Copyright (c) 2019 Atmosphere-NX\n *\n * This program is free software; yo"
},
{
"path": "emummc/source/FS/offsets/1810_exfat.h",
"chars": 2327,
"preview": "/*\n * Copyright (c) 2019 m4xw <m4x@m4xw.net>\n * Copyright (c) 2019 Atmosphere-NX\n *\n * This program is free software; yo"
},
{
"path": "emummc/source/FS/offsets/1900.h",
"chars": 2201,
"preview": "/*\n * Copyright (c) 2019 m4xw <m4x@m4xw.net>\n * Copyright (c) 2019 Atmosphere-NX\n *\n * This program is free software; yo"
},
{
"path": "emummc/source/FS/offsets/1900_exfat.h",
"chars": 2327,
"preview": "/*\n * Copyright (c) 2019 m4xw <m4x@m4xw.net>\n * Copyright (c) 2019 Atmosphere-NX\n *\n * This program is free software; yo"
},
{
"path": "emummc/source/FS/offsets/200.h",
"chars": 2048,
"preview": "/*\n * Copyright (c) 2019 m4xw <m4x@m4xw.net>\n * Copyright (c) 2019 Atmosphere-NX\n *\n * This program is free software; yo"
},
{
"path": "emummc/source/FS/offsets/2000.h",
"chars": 2201,
"preview": "/*\n * Copyright (c) 2019 m4xw <m4x@m4xw.net>\n * Copyright (c) 2019 Atmosphere-NX\n *\n * This program is free software; yo"
},
{
"path": "emummc/source/FS/offsets/2000_exfat.h",
"chars": 2330,
"preview": "/*\n * Copyright (c) 2019 m4xw <m4x@m4xw.net>\n * Copyright (c) 2019 Atmosphere-NX\n *\n * This program is free software; yo"
},
{
"path": "emummc/source/FS/offsets/200_exfat.h",
"chars": 2174,
"preview": "/*\n * Copyright (c) 2019 m4xw <m4x@m4xw.net>\n * Copyright (c) 2019 Atmosphere-NX\n *\n * This program is free software; yo"
},
{
"path": "emummc/source/FS/offsets/2010.h",
"chars": 2201,
"preview": "/*\n * Copyright (c) 2019 m4xw <m4x@m4xw.net>\n * Copyright (c) 2019 Atmosphere-NX\n *\n * This program is free software; yo"
},
{
"path": "emummc/source/FS/offsets/2010_exfat.h",
"chars": 2330,
"preview": "/*\n * Copyright (c) 2019 m4xw <m4x@m4xw.net>\n * Copyright (c) 2019 Atmosphere-NX\n *\n * This program is free software; yo"
},
{
"path": "emummc/source/FS/offsets/210.h",
"chars": 2048,
"preview": "/*\n * Copyright (c) 2019 m4xw <m4x@m4xw.net>\n * Copyright (c) 2019 Atmosphere-NX\n *\n * This program is free software; yo"
},
{
"path": "emummc/source/FS/offsets/2100.h",
"chars": 2201,
"preview": "/*\n * Copyright (c) 2019 m4xw <m4x@m4xw.net>\n * Copyright (c) 2019 Atmosphere-NX\n *\n * This program is free software; yo"
},
{
"path": "emummc/source/FS/offsets/2100_exfat.h",
"chars": 2345,
"preview": "/*\n * Copyright (c) 2019 m4xw <m4x@m4xw.net>\n * Copyright (c) 2019 Atmosphere-NX\n *\n * This program is free software; yo"
},
{
"path": "emummc/source/FS/offsets/210_exfat.h",
"chars": 2174,
"preview": "/*\n * Copyright (c) 2019 m4xw <m4x@m4xw.net>\n * Copyright (c) 2019 Atmosphere-NX\n *\n * This program is free software; yo"
},
{
"path": "emummc/source/FS/offsets/2120.h",
"chars": 2201,
"preview": "/*\n * Copyright (c) 2019 m4xw <m4x@m4xw.net>\n * Copyright (c) 2019 Atmosphere-NX\n *\n * This program is free software; yo"
},
{
"path": "emummc/source/FS/offsets/2120_exfat.h",
"chars": 2345,
"preview": "/*\n * Copyright (c) 2019 m4xw <m4x@m4xw.net>\n * Copyright (c) 2019 Atmosphere-NX\n *\n * This program is free software; yo"
},
{
"path": "emummc/source/FS/offsets/300.h",
"chars": 2048,
"preview": "/*\n * Copyright (c) 2019 m4xw <m4x@m4xw.net>\n * Copyright (c) 2019 Atmosphere-NX\n *\n * This program is free software; yo"
},
{
"path": "emummc/source/FS/offsets/300_exfat.h",
"chars": 2174,
"preview": "/*\n * Copyright (c) 2019 m4xw <m4x@m4xw.net>\n * Copyright (c) 2019 Atmosphere-NX\n *\n * This program is free software; yo"
},
{
"path": "emummc/source/FS/offsets/301.h",
"chars": 2048,
"preview": "/*\n * Copyright (c) 2019 m4xw <m4x@m4xw.net>\n * Copyright (c) 2019 Atmosphere-NX\n *\n * This program is free software; yo"
},
{
"path": "emummc/source/FS/offsets/301_exfat.h",
"chars": 2174,
"preview": "/*\n * Copyright (c) 2019 m4xw <m4x@m4xw.net>\n * Copyright (c) 2019 Atmosphere-NX\n *\n * This program is free software; yo"
},
{
"path": "emummc/source/FS/offsets/400.h",
"chars": 2048,
"preview": "/*\n * Copyright (c) 2019 m4xw <m4x@m4xw.net>\n * Copyright (c) 2019 Atmosphere-NX\n *\n * This program is free software; yo"
},
{
"path": "emummc/source/FS/offsets/400_exfat.h",
"chars": 2174,
"preview": "/*\n * Copyright (c) 2019 m4xw <m4x@m4xw.net>\n * Copyright (c) 2019 Atmosphere-NX\n *\n * This program is free software; yo"
},
{
"path": "emummc/source/FS/offsets/410.h",
"chars": 2048,
"preview": "/*\n * Copyright (c) 2019 m4xw <m4x@m4xw.net>\n * Copyright (c) 2019 Atmosphere-NX\n *\n * This program is free software; yo"
},
{
"path": "emummc/source/FS/offsets/410_exfat.h",
"chars": 2161,
"preview": "/*\n * Copyright (c) 2019 m4xw <m4x@m4xw.net>\n * Copyright (c) 2019 Atmosphere-NX\n *\n * This program is free software; yo"
},
{
"path": "emummc/source/FS/offsets/500.h",
"chars": 2033,
"preview": "/*\n * Copyright (c) 2019 m4xw <m4x@m4xw.net>\n * Copyright (c) 2019 Atmosphere-NX\n *\n * This program is free software; yo"
},
{
"path": "emummc/source/FS/offsets/500_exfat.h",
"chars": 2159,
"preview": "/*\n * Copyright (c) 2019 m4xw <m4x@m4xw.net>\n * Copyright (c) 2019 Atmosphere-NX\n *\n * This program is free software; yo"
},
{
"path": "emummc/source/FS/offsets/510.h",
"chars": 2033,
"preview": "/*\n * Copyright (c) 2019 m4xw <m4x@m4xw.net>\n * Copyright (c) 2019 Atmosphere-NX\n *\n * This program is free software; yo"
},
{
"path": "emummc/source/FS/offsets/510_exfat.h",
"chars": 2159,
"preview": "/*\n * Copyright (c) 2019 m4xw <m4x@m4xw.net>\n * Copyright (c) 2019 Atmosphere-NX\n *\n * This program is free software; yo"
},
{
"path": "emummc/source/FS/offsets/600.h",
"chars": 2115,
"preview": "/*\n * Copyright (c) 2019 m4xw <m4x@m4xw.net>\n * Copyright (c) 2019 Atmosphere-NX\n *\n * This program is free software; yo"
},
{
"path": "emummc/source/FS/offsets/600_exfat.h",
"chars": 2241,
"preview": "/*\n * Copyright (c) 2019 m4xw <m4x@m4xw.net>\n * Copyright (c) 2019 Atmosphere-NX\n *\n * This program is free software; yo"
},
{
"path": "emummc/source/FS/offsets/700.h",
"chars": 2193,
"preview": "/*\n * Copyright (c) 2019 m4xw <m4x@m4xw.net>\n * Copyright (c) 2019 Atmosphere-NX\n *\n * This program is free software; yo"
},
{
"path": "emummc/source/FS/offsets/700_exfat.h",
"chars": 2319,
"preview": "/*\n * Copyright (c) 2019 m4xw <m4x@m4xw.net>\n * Copyright (c) 2019 Atmosphere-NX\n *\n * This program is free software; yo"
},
{
"path": "emummc/source/FS/offsets/800.h",
"chars": 2197,
"preview": "/*\n * Copyright (c) 2019 m4xw <m4x@m4xw.net>\n * Copyright (c) 2019 Atmosphere-NX\n *\n * This program is free software; yo"
},
{
"path": "emummc/source/FS/offsets/800_exfat.h",
"chars": 2323,
"preview": "/*\n * Copyright (c) 2019 m4xw <m4x@m4xw.net>\n * Copyright (c) 2019 Atmosphere-NX\n *\n * This program is free software; yo"
},
{
"path": "emummc/source/FS/offsets/810.h",
"chars": 2197,
"preview": "/*\n * Copyright (c) 2019 m4xw <m4x@m4xw.net>\n * Copyright (c) 2019 Atmosphere-NX\n *\n * This program is free software; yo"
},
{
"path": "emummc/source/FS/offsets/810_exfat.h",
"chars": 2323,
"preview": "/*\n * Copyright (c) 2019 m4xw <m4x@m4xw.net>\n * Copyright (c) 2019 Atmosphere-NX\n *\n * This program is free software; yo"
},
{
"path": "emummc/source/FS/offsets/900.h",
"chars": 2224,
"preview": "/*\n * Copyright (c) 2019 m4xw <m4x@m4xw.net>\n * Copyright (c) 2019 Atmosphere-NX\n *\n * This program is free software; yo"
},
{
"path": "emummc/source/FS/offsets/900_exfat.h",
"chars": 2350,
"preview": "/*\n * Copyright (c) 2019 m4xw <m4x@m4xw.net>\n * Copyright (c) 2019 Atmosphere-NX\n *\n * This program is free software; yo"
},
{
"path": "emummc/source/FS/offsets/910.h",
"chars": 2224,
"preview": "/*\n * Copyright (c) 2019 m4xw <m4x@m4xw.net>\n * Copyright (c) 2019 Atmosphere-NX\n *\n * This program is free software; yo"
},
{
"path": "emummc/source/FS/offsets/910_exfat.h",
"chars": 2350,
"preview": "/*\n * Copyright (c) 2019 m4xw <m4x@m4xw.net>\n * Copyright (c) 2019 Atmosphere-NX\n *\n * This program is free software; yo"
},
{
"path": "emummc/source/emmc/mmc.h",
"chars": 16769,
"preview": "/*\n * Header for MultiMediaCard (MMC)\n *\n * Copyright 2002 Hewlett-Packard Company\n *\n * Use consistent with the GNU GPL"
},
{
"path": "emummc/source/emmc/nx_emmc.c",
"chars": 1297,
"preview": "/*\n * Copyright (c) 2018 naehrwert\n *\n * This program is free software; you can redistribute it and/or modify it\n * unde"
},
{
"path": "emummc/source/emmc/nx_emmc.h",
"chars": 1588,
"preview": "/*\n * Copyright (c) 2018 naehrwert\n *\n * This program is free software; you can redistribute it and/or modify it\n * unde"
},
{
"path": "emummc/source/emmc/nx_sd.c",
"chars": 1888,
"preview": "/*\n * Copyright (c) 2019 CTCaer\n *\n * This program is free software; you can redistribute it and/or modify it\n * under t"
},
{
"path": "emummc/source/emmc/nx_sd.h",
"chars": 954,
"preview": "/*\n * Copyright (c) 2018 naehrwert\n * Copyright (c) 2018-2019 CTCaer\n *\n * This program is free software; you can redist"
},
{
"path": "emummc/source/emmc/sd.h",
"chars": 4019,
"preview": "/*\n * Copyright (c) 2005-2007 Pierre Ossman, All Rights Reserved.\n * Copyright (c) 2018 CTCaer\n *\n * This program is f"
},
{
"path": "emummc/source/emmc/sdmmc.c",
"chars": 41237,
"preview": "/*\n * Copyright (c) 2018 naehrwert\n * Copyright (c) 2018-2020 CTCaer\n *\n * This program is free software; you can redist"
},
{
"path": "emummc/source/emmc/sdmmc.h",
"chars": 3078,
"preview": "/*\n * Copyright (c) 2018 naehrwert\n * Copyright (c) 2018-2020 CTCaer\n *\n * This program is free software; you can redist"
},
{
"path": "emummc/source/emmc/sdmmc_driver.c",
"chars": 36571,
"preview": "/*\n * Copyright (c) 2018 naehrwert\n * Copyright (c) 2018-2020 CTCaer\n *\n * This program is free software; you can redist"
},
{
"path": "emummc/source/emmc/sdmmc_driver.h",
"chars": 8091,
"preview": "/*\n * Copyright (c) 2018 naehrwert\n * Copyright (c) 2018-2020 CTCaer\n *\n * This program is free software; you can redist"
},
{
"path": "emummc/source/emmc/sdmmc_t210.h",
"chars": 2742,
"preview": "/*\n * Copyright (c) 2018 naehrwert\n * Copyright (c) 2018-2019 CTCaer\n *\n * This program is free software; you can redist"
},
{
"path": "emummc/source/emuMMC/emummc.c",
"chars": 16550,
"preview": "/*\n * Copyright (c) 2019 m4xw <m4x@m4xw.net>\n * Copyright (c) 2019 Atmosphere-NX\n * Copyright (c) 2019 CTCaer\n *\n * This"
},
{
"path": "emummc/source/emuMMC/emummc.h",
"chars": 2343,
"preview": "/*\n * Copyright (c) 2019 m4xw <m4x@m4xw.net>\n * Copyright (c) 2019 Atmosphere-NX\n *\n * This program is free software; yo"
},
{
"path": "emummc/source/emuMMC/emummc_ctx.h",
"chars": 1430,
"preview": "/*\n * Copyright (c) 2019 m4xw <m4x@m4xw.net>\n * Copyright (c) 2019 Atmosphere-NX\n *\n * This program is free software; yo"
},
{
"path": "emummc/source/libs/fatfs/diskio.c",
"chars": 2898,
"preview": "/*-----------------------------------------------------------------------*/\n/* Low level disk I/O module skeleton for Fa"
},
{
"path": "emummc/source/libs/fatfs/diskio.h",
"chars": 2648,
"preview": "/*-----------------------------------------------------------------------/\n/ Low level disk interface modlue include fi"
},
{
"path": "emummc/source/libs/fatfs/ff.c",
"chars": 236361,
"preview": "/*\n * Copyright (c) 2018 naehrwert\n * Copyright (c) 2018-2019 CTCaer\n *\n * This program is free software; you can redist"
},
{
"path": "emummc/source/libs/fatfs/ff.h",
"chars": 14717,
"preview": "/*----------------------------------------------------------------------------/\n/ FatFs - Generic FAT Filesystem module"
},
{
"path": "emummc/source/libs/fatfs/ffconf.h",
"chars": 11489,
"preview": "/*---------------------------------------------------------------------------/\n/ FatFs Functional Configurations\n/-----"
},
{
"path": "emummc/source/libs/fatfs/ffsystem.c",
"chars": 1370,
"preview": "/*------------------------------------------------------------------------*/\n/* Sample Code of OS Dependent Functions fo"
},
{
"path": "emummc/source/libs/fatfs/ffunicode.c",
"chars": 32188,
"preview": "/*------------------------------------------------------------------------*/\n/* Unicode handling functions for FatFs R0."
},
{
"path": "emummc/source/main.c",
"chars": 13865,
"preview": "/*\n * Copyright (c) 2019 m4xw <m4x@m4xw.net>\n * Copyright (c) 2019 Atmosphere-NX\n *\n * This program is free software; yo"
},
{
"path": "emummc/source/nx/cache.h",
"chars": 1583,
"preview": "/**\n * @file cache.h\n * @brief AArch64 cache operations.\n * @author plutoo\n * @copyright libnx Authors\n */\n#pragma once\n"
},
{
"path": "emummc/source/nx/cache.s",
"chars": 1674,
"preview": "/**\n * @file cache.s\n * @copyright libnx Authors\n */\n\n.macro CODE_BEGIN name\n\t.section .text.\\name, \"ax\", %progbits\n\t.gl"
},
{
"path": "emummc/source/nx/counter.h",
"chars": 1040,
"preview": "/**\n * @file counter.h\n * @brief AArch64 system counter-timer.\n * @author fincs\n * @copyright libnx Authors\n */\n#pragma "
},
{
"path": "emummc/source/nx/dynamic.c",
"chars": 741,
"preview": "/**\n * @file dynamic.c\n * @copyright libnx Authors\n */\n\n#include <stddef.h>\n#include \"../utils/types.h\"\n#include <elf.h>"
},
{
"path": "emummc/source/nx/smc.c",
"chars": 5415,
"preview": "/**\n * @file smc.c\n * @copyright libnx Authors\n */\n\n#include <stddef.h>\n#include <string.h>\n#include \"smc.h\"\n#include \"."
},
{
"path": "emummc/source/nx/smc.h",
"chars": 2672,
"preview": "/**\n * @file smc.h\n * @brief Wrappers for secure monitor calls.\n * @copyright libnx Authors\n */\n#pragma once\n#include \"."
},
{
"path": "emummc/source/nx/start.s",
"chars": 2482,
"preview": "/**\n * @file start.s\n * @copyright libnx Authors\n */\n\n.macro push_all\n SUB SP, SP, #0x100\n STP X29, X30, [SP, #0x0"
},
{
"path": "emummc/source/nx/svc.h",
"chars": 8168,
"preview": "/**\n * @file svc.h\n * @brief Wrappers for kernel syscalls.\n * @copyright libnx Authors\n */\n#pragma once\n#include \"../uti"
},
{
"path": "emummc/source/nx/svc.s",
"chars": 1798,
"preview": "/**\n * @file svc.s\n * @copyright libnx Authors\n */\n\n.macro SVC_BEGIN name\n\t.section .text.\\name, \"ax\", %progbits\n\t.globa"
},
{
"path": "emummc/source/power/max77620.h",
"chars": 13601,
"preview": "/*\n * Defining registers address and its bit definitions of MAX77620 and MAX20024\n *\n * Copyright (c) 2016 NVIDIA CORPOR"
},
{
"path": "emummc/source/power/max7762x.c",
"chars": 6863,
"preview": "/*\n * Copyright (c) 2018 naehrwert\n * Copyright (c) 2019 CTCaer\n *\n * This program is free software; you can redistribut"
},
{
"path": "emummc/source/power/max7762x.h",
"chars": 4252,
"preview": "/*\n * Copyright (c) 2018 naehrwert\n * Copyright (c) 2019 CTCaer\n *\n * This program is free software; you can redistribut"
},
{
"path": "emummc/source/soc/clock.c",
"chars": 10814,
"preview": "/*\n * Copyright (c) 2018 naehrwert\n * Copyright (c) 2018-2020 CTCaer\n *\n * This program is free software; you can redist"
},
{
"path": "emummc/source/soc/clock.h",
"chars": 7067,
"preview": "/*\n * Copyright (c) 2018 naehrwert\n * Copyright (c) 2018-2020 CTCaer\n *\n * This program is free software; you can redist"
},
{
"path": "emummc/source/soc/gpio.c",
"chars": 4573,
"preview": "/*\n * Copyright (c) 2018 naehrwert\n * Copyright (c) 2019 CTCaer\n *\n * This program is free software; you can redistribut"
},
{
"path": "emummc/source/soc/gpio.h",
"chars": 2501,
"preview": "/*\n * Copyright (c) 2018 naehrwert\n * Copyright (c) 2019 CTCaer\n *\n * This program is free software; you can redistribut"
},
{
"path": "emummc/source/soc/i2c.c",
"chars": 6010,
"preview": "/*\n * Copyright (c) 2018 naehrwert\n * Copyright (c) 2018-2020 CTCaer\n *\n * This program is free software; you can redist"
},
{
"path": "emummc/source/soc/i2c.h",
"chars": 1125,
"preview": "/*\n * Copyright (c) 2018 naehrwert\n * Copyright (c) 2020 CTCaer\n *\n * This program is free software; you can redistribut"
},
{
"path": "emummc/source/soc/pinmux.c",
"chars": 849,
"preview": "/*\n * Copyright (c) 2018 naehrwert\n *\n * This program is free software; you can redistribute it and/or modify it\n * unde"
},
{
"path": "emummc/source/soc/pinmux.h",
"chars": 3455,
"preview": "/*\n * Copyright (c) 2018 naehrwert\n *\n * This program is free software; you can redistribute it and/or modify it\n * unde"
},
{
"path": "emummc/source/soc/pmc.h",
"chars": 2669,
"preview": "/*\n * Copyright (c) 2018 naehrwert\n * Copyright (c) 2018 st4rk\n *\n * This program is free software; you can redistribute"
},
{
"path": "emummc/source/soc/pmc_lp0_t210.h",
"chars": 11060,
"preview": "/*\n * Copyright (c) 2010-2015, NVIDIA CORPORATION. All rights reserved.\n *\n * This program is free software; you can re"
},
{
"path": "emummc/source/soc/t210.h",
"chars": 4713,
"preview": "/*\n* Copyright (c) 2018 naehrwert\n*\n* This program is free software; you can redistribute it and/or modify it\n* under th"
},
{
"path": "emummc/source/utils/fatal.c",
"chars": 1372,
"preview": "/*\n * Copyright (c) 2019 m4xw <m4x@m4xw.net>\n * Copyright (c) 2019 Atmosphere-NX\n *\n * This program is free software; yo"
},
{
"path": "emummc/source/utils/fatal.h",
"chars": 2320,
"preview": "/*\n * Copyright (c) 2019 m4xw <m4x@m4xw.net>\n * Copyright (c) 2019 Atmosphere-NX\n *\n * This program is free software; yo"
},
{
"path": "emummc/source/utils/types.h",
"chars": 2331,
"preview": "/*\n* Copyright (c) 2018 naehrwert\n*\n* This program is free software; you can redistribute it and/or modify it\n* under th"
},
{
"path": "emummc/source/utils/util.c",
"chars": 2980,
"preview": "/*\n* Copyright (c) 2018 naehrwert\n* Copyright (C) 2018 CTCaer\n* Copyright (C) 2019 M4xw\n* Copyright (c) 2019 Atmosphere-"
},
{
"path": "emummc/source/utils/util.h",
"chars": 1359,
"preview": "/*\n * Copyright (c) 2018 naehrwert\n * Copyright (C) 2018 CTCaer\n *\n * This program is free software; you can redistribut"
},
{
"path": "emummc/tools/fs_ida_nintendo_folder_xref_formatter.au3",
"chars": 2060,
"preview": "ParseClipboard()\n\nFunc FormatLineData($sLineData, $sLineDataAdd)\n Local $lineData = StringReplace($sLineData, @TAB, \" "
},
{
"path": "emummc/tools/kip1converter.py",
"chars": 1273,
"preview": "# Modified kip1 conversion script, originally by jakibaki\n# Used for dev purposes, will be replaced in the future\n\nfrom "
},
{
"path": "exosphere/Makefile",
"chars": 1583,
"preview": "ATMOSPHERE_BUILD_CONFIGS :=\nall: nx_release\n\nTHIS_MAKEFILE := $(abspath $(lastword $(MAKEFILE_LIST)))\nCURRENT_DIRECT"
},
{
"path": "exosphere/exosphere.mk",
"chars": 4906,
"preview": "#---------------------------------------------------------------------------------\n# pull in common atmosphere configura"
},
{
"path": "exosphere/loader_stub/Makefile",
"chars": 1587,
"preview": "ATMOSPHERE_BUILD_CONFIGS :=\nall: nx_release\n\nTHIS_MAKEFILE := $(abspath $(lastword $(MAKEFILE_LIST)))\nCURRENT_DIRECT"
},
{
"path": "exosphere/loader_stub/loader_stub.ld",
"chars": 4180,
"preview": "OUTPUT_ARCH(aarch64)\nENTRY(_start)\n\nMEMORY\n{\n NULL : ORIGIN = 0, LENGTH = 4K\n ldr_stub : ORIGIN = "
},
{
"path": "exosphere/loader_stub/loader_stub.mk",
"chars": 4867,
"preview": "#---------------------------------------------------------------------------------\n# pull in common atmosphere configura"
},
{
"path": "exosphere/loader_stub/loader_stub.specs",
"chars": 111,
"preview": "%rename link old_link\n\n*link:\n%(old_link) -T %:getenv(ATMOSPHERE_TOPDIR /loader_stub.ld) --gc-sections --nmagic"
},
{
"path": "exosphere/loader_stub/source/secmon_loader_error.cpp",
"chars": 1438,
"preview": "/*\n * Copyright (c) Atmosphère-NX\n *\n * This program is free software; you can redistribute it and/or modify it\n * under"
},
{
"path": "exosphere/loader_stub/source/secmon_loader_error.hpp",
"chars": 741,
"preview": "/*\n * Copyright (c) Atmosphère-NX\n *\n * This program is free software; you can redistribute it and/or modify it\n * under"
},
{
"path": "exosphere/loader_stub/source/secmon_loader_main.cpp",
"chars": 1951,
"preview": "/*\n * Copyright (c) Atmosphère-NX\n *\n * This program is free software; you can redistribute it and/or modify it\n * under"
},
{
"path": "exosphere/loader_stub/source/secmon_loader_uncompress.cpp",
"chars": 3828,
"preview": "/*\n * Copyright (c) Atmosphère-NX\n *\n * This program is free software; you can redistribute it and/or modify it\n * under"
},
{
"path": "exosphere/loader_stub/source/secmon_loader_uncompress.hpp",
"chars": 789,
"preview": "/*\n * Copyright (c) Atmosphère-NX\n *\n * This program is free software; you can redistribute it and/or modify it\n * under"
},
{
"path": "exosphere/loader_stub/source/start.s",
"chars": 2807,
"preview": "/*\n * Copyright (c) Atmosphère-NX\n *\n * This program is free software; you can redistribute it and/or modify it\n * under"
},
{
"path": "exosphere/mariko_fatal/Makefile",
"chars": 1589,
"preview": "ATMOSPHERE_BUILD_CONFIGS :=\nall: nx_release\n\nTHIS_MAKEFILE := $(abspath $(lastword $(MAKEFILE_LIST)))\nCURRENT_DIRECT"
},
{
"path": "exosphere/mariko_fatal/mariko_fatal.ld",
"chars": 5281,
"preview": "OUTPUT_ARCH(aarch64)\nENTRY(_start)\n\nMEMORY\n{\n NULL : ORIGIN = 0, LENGTH = 4K\n mariko_tzram : ORIGIN ="
},
{
"path": "exosphere/mariko_fatal/mariko_fatal.mk",
"chars": 4749,
"preview": "#---------------------------------------------------------------------------------\n# pull in common atmosphere configura"
},
{
"path": "exosphere/mariko_fatal/mariko_fatal.specs",
"chars": 112,
"preview": "%rename link old_link\n\n*link:\n%(old_link) -T %:getenv(ATMOSPHERE_TOPDIR /mariko_fatal.ld) --gc-sections --nmagic"
},
{
"path": "exosphere/mariko_fatal/source/fatal_abort_impl.cpp",
"chars": 957,
"preview": "/*\n * Copyright (c) Atmosphère-NX\n *\n * This program is free software; you can redistribute it and/or modify it\n * under"
},
{
"path": "exosphere/mariko_fatal/source/fatal_crt0.s",
"chars": 1202,
"preview": "/*\n * Copyright (c) Atmosphère-NX\n *\n * This program is free software; you can redistribute it and/or modify it\n * under"
},
{
"path": "exosphere/mariko_fatal/source/fatal_crt0_cpp.cpp",
"chars": 970,
"preview": "/*\n * Copyright (c) Atmosphère-NX\n *\n * This program is free software; you can redistribute it and/or modify it\n * under"
},
{
"path": "exosphere/mariko_fatal/source/fatal_device_page_table.cpp",
"chars": 15741,
"preview": "/*\n * Copyright (c) Atmosphère-NX\n *\n * This program is free software; you can redistribute it and/or modify it\n * under"
},
{
"path": "exosphere/mariko_fatal/source/fatal_device_page_table.hpp",
"chars": 798,
"preview": "/*\n * Copyright (c) Atmosphère-NX\n *\n * This program is free software; you can redistribute it and/or modify it\n * under"
}
]
// ... and 3519 more files (download for full content)
About this extraction
This page contains the full source code of the Atmosphere-NX/Atmosphere GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 3719 files (26.5 MB), approximately 4.2M tokens, and a symbol index with 13546 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.