From: Alan Cox Date: Wed, 14 Sep 2016 12:30:53 +0000 (+0100) Subject: CPU: notes on CPU defines etc X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=225ab1adc3063a70d6046bf6330ac9a879a6ffff;p=FUZIX.git CPU: notes on CPU defines etc --- diff --git a/Kernel/CPU b/Kernel/CPU new file mode 100644 index 00000000..3b547ea4 --- /dev/null +++ b/Kernel/CPU @@ -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__ +