# Copyright (c) 2020 Intel Corporation
# SPDX-License-Identifier: Apache-2.0

choice BACKING_STORE_CHOICE
	prompt "Backing store algorithms"
	default BACKING_STORE_RAM

config BACKING_STORE_CUSTOM
	bool "Custom backing store implementation"
	help
	  This option is chosen when the backing store will be implemented in
	  the application. This will be typical as these tend to be very
	  hardware-dependent.

config BACKING_STORE_RAM
	bool "RAM-based test backing store"
	help
	  This implements a backing store using physical RAM pages that the
	  Zephyr kernel is otherwise unaware of. It is intended for
	  demonstration and testing of the demand paging feature.

config BACKING_STORE_QEMU_X86_TINY_FLASH
	bool "Flash-based backing store on qemu_x86_tiny"
	depends on BOARD_QEMU_X86_TINY
	help
	  This uses the "flash" memory area (in DTS) as the backing store
	  for demand paging. The qemu_x86_tiny.ld linker script puts
	  the symbols outside of boot and pinned sections into the flash
	  area, allowing testing of the demand paging mechanism on
	  code and data.

config BACKING_STORE_ONDEMAND_SEMIHOST
	bool "Backing store for on-demand linker section using semihosting"
	depends on SEMIHOST && LINKER_USE_ONDEMAND_SECTION
	help
	  This is used to do on-demand paging of code and data marked with
	  __ondemand_func and __ondemand_rodata tags respectively. The compiled
	  zephyr.bin on the host is used to retrieve needed data with the
	  semihosting I/O facility.

endchoice

if BACKING_STORE_RAM
config BACKING_STORE_RAM_PAGES
	int "Number of pages for RAM backing store"
	default 16
	help
	  Number of pages of backing store memory to reserve in RAM. All test
	  cases for demand paging assume that there are at least 16 pages of
	  backing store storage available.

endif # BACKING_STORE_RAM
