zephyr/include
Andy Ross b69d0da82d arch/x86_64: New architecture added
This patch adds a x86_64 architecture and qemu_x86_64 board to Zephyr.
Only the basic architecture support needed to run 64 bit code is
added; no drivers are added, though a low-level console exists and is
wired to printk().

The support is built on top of a "X86 underkernel" layer, which can be
built in isolation as a unit test on a Linux host.

Limitations:

+ Right now the SDK lacks an x86_64 toolchain.  The build will fall
  back to a host toolchain if it finds no cross compiler defined,
  which is tested to work on gcc 8.2.1 right now.

+ No x87/SSE/AVX usage is allowed.  This is a stronger limitation than
  other architectures where the instructions work from one thread even
  if the context switch code doesn't support it.  We are passing
  -no-sse to prevent gcc from automatically generating SSE
  instructions for non-floating-point purposes, which has the side
  effect of changing the ABI.  Future work to handle the FPU registers
  will need to be combined with an "application" ABI distinct from the
  kernel one (or just to require USERSPACE).

+ Paging is enabled (it has to be in long mode), but is a 1:1 mapping
  of all memory.  No MMU/USERSPACE support yet.

+ We are building with -mno-red-zone for stack size reasons, but this
  is a valuable optimization.  Enabling it requires automatic stack
  switching, which requires a TSS, which means it has to happen after
  MMU support.

+ The OS runs in 64 bit mode, but for compatibility reasons is
  compiled to the 32 bit "X32" ABI.  So while the full 64 bit
  registers and instruction set are available, C pointers are 32 bits
  long and Zephyr is constrained to run in the bottom 4G of memory.

Signed-off-by: Andy Ross <andrew.j.ross@intel.com>
2019-01-11 15:18:52 -05:00
..
app_memory arch: arm: mpu: Updates in ARM MPU-related convenience macros 2018-12-05 15:15:07 -05:00
arch arch/x86_64: New architecture added 2019-01-11 15:18:52 -05:00
audio
bluetooth Bluetooth: GATT: Add groups for server and client APIs 2019-01-03 12:12:10 +01:00
cmsis_rtos_v1
cmsis_rtos_v2 CMSIS RTOS V2: Introduce CMSIS RTOS V2 API header file 2018-12-20 12:23:22 +01:00
crypto
debug
dfu
display doc: add missing cfb API 2019-01-03 12:38:28 -05:00
drivers pci: Use logger 2018-12-07 11:32:45 -05:00
dt-bindings
fs
linker include/linker_defs.h: Remove noop architecture detection 2019-01-11 15:18:52 -05:00
logging log: Make statements evaluate boolean expressions 2019-01-07 08:52:07 -05:00
mgmt mgmt: Add function to unregister GATT service 2018-11-07 14:35:22 +02:00
misc include: misc: util: Added new util macros FOR_EACH_FIXED_ARG 2019-01-03 12:35:14 -08:00
net net: mqtt: Fix typo "seg_tag_list" 2019-01-10 11:30:33 +02:00
nvs doc: group file system/storage APIs 2018-12-10 20:38:09 -05:00
posix lib: posix: fs: Convert to use generic fdtable 2018-11-04 22:04:11 +01:00
random
settings doc: regular misspelling scan 2018-12-26 13:27:14 -05:00
shell shell: Changing shell_history_get signature 2018-12-28 17:47:46 -05:00
toolchain arch/x86_64: New architecture added 2019-01-11 15:18:52 -05:00
usb usb: hid: macro for report descriptor 2019-01-10 08:58:31 -05:00
zephyr
adc.h include: adc: Fix async ADC API documentation 2018-12-04 15:52:18 -05:00
aio_comparator.h
atomic.h doc: regular misspelling scan 2018-12-26 13:27:14 -05:00
base64.h
cache.h
can.h
clock_control.h
console.h doc: regular misspelling scan 2018-12-26 13:27:14 -05:00
counter.h
crc.h crc: Move crc7 into CRC single header 2018-12-30 16:24:10 -05:00
crc8.h crc: deprecate old headers and issue warning when used 2018-12-04 08:52:46 -06:00
crc16.h crc: move all crc APIs into one header 2018-12-04 08:52:46 -06:00
crc32.h crc: deprecate old headers and issue warning when used 2018-12-04 08:52:46 -06:00
device.h arch/x86_64: New architecture added 2019-01-11 15:18:52 -05:00
disk_access.h
display.h display: Added double buffer screen info to display API 2019-01-07 16:05:35 -05:00
dma.h c++: convert implicit conversion to explicit ones in header files 2018-11-16 15:18:36 -05:00
entropy.h drivers: entropy: Use likely()/unlikely() macros to speed up the API 2018-10-30 11:16:34 +01:00
exc_handle.h kernel: Fix type of Z_EXC_HANDLE 2018-11-16 09:18:27 -08:00
fcb.h
flash.h
flash_map.h
fs.h doc: group file system/storage APIs 2018-12-10 20:38:09 -05:00
gna.h doc: regular misspelling scan 2018-12-26 13:27:14 -05:00
gpio.h
i2c.h i2c: support const correctness for write operations 2018-12-07 09:24:26 -05:00
i2s.h i2s: add i2s_configure() as a system call 2018-11-15 16:20:36 -05:00
init.h
ipm.h
irq.h kernel: add dynamic interrupt API 2018-11-10 11:01:22 -05:00
irq_nextlevel.h
irq_offload.h
json.h
kernel.h kernel: Do not use zero-length array 2019-01-08 09:58:24 -05:00
kernel_includes.h kernel.h: Header hygine, move clock/timer handling 2018-10-16 15:03:10 -04:00
kernel_version.h doc: add kernel version API to doxygen 2018-12-08 17:24:53 -05:00
led.h
led_strip.h
pinmux.h
power.h power: rename api sys_soc -> sys_ 2018-12-28 16:16:28 -05:00
ptp_clock.h
pwm.h
ring_buffer.h
rtc.h
sched_priq.h
sensor.h drivers: sensors: remove deprecated enum values 2018-10-30 15:28:41 -05:00
shared_irq.h
spi.h docs: spi.h: removed dev doxygen comment from struct spi_config 2018-12-17 08:19:21 -06:00
spinlock.h
stats.h include: stats.h: Packed attribute was incorrect. 2018-12-07 10:32:41 -05:00
sw_isr_table.h arch: common: add function for updating IRQ table 2018-11-10 11:01:22 -05:00
sys_clock.h sys_clock: Change function signature 2018-12-11 14:37:10 -08:00
sys_io.h
syscall.h syscall: Return bool in a boolean function 2018-11-30 08:05:11 -08:00
toolchain.h
tracing.h debug: tracing: Add CPU stats module 2018-11-30 11:01:32 -08:00
tty.h doc: regular misspelling scan 2018-12-26 13:27:14 -05:00
uart.h serial: Change poll_out signature 2018-11-29 10:18:59 -08:00
watchdog.h watchdog: put in correct doxygen group 2018-12-10 20:38:09 -05:00
zephyr.h