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:
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;
-}