mirror of
https://github.com/yuzu-emu/yuzu.git
synced 2024-11-16 06:50:05 +00:00
19dc36ce06
This PR attempts to implement the shared memory provided by GetSharedMemoryNativeHandle. There is still more work to be done however that requires a rehaul of the current time module to handle clock contexts. This PR is mainly to get the basic functionality of the SharedMemory working and allow the use of addition to it whilst things get improved on. Things to note: Memory Barriers are used in the SharedMemory and a better solution would need to be done to implement this. Currently in this PR I’m faking the memory barriers as everything is sync and single threaded. They work by incrementing the counter and just populate the two data slots. On data reading, it will read the last added data. Specific values in the shared memory would need to be updated periodically. This isn't included in this PR since we don't actively do this yet. In a later PR when time is refactored this should be done. Finally, as we don't handle clock contexts. When time is refactored, we will need to update the shared memory for specific contexts. This PR does this already however since the contexts are all identical and not separated. We're just updating the same values for each context which in this case is empty. Tiime:SetStandardUserSystemClockAutomaticCorrectionEnabled, Time:IsStandardUserSystemClockAutomaticCorrectionEnabled are also partially implemented in this PR. The reason the implementation is partial is because once again, a lack of clock contexts. This will be improved on in a future PR. This PR closes issue #2556
492 lines
15 KiB
CMake
492 lines
15 KiB
CMake
add_library(core STATIC
|
|
arm/arm_interface.h
|
|
arm/arm_interface.cpp
|
|
arm/exclusive_monitor.cpp
|
|
arm/exclusive_monitor.h
|
|
arm/unicorn/arm_unicorn.cpp
|
|
arm/unicorn/arm_unicorn.h
|
|
constants.cpp
|
|
constants.h
|
|
core.cpp
|
|
core.h
|
|
core_cpu.cpp
|
|
core_cpu.h
|
|
core_timing.cpp
|
|
core_timing.h
|
|
core_timing_util.cpp
|
|
core_timing_util.h
|
|
cpu_core_manager.cpp
|
|
cpu_core_manager.h
|
|
crypto/aes_util.cpp
|
|
crypto/aes_util.h
|
|
crypto/encryption_layer.cpp
|
|
crypto/encryption_layer.h
|
|
crypto/key_manager.cpp
|
|
crypto/key_manager.h
|
|
crypto/partition_data_manager.cpp
|
|
crypto/partition_data_manager.h
|
|
crypto/ctr_encryption_layer.cpp
|
|
crypto/ctr_encryption_layer.h
|
|
crypto/xts_encryption_layer.cpp
|
|
crypto/xts_encryption_layer.h
|
|
file_sys/bis_factory.cpp
|
|
file_sys/bis_factory.h
|
|
file_sys/card_image.cpp
|
|
file_sys/card_image.h
|
|
file_sys/cheat_engine.cpp
|
|
file_sys/cheat_engine.h
|
|
file_sys/content_archive.cpp
|
|
file_sys/content_archive.h
|
|
file_sys/control_metadata.cpp
|
|
file_sys/control_metadata.h
|
|
file_sys/directory.h
|
|
file_sys/errors.h
|
|
file_sys/fsmitm_romfsbuild.cpp
|
|
file_sys/fsmitm_romfsbuild.h
|
|
file_sys/ips_layer.cpp
|
|
file_sys/ips_layer.h
|
|
file_sys/kernel_executable.cpp
|
|
file_sys/kernel_executable.h
|
|
file_sys/mode.h
|
|
file_sys/nca_metadata.cpp
|
|
file_sys/nca_metadata.h
|
|
file_sys/nca_patch.cpp
|
|
file_sys/nca_patch.h
|
|
file_sys/partition_filesystem.cpp
|
|
file_sys/partition_filesystem.h
|
|
file_sys/patch_manager.cpp
|
|
file_sys/patch_manager.h
|
|
file_sys/program_metadata.cpp
|
|
file_sys/program_metadata.h
|
|
file_sys/registered_cache.cpp
|
|
file_sys/registered_cache.h
|
|
file_sys/romfs.cpp
|
|
file_sys/romfs.h
|
|
file_sys/romfs_factory.cpp
|
|
file_sys/romfs_factory.h
|
|
file_sys/savedata_factory.cpp
|
|
file_sys/savedata_factory.h
|
|
file_sys/sdmc_factory.cpp
|
|
file_sys/sdmc_factory.h
|
|
file_sys/submission_package.cpp
|
|
file_sys/submission_package.h
|
|
file_sys/system_archive/ng_word.cpp
|
|
file_sys/system_archive/ng_word.h
|
|
file_sys/system_archive/system_archive.cpp
|
|
file_sys/system_archive/system_archive.h
|
|
file_sys/system_archive/system_version.cpp
|
|
file_sys/system_archive/system_version.h
|
|
file_sys/vfs.cpp
|
|
file_sys/vfs.h
|
|
file_sys/vfs_concat.cpp
|
|
file_sys/vfs_concat.h
|
|
file_sys/vfs_layered.cpp
|
|
file_sys/vfs_layered.h
|
|
file_sys/vfs_offset.cpp
|
|
file_sys/vfs_offset.h
|
|
file_sys/vfs_real.cpp
|
|
file_sys/vfs_real.h
|
|
file_sys/vfs_static.h
|
|
file_sys/vfs_types.h
|
|
file_sys/vfs_vector.cpp
|
|
file_sys/vfs_vector.h
|
|
file_sys/xts_archive.cpp
|
|
file_sys/xts_archive.h
|
|
frontend/applets/error.cpp
|
|
frontend/applets/error.h
|
|
frontend/applets/general_frontend.cpp
|
|
frontend/applets/general_frontend.h
|
|
frontend/applets/profile_select.cpp
|
|
frontend/applets/profile_select.h
|
|
frontend/applets/software_keyboard.cpp
|
|
frontend/applets/software_keyboard.h
|
|
frontend/applets/web_browser.cpp
|
|
frontend/applets/web_browser.h
|
|
frontend/emu_window.cpp
|
|
frontend/emu_window.h
|
|
frontend/framebuffer_layout.cpp
|
|
frontend/framebuffer_layout.h
|
|
frontend/input.h
|
|
frontend/scope_acquire_window_context.cpp
|
|
frontend/scope_acquire_window_context.h
|
|
gdbstub/gdbstub.cpp
|
|
gdbstub/gdbstub.h
|
|
hle/ipc.h
|
|
hle/ipc_helpers.h
|
|
hle/kernel/address_arbiter.cpp
|
|
hle/kernel/address_arbiter.h
|
|
hle/kernel/client_port.cpp
|
|
hle/kernel/client_port.h
|
|
hle/kernel/client_session.cpp
|
|
hle/kernel/client_session.h
|
|
hle/kernel/code_set.cpp
|
|
hle/kernel/code_set.h
|
|
hle/kernel/errors.h
|
|
hle/kernel/handle_table.cpp
|
|
hle/kernel/handle_table.h
|
|
hle/kernel/hle_ipc.cpp
|
|
hle/kernel/hle_ipc.h
|
|
hle/kernel/kernel.cpp
|
|
hle/kernel/kernel.h
|
|
hle/kernel/mutex.cpp
|
|
hle/kernel/mutex.h
|
|
hle/kernel/object.cpp
|
|
hle/kernel/object.h
|
|
hle/kernel/process.cpp
|
|
hle/kernel/process.h
|
|
hle/kernel/process_capability.cpp
|
|
hle/kernel/process_capability.h
|
|
hle/kernel/readable_event.cpp
|
|
hle/kernel/readable_event.h
|
|
hle/kernel/resource_limit.cpp
|
|
hle/kernel/resource_limit.h
|
|
hle/kernel/scheduler.cpp
|
|
hle/kernel/scheduler.h
|
|
hle/kernel/server_port.cpp
|
|
hle/kernel/server_port.h
|
|
hle/kernel/server_session.cpp
|
|
hle/kernel/server_session.h
|
|
hle/kernel/session.h
|
|
hle/kernel/shared_memory.cpp
|
|
hle/kernel/shared_memory.h
|
|
hle/kernel/svc.cpp
|
|
hle/kernel/svc.h
|
|
hle/kernel/svc_wrap.h
|
|
hle/kernel/thread.cpp
|
|
hle/kernel/thread.h
|
|
hle/kernel/transfer_memory.cpp
|
|
hle/kernel/transfer_memory.h
|
|
hle/kernel/vm_manager.cpp
|
|
hle/kernel/vm_manager.h
|
|
hle/kernel/wait_object.cpp
|
|
hle/kernel/wait_object.h
|
|
hle/kernel/writable_event.cpp
|
|
hle/kernel/writable_event.h
|
|
hle/lock.cpp
|
|
hle/lock.h
|
|
hle/result.h
|
|
hle/service/acc/acc.cpp
|
|
hle/service/acc/acc.h
|
|
hle/service/acc/acc_aa.cpp
|
|
hle/service/acc/acc_aa.h
|
|
hle/service/acc/acc_su.cpp
|
|
hle/service/acc/acc_su.h
|
|
hle/service/acc/acc_u0.cpp
|
|
hle/service/acc/acc_u0.h
|
|
hle/service/acc/acc_u1.cpp
|
|
hle/service/acc/acc_u1.h
|
|
hle/service/acc/profile_manager.cpp
|
|
hle/service/acc/profile_manager.h
|
|
hle/service/am/am.cpp
|
|
hle/service/am/am.h
|
|
hle/service/am/applet_ae.cpp
|
|
hle/service/am/applet_ae.h
|
|
hle/service/am/applet_oe.cpp
|
|
hle/service/am/applet_oe.h
|
|
hle/service/am/applets/applets.cpp
|
|
hle/service/am/applets/applets.h
|
|
hle/service/am/applets/error.cpp
|
|
hle/service/am/applets/error.h
|
|
hle/service/am/applets/general_backend.cpp
|
|
hle/service/am/applets/general_backend.h
|
|
hle/service/am/applets/profile_select.cpp
|
|
hle/service/am/applets/profile_select.h
|
|
hle/service/am/applets/software_keyboard.cpp
|
|
hle/service/am/applets/software_keyboard.h
|
|
hle/service/am/applets/web_browser.cpp
|
|
hle/service/am/applets/web_browser.h
|
|
hle/service/am/idle.cpp
|
|
hle/service/am/idle.h
|
|
hle/service/am/omm.cpp
|
|
hle/service/am/omm.h
|
|
hle/service/am/spsm.cpp
|
|
hle/service/am/spsm.h
|
|
hle/service/am/tcap.cpp
|
|
hle/service/am/tcap.h
|
|
hle/service/aoc/aoc_u.cpp
|
|
hle/service/aoc/aoc_u.h
|
|
hle/service/apm/apm.cpp
|
|
hle/service/apm/apm.h
|
|
hle/service/apm/interface.cpp
|
|
hle/service/apm/interface.h
|
|
hle/service/arp/arp.cpp
|
|
hle/service/arp/arp.h
|
|
hle/service/audio/audctl.cpp
|
|
hle/service/audio/audctl.h
|
|
hle/service/audio/auddbg.cpp
|
|
hle/service/audio/auddbg.h
|
|
hle/service/audio/audin_a.cpp
|
|
hle/service/audio/audin_a.h
|
|
hle/service/audio/audin_u.cpp
|
|
hle/service/audio/audin_u.h
|
|
hle/service/audio/audio.cpp
|
|
hle/service/audio/audio.h
|
|
hle/service/audio/audout_a.cpp
|
|
hle/service/audio/audout_a.h
|
|
hle/service/audio/audout_u.cpp
|
|
hle/service/audio/audout_u.h
|
|
hle/service/audio/audrec_a.cpp
|
|
hle/service/audio/audrec_a.h
|
|
hle/service/audio/audrec_u.cpp
|
|
hle/service/audio/audrec_u.h
|
|
hle/service/audio/audren_a.cpp
|
|
hle/service/audio/audren_a.h
|
|
hle/service/audio/audren_u.cpp
|
|
hle/service/audio/audren_u.h
|
|
hle/service/audio/codecctl.cpp
|
|
hle/service/audio/codecctl.h
|
|
hle/service/audio/errors.h
|
|
hle/service/audio/hwopus.cpp
|
|
hle/service/audio/hwopus.h
|
|
hle/service/bcat/bcat.cpp
|
|
hle/service/bcat/bcat.h
|
|
hle/service/bcat/module.cpp
|
|
hle/service/bcat/module.h
|
|
hle/service/bpc/bpc.cpp
|
|
hle/service/bpc/bpc.h
|
|
hle/service/btdrv/btdrv.cpp
|
|
hle/service/btdrv/btdrv.h
|
|
hle/service/btm/btm.cpp
|
|
hle/service/btm/btm.h
|
|
hle/service/caps/caps.cpp
|
|
hle/service/caps/caps.h
|
|
hle/service/erpt/erpt.cpp
|
|
hle/service/erpt/erpt.h
|
|
hle/service/es/es.cpp
|
|
hle/service/es/es.h
|
|
hle/service/eupld/eupld.cpp
|
|
hle/service/eupld/eupld.h
|
|
hle/service/fatal/fatal.cpp
|
|
hle/service/fatal/fatal.h
|
|
hle/service/fatal/fatal_p.cpp
|
|
hle/service/fatal/fatal_p.h
|
|
hle/service/fatal/fatal_u.cpp
|
|
hle/service/fatal/fatal_u.h
|
|
hle/service/filesystem/filesystem.cpp
|
|
hle/service/filesystem/filesystem.h
|
|
hle/service/filesystem/fsp_ldr.cpp
|
|
hle/service/filesystem/fsp_ldr.h
|
|
hle/service/filesystem/fsp_pr.cpp
|
|
hle/service/filesystem/fsp_pr.h
|
|
hle/service/filesystem/fsp_srv.cpp
|
|
hle/service/filesystem/fsp_srv.h
|
|
hle/service/fgm/fgm.cpp
|
|
hle/service/fgm/fgm.h
|
|
hle/service/friend/friend.cpp
|
|
hle/service/friend/friend.h
|
|
hle/service/friend/interface.cpp
|
|
hle/service/friend/interface.h
|
|
hle/service/grc/grc.cpp
|
|
hle/service/grc/grc.h
|
|
hle/service/hid/hid.cpp
|
|
hle/service/hid/hid.h
|
|
hle/service/hid/irs.cpp
|
|
hle/service/hid/irs.h
|
|
hle/service/hid/xcd.cpp
|
|
hle/service/hid/xcd.h
|
|
hle/service/hid/controllers/controller_base.cpp
|
|
hle/service/hid/controllers/controller_base.h
|
|
hle/service/hid/controllers/debug_pad.cpp
|
|
hle/service/hid/controllers/debug_pad.h
|
|
hle/service/hid/controllers/gesture.cpp
|
|
hle/service/hid/controllers/gesture.h
|
|
hle/service/hid/controllers/keyboard.cpp
|
|
hle/service/hid/controllers/keyboard.h
|
|
hle/service/hid/controllers/mouse.cpp
|
|
hle/service/hid/controllers/mouse.h
|
|
hle/service/hid/controllers/npad.cpp
|
|
hle/service/hid/controllers/npad.h
|
|
hle/service/hid/controllers/stubbed.cpp
|
|
hle/service/hid/controllers/stubbed.h
|
|
hle/service/hid/controllers/touchscreen.cpp
|
|
hle/service/hid/controllers/touchscreen.h
|
|
hle/service/hid/controllers/xpad.cpp
|
|
hle/service/hid/controllers/xpad.h
|
|
hle/service/lbl/lbl.cpp
|
|
hle/service/lbl/lbl.h
|
|
hle/service/ldn/ldn.cpp
|
|
hle/service/ldn/ldn.h
|
|
hle/service/ldr/ldr.cpp
|
|
hle/service/ldr/ldr.h
|
|
hle/service/lm/lm.cpp
|
|
hle/service/lm/lm.h
|
|
hle/service/mig/mig.cpp
|
|
hle/service/mig/mig.h
|
|
hle/service/mii/mii.cpp
|
|
hle/service/mii/mii.h
|
|
hle/service/mii/mii_manager.cpp
|
|
hle/service/mii/mii_manager.h
|
|
hle/service/mm/mm_u.cpp
|
|
hle/service/mm/mm_u.h
|
|
hle/service/ncm/ncm.cpp
|
|
hle/service/ncm/ncm.h
|
|
hle/service/nfc/nfc.cpp
|
|
hle/service/nfc/nfc.h
|
|
hle/service/nfp/nfp.cpp
|
|
hle/service/nfp/nfp.h
|
|
hle/service/nfp/nfp_user.cpp
|
|
hle/service/nfp/nfp_user.h
|
|
hle/service/nifm/nifm.cpp
|
|
hle/service/nifm/nifm.h
|
|
hle/service/nim/nim.cpp
|
|
hle/service/nim/nim.h
|
|
hle/service/npns/npns.cpp
|
|
hle/service/npns/npns.h
|
|
hle/service/ns/errors.h
|
|
hle/service/ns/language.cpp
|
|
hle/service/ns/language.h
|
|
hle/service/ns/ns.cpp
|
|
hle/service/ns/ns.h
|
|
hle/service/ns/pl_u.cpp
|
|
hle/service/ns/pl_u.h
|
|
hle/service/nvdrv/devices/nvdevice.h
|
|
hle/service/nvdrv/devices/nvdisp_disp0.cpp
|
|
hle/service/nvdrv/devices/nvdisp_disp0.h
|
|
hle/service/nvdrv/devices/nvhost_as_gpu.cpp
|
|
hle/service/nvdrv/devices/nvhost_as_gpu.h
|
|
hle/service/nvdrv/devices/nvhost_ctrl.cpp
|
|
hle/service/nvdrv/devices/nvhost_ctrl.h
|
|
hle/service/nvdrv/devices/nvhost_ctrl_gpu.cpp
|
|
hle/service/nvdrv/devices/nvhost_ctrl_gpu.h
|
|
hle/service/nvdrv/devices/nvhost_gpu.cpp
|
|
hle/service/nvdrv/devices/nvhost_gpu.h
|
|
hle/service/nvdrv/devices/nvhost_nvdec.cpp
|
|
hle/service/nvdrv/devices/nvhost_nvdec.h
|
|
hle/service/nvdrv/devices/nvhost_nvjpg.cpp
|
|
hle/service/nvdrv/devices/nvhost_nvjpg.h
|
|
hle/service/nvdrv/devices/nvhost_vic.cpp
|
|
hle/service/nvdrv/devices/nvhost_vic.h
|
|
hle/service/nvdrv/devices/nvmap.cpp
|
|
hle/service/nvdrv/devices/nvmap.h
|
|
hle/service/nvdrv/interface.cpp
|
|
hle/service/nvdrv/interface.h
|
|
hle/service/nvdrv/nvdrv.cpp
|
|
hle/service/nvdrv/nvdrv.h
|
|
hle/service/nvdrv/nvmemp.cpp
|
|
hle/service/nvdrv/nvmemp.h
|
|
hle/service/nvflinger/buffer_queue.cpp
|
|
hle/service/nvflinger/buffer_queue.h
|
|
hle/service/nvflinger/nvflinger.cpp
|
|
hle/service/nvflinger/nvflinger.h
|
|
hle/service/pcie/pcie.cpp
|
|
hle/service/pcie/pcie.h
|
|
hle/service/pctl/module.cpp
|
|
hle/service/pctl/module.h
|
|
hle/service/pctl/pctl.cpp
|
|
hle/service/pctl/pctl.h
|
|
hle/service/pcv/pcv.cpp
|
|
hle/service/pcv/pcv.h
|
|
hle/service/pm/pm.cpp
|
|
hle/service/pm/pm.h
|
|
hle/service/prepo/prepo.cpp
|
|
hle/service/prepo/prepo.h
|
|
hle/service/psc/psc.cpp
|
|
hle/service/psc/psc.h
|
|
hle/service/ptm/psm.cpp
|
|
hle/service/ptm/psm.h
|
|
hle/service/service.cpp
|
|
hle/service/service.h
|
|
hle/service/set/set.cpp
|
|
hle/service/set/set.h
|
|
hle/service/set/set_cal.cpp
|
|
hle/service/set/set_cal.h
|
|
hle/service/set/set_fd.cpp
|
|
hle/service/set/set_fd.h
|
|
hle/service/set/set_sys.cpp
|
|
hle/service/set/set_sys.h
|
|
hle/service/set/settings.cpp
|
|
hle/service/set/settings.h
|
|
hle/service/sm/controller.cpp
|
|
hle/service/sm/controller.h
|
|
hle/service/sm/sm.cpp
|
|
hle/service/sm/sm.h
|
|
hle/service/sockets/bsd.cpp
|
|
hle/service/sockets/bsd.h
|
|
hle/service/sockets/ethc.cpp
|
|
hle/service/sockets/ethc.h
|
|
hle/service/sockets/nsd.cpp
|
|
hle/service/sockets/nsd.h
|
|
hle/service/sockets/sfdnsres.cpp
|
|
hle/service/sockets/sfdnsres.h
|
|
hle/service/sockets/sockets.cpp
|
|
hle/service/sockets/sockets.h
|
|
hle/service/spl/csrng.cpp
|
|
hle/service/spl/csrng.h
|
|
hle/service/spl/module.cpp
|
|
hle/service/spl/module.h
|
|
hle/service/spl/spl.cpp
|
|
hle/service/spl/spl.h
|
|
hle/service/ssl/ssl.cpp
|
|
hle/service/ssl/ssl.h
|
|
hle/service/time/interface.cpp
|
|
hle/service/time/interface.h
|
|
hle/service/time/time.cpp
|
|
hle/service/time/time.h
|
|
hle/service/time/time_sharedmemory.cpp
|
|
hle/service/time/time_sharedmemory.h
|
|
hle/service/usb/usb.cpp
|
|
hle/service/usb/usb.h
|
|
hle/service/vi/display/vi_display.cpp
|
|
hle/service/vi/display/vi_display.h
|
|
hle/service/vi/layer/vi_layer.cpp
|
|
hle/service/vi/layer/vi_layer.h
|
|
hle/service/vi/vi.cpp
|
|
hle/service/vi/vi.h
|
|
hle/service/vi/vi_m.cpp
|
|
hle/service/vi/vi_m.h
|
|
hle/service/vi/vi_s.cpp
|
|
hle/service/vi/vi_s.h
|
|
hle/service/vi/vi_u.cpp
|
|
hle/service/vi/vi_u.h
|
|
hle/service/wlan/wlan.cpp
|
|
hle/service/wlan/wlan.h
|
|
loader/deconstructed_rom_directory.cpp
|
|
loader/deconstructed_rom_directory.h
|
|
loader/elf.cpp
|
|
loader/elf.h
|
|
loader/kip.cpp
|
|
loader/kip.h
|
|
loader/loader.cpp
|
|
loader/loader.h
|
|
loader/nax.cpp
|
|
loader/nax.h
|
|
loader/nca.cpp
|
|
loader/nca.h
|
|
loader/nro.cpp
|
|
loader/nro.h
|
|
loader/nso.cpp
|
|
loader/nso.h
|
|
loader/nsp.cpp
|
|
loader/nsp.h
|
|
loader/xci.cpp
|
|
loader/xci.h
|
|
memory.cpp
|
|
memory.h
|
|
memory_setup.h
|
|
perf_stats.cpp
|
|
perf_stats.h
|
|
reporter.cpp
|
|
reporter.h
|
|
settings.cpp
|
|
settings.h
|
|
telemetry_session.cpp
|
|
telemetry_session.h
|
|
)
|
|
|
|
create_target_directory_groups(core)
|
|
|
|
target_link_libraries(core PUBLIC common PRIVATE audio_core video_core)
|
|
target_link_libraries(core PUBLIC Boost::boost PRIVATE fmt json-headers mbedtls opus unicorn open_source_archives)
|
|
if (ENABLE_WEB_SERVICE)
|
|
target_compile_definitions(core PRIVATE -DENABLE_WEB_SERVICE)
|
|
target_link_libraries(core PRIVATE web_service)
|
|
endif()
|
|
|
|
if (ARCHITECTURE_x86_64)
|
|
target_sources(core PRIVATE
|
|
arm/dynarmic/arm_dynarmic.cpp
|
|
arm/dynarmic/arm_dynarmic.h
|
|
)
|
|
target_link_libraries(core PRIVATE dynarmic)
|
|
endif()
|