CPU: notes on CPU defines etc
authorAlan Cox <alan@linux.intel.com>
Wed, 14 Sep 2016 12:30:53 +0000 (13:30 +0100)
committerAlan Cox <alan@linux.intel.com>
Wed, 14 Sep 2016 12:30:53 +0000 (13:30 +0100)
Kernel/CPU [new file with mode: 0644]

diff --git a/Kernel/CPU b/Kernel/CPU
new file mode 100644 (file)
index 0000000..3b547ea
--- /dev/null
@@ -0,0 +1,94 @@
+Each CPU has its own cpu subdirectory
+
+       cpu-$name/
+
+In that should be
+
+cpu.h
+       Types and definitions specific to the processor
+
+rules.mk
+       Cross compiler options and settings
+
+image.mk
+       General rules to build the final binary image
+
+
+The following other per CPU files currently have leaked outside of the CPU
+directory and will eventually move
+
+lowlevel-$cpu.[sS]
+       Low level function implementations that are common across all
+platforms using that processor type
+
+usermem_std-$cpu.[sS]
+       Standard implementation of user/kernel memory access functions for
+this processor type (may be blank)
+
+kernel-$cpu.def
+       Assembler constants and the like used to access structure offsets
+shared between the C and assembler code.
+
+
+Other CPU specific files can be placed in the cpu directory and referenced
+as needed. The lowlevel code can also be C or assembler as best suits that
+platform.
+
+
+Types and definitions: cpu.h
+
+The following standard types should be provided, either directly from a
+compiler header or in cpu.h
+
+       uint32_t
+       int32_t
+       uint16_t
+       int16_t
+       uint8_t
+       int8_t
+       size_t
+
+The following additional types are used by FUZIX
+
+       arg_t           -       a syscall argument (signed)
+       uarg_t          -       a syscall argument (unsigned)
+       usize_t         -       size_t for a userspace pointer
+       susize_t        -       ditto, signed
+       uaddr_t         -       a userspace address
+       uptr_t          -       the size of a userspace pointer
+
+       irqflags_t      -       a suitable type to hold the IRQ status
+
+       clock_t         -       used for times()
+
+       time_t          -       holds unix time split into a high/low part
+                               according to byte order. Not the same as
+                               user space.
+
+       ticks_t         -       clock_t with a 16bit low/high split in
+                               CPU byte order
+
+Althouh not tested the uptr_t type is there to support mixed pointer size
+kernel/user space. To allow for this ugetp and uputp should be defined to
+the correct uget/put size for a pointer (or provided)
+
+EMAGIC                 -       16bit platforms only (magic numbers)
+EMAGIC_2               -       define as EMAGIC if only one
+
+
+staticfast             -       define as blank unless you have a CPU that
+                               is much happier accessing memory from fixed
+                               addresses. Intended to make the Z80 port
+                               a bit tighter
+
+
+POINTER32              -       set if pointers are 32bit
+
+used(x)                        -       indicate to the compiler that x is used
+
+BIG_ENDIAN             -       set for big endian processor
+
+
+Some of the other defines currently present are obsolete including the
+banking ones and __fastcall__
+