arch: native: Run Zephyr natively in a POSIX OS

A new arch (posix) which relies on pthreads to emulate the context
switching
A new soc for it (inf_clock) which emulates a CPU running at an
infinely high clock (so when the CPU is awaken it runs till completion
in 0 time)
A new board, which provides a trivial system tick timer and
irq generation.

Origin: Original

Fixes #1891

Signed-off-by: Alberto Escolar Piedras <alpi@oticon.com>
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
This commit is contained in:
Alberto Escolar Piedras 2017-10-03 16:31:55 +02:00 committed by Anas Nashif
commit 76f7644118
42 changed files with 2324 additions and 9 deletions

View file

@ -36,6 +36,8 @@
/* Nothing yet to include */
#elif defined(CONFIG_XTENSA)
/* Nothing yet to include */
#elif defined(CONFIG_ARCH_POSIX)
/* Nothing yet to include */
#else
#error Arch not supported.
#endif

View file

@ -34,6 +34,8 @@
OUTPUT_FORMAT("elf32-littleriscv")
#elif defined(CONFIG_XTENSA)
/* Not needed */
#elif defined(CONFIG_ARCH_POSIX)
/* Not needed */
#else
#error Arch not supported.
#endif
@ -51,7 +53,11 @@
* description and tells the linker that this section is located in
* the memory area specified by <where> argument.
*/
#if defined(CONFIG_ARCH_POSIX)
#define GROUP_LINK_IN(where)
#else
#define GROUP_LINK_IN(where) > where
#endif
/*
* As GROUP_LINK_IN(), but takes a second argument indicating the
@ -64,11 +70,15 @@
* section, specifying the same memory region (e.g. "RAM") for both
* vregion and lregion.
*/
#if defined(CONFIG_ARCH_POSIX)
#define GROUP_DATA_LINK_IN(vregion, lregion)
#else
#ifdef CONFIG_XIP
#define GROUP_DATA_LINK_IN(vregion, lregion) > vregion AT> lregion
#else
#define GROUP_DATA_LINK_IN(vregion, lregion) > vregion
#endif
#endif /*CONFIG_ARCH_POSIX*/
/*
* The GROUP_FOLLOWS_AT() macro is located at the end of the section
@ -76,7 +86,11 @@
* it is to be loaded, but that it follows a section which did specify
* such an address
*/
#ifdef CONFIG_ARCH_POSIX
#define GROUP_FOLLOWS_AT(where)
#else
#define GROUP_FOLLOWS_AT(where) AT > where
#endif
/*
* The SECTION_PROLOGUE() macro is used to define the beginning of a section.