This series implements - detection of installed physical memory - setup of the physical allocator - setup of the MMU / page tables / DAT - setup of the virtual allocator The CPU now runs with DAT enabled. I added a small test to make sure malloc() indeed works and uses virtual adresses. While at it, fix the TEST BLOCK test on newer compilers. Tested with upsteam QEMU TCG and KVM. However, to pass under TCG a couple of fixes are necessary (e.g. disabling DAT does not work). Will post them shortly. v1 -> v2: - "s390x: use highest addresses for PGM_ADDRESSING errors" - UL -> L - "s390x: set initital stack pointer to stackptr, not stacktop" - added - "s390x: add missing sclp definitions from QEMU" - fix copyright statement - "s390x: rename sclp_setup() to sclp_ascii_setup()" - also expose the buffer - "s390x: detect installed memory" - use tprot correctly (we have to test for exceptions, too) - fix tprot address in asm (r vs Q) - "s390x: initialize the physical allocator" - move freemem_start into mem_init() - get rid of the "+ PAGE_SIZE" hack - "s390x: add vmalloc support" - not adding always_inline, as functions in headers are always inlined (and always_inline will not compile) - configure_dat(): - move to mmu.c - use labels 0/1 and reference by 0f/1f, otherwise we might have duplicate labels and the compiler complains when inlining - use two local variables, fix store - don't enable DAT in PGM interrupt as default - "s390x: enable DAT in PGM interrupt handler" - added - "s390x: add test for (v)malloc" - use a mb() and read values to check validity - test only for the highest bits - disable DAT to test if we actually have a virtual address - "s390x: add sieve test" - copied it (unfortunately no copyright statement?) - minor styl corrections + temporarily disable DAT David Hildenbrand (11): s390x: fix TEST BLOCK tests s390x: use highest addresses for PGM_ADDRESSING errors s390x: set initital stack pointer to stackptr, not stacktop s390x: add missing sclp definitions from QEMU s390x: rename sclp_setup() to sclp_ascii_setup() s390x: detect installed memory s390x: initialize the physical allocator s390x: add vmalloc support s390x: enable DAT in PGM interrupt handler s390x: add test for (v)malloc s390x: add sieve test lib/s390x/asm/arch_def.h | 31 +++++++ lib/s390x/asm/interrupt.h | 1 + lib/s390x/asm/page.h | 24 +++++ lib/s390x/asm/pgtable.h | 224 ++++++++++++++++++++++++++++++++++++++++++++++ lib/s390x/interrupt.c | 11 +++ lib/s390x/io.c | 3 +- lib/s390x/mmu.c | 125 ++++++++++++++++++++++++++ lib/s390x/sclp-ascii.c | 6 +- lib/s390x/sclp.c | 72 +++++++++++++++ lib/s390x/sclp.h | 112 ++++++++++++++++++++++- s390x/Makefile | 7 ++ s390x/cstart64.S | 2 +- s390x/intercept.c | 14 +-- s390x/selftest.c | 31 ++++++- s390x/sieve.c | 59 ++++++++++++ s390x/unittests.cfg | 6 ++ 16 files changed, 713 insertions(+), 15 deletions(-) create mode 100644 lib/s390x/asm/pgtable.h create mode 100644 lib/s390x/mmu.c create mode 100644 lib/s390x/sclp.c create mode 100644 s390x/sieve.c -- 2.14.3