9os

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

commit b4cb38218803346f94ec3c197d50ff0b70a45d33
parent c4cece99a9829ea466f722441812746ca006a10d
Author: Dimitris Papastamos <dimitris.papastamos@arm.com>
Date:   Wed, 21 Nov 2018 13:52:26 +0000

Merge "[libk] Move bss() to arch"
Diffstat:
March/amd64/Makefile | 4++--
Aarch/amd64/bss.c | 1+
March/arm64/Makefile | 2++
Aarch/arm64/bss.c | 1+
Rsrc/libk/bss-posix.c -> arch/posix/bss.c | 0
March/rmode/Makefile | 4++--
March/rmode/arch.s | 6+++++-
Darch/rmode/gensysreg.sh | 42------------------------------------------
Aarch/rmode/mksysreg | 42++++++++++++++++++++++++++++++++++++++++++
March/rmode/sysreg.lst | 1+
Msrc/libk/Makefile | 3+--
Dsrc/libk/bss-dragonfly.c | 1-
Dsrc/libk/bss-linux.c | 1-
Dsrc/libk/bss-netbsd.c | 1-
Dsrc/libk/bss-openbsd.c | 1-
Dsrc/libk/bss-rcode.c | 12------------
16 files changed, 57 insertions(+), 65 deletions(-)

diff --git a/arch/amd64/Makefile b/arch/amd64/Makefile @@ -2,8 +2,8 @@ PROJECTDIR = ../.. include $(PROJECTDIR)/scripts/rules.mk -ROMOBJS = crt-$(SYS).o arch.o rom.o $(DLANG) $(SRCDIR)/romfw/builtin.o -RAMOBJS = crt-$(SYS).o arch.o ram.o $(DLANG) $(SRCDIR)/ramfw/builtin.o +ROMOBJS = crt-$(SYS).o arch.o rom.o bss.o $(DLANG) $(SRCDIR)/romfw/builtin.o +RAMOBJS = crt-$(SYS).o arch.o ram.o bss.o $(DLANG) $(SRCDIR)/ramfw/builtin.o TARGET = $(BINDIR)/romfw.elf $(BINDIR)/ramfw.elf diff --git a/arch/amd64/bss.c b/arch/amd64/bss.c @@ -0,0 +1 @@ +#include "../posix/bss.c" diff --git a/arch/arm64/Makefile b/arch/arm64/Makefile @@ -5,12 +5,14 @@ include $(PROJECTDIR)/scripts/rules.mk ROMOBJS = crt-$(SYS).o \ rom.o \ arch.o \ + bss.o \ $(DLANG) \ $(SRCDIR)/romfw/builtin.o \ RAMOBJS = crt-$(SYS).o \ ram.o \ arch.o \ + bss.o \ $(DLANG) \ $(SRCDIR)/ramfw/builtin.o \ diff --git a/arch/arm64/bss.c b/arch/arm64/bss.c @@ -0,0 +1 @@ +#include "../posix/bss.c" diff --git a/src/libk/bss-posix.c b/arch/posix/bss.c diff --git a/arch/rmode/Makefile b/arch/rmode/Makefile @@ -33,10 +33,10 @@ rom.o: sysreg.h cache.o: sysreg.h sysreg.h: sysreg.lst - ./gensysreg.sh -h sysreg.lst + ./mksysreg -h sysreg.lst sysreg.s: sysreg.lst - ./gensysreg.sh -s sysreg.lst + ./mksysreg -s sysreg.lst $(BINDIR)/romfw.elf: $(ROMOBJS) $(LIBDEP) $(LD) $(RCODE_LDFLAGS) $(ROMOBJS) $(LIBS) -o $@ diff --git a/arch/rmode/arch.s b/arch/rmode/arch.s @@ -3,7 +3,7 @@ .text .globl panic,dohalt,enaint,dopanic .globl barrier,vectbl,doswtch,inm8,inm16,inm32 - .globl outm8,outm16,outm32 + .globl outm8,outm16,outm32,bss .globl invdcachesetway,invicache,vectbl,doswtch .globl inm8,inm16,inm32,outm8,outm16,outm32 @@ -23,6 +23,10 @@ barrier: dsb sy ret +bss: + mrs x0,S3_6_C12_C0_6 /* TPIDR_R */ + ret + invdcachesetway: dc isw,x0 ret diff --git a/arch/rmode/gensysreg.sh b/arch/rmode/gensysreg.sh @@ -1,42 +0,0 @@ -#/bin/sh - -set -e -trap 'r=$?;rm -f $$.tmp;exit $r' EXIT HUP INT QUIT TERM - -for i -do - case $i in - -h) - shift - awk 'BEGIN {print "enum sysreg {"} - NF == 2 {printf "\t%s,\n", $1} - END {print "};"}' $@ > $$.tmp && - mv $$.tmp sysreg.h - ;; - -s) - shift - cat <<EOF > $$.tmp && mv $$.tmp sysreg.s - .file "sysreg.s" - - .text - .globl rsysreg,wsysreg -rsysreg: - adr x1, 1f - lsl x0, x0, #3 - add x1, x1, x0 - br x1 -1: -$(awk 'NF == 2 {printf "\tmrs\tx0,%s\n\tret\n\n", $2}' $@) - - -wsysreg: - adr x1, 1f - lsl x0, x0, #3 - add x1, x1, x0 - br x1 -1: -$(awk 'NF == 2 {printf "\tmsr\t%s,x0\n\tret\n\n", $2}' $@) -EOF - ;; - esac -done diff --git a/arch/rmode/mksysreg b/arch/rmode/mksysreg @@ -0,0 +1,42 @@ +#/bin/sh + +set -e +trap 'r=$?;rm -f $$.tmp;exit $r' EXIT HUP INT QUIT TERM + +for i +do + case $i in + -h) + shift + awk 'BEGIN {print "enum sysreg {"} + NF == 2 {printf "\t%s,\n", $1} + END {print "};"}' $@ > $$.tmp && + mv $$.tmp sysreg.h + ;; + -s) + shift + cat <<EOF > $$.tmp && mv $$.tmp sysreg.s + .file "sysreg.s" + + .text + .globl rsysreg,wsysreg +rsysreg: + adr x1,1f + lsl x0,x0,#3 + add x1,x1,x0 + br x1 +1: +$(awk 'NF == 2 {printf "\tmrs\tx0,%s\n\tret\n\n", $2}' $@) + + +wsysreg: + adr x2,1f + lsl x0,x0,#3 + add x2,x2,x0 + br x2 +1: +$(awk 'NF == 2 {printf "\tmsr\t%s,x1\n\tret\n\n", $2}' $@) +EOF + ;; + esac +done diff --git a/arch/rmode/sysreg.lst b/arch/rmode/sysreg.lst @@ -4,6 +4,7 @@ RCR_R S3_6_C1_C1_6 RDSCR_R S3_6_C6_C15_6 SCTLR_R S3_6_C1_C0_6 RVBAR_EL3 S3_6_C12_C0_1 +TPIDR_R S3_6_C12_C0_6 CLIDR_EL1 S3_1_C0_C0_1 CCSIDR_EL1 S3_1_C0_C0_0 CSSELR_EL1 S3_2_C0_C0_0 diff --git a/src/libk/Makefile b/src/libk/Makefile @@ -2,8 +2,7 @@ PROJECTDIR=../.. include $(PROJECTDIR)/scripts/rules.mk -OBJS = bss-$(SYS).o \ - doprnt.o \ +OBJS = doprnt.o \ kprint.o \ ksnprint.o \ kgetc-$(SYS).o \ diff --git a/src/libk/bss-dragonfly.c b/src/libk/bss-dragonfly.c @@ -1 +0,0 @@ -#include "bss-posix.c" diff --git a/src/libk/bss-linux.c b/src/libk/bss-linux.c @@ -1 +0,0 @@ -#include "bss-posix.c" diff --git a/src/libk/bss-netbsd.c b/src/libk/bss-netbsd.c @@ -1 +0,0 @@ -#include "bss-posix.c" diff --git a/src/libk/bss-openbsd.c b/src/libk/bss-openbsd.c @@ -1 +0,0 @@ -#include "bss-posix.c" diff --git a/src/libk/bss-rcode.c b/src/libk/bss-rcode.c @@ -1,12 +0,0 @@ -#include <rcode.h> - -#undef bss - -struct bssmap * -bss(void) -{ - uintptr_t addr; - - addr = ((uintptr_t)&addr & ~(PAGESIZE-1)); - return (struct bssmap *)addr; -}