Module Name:    src
Committed By:   ryo
Date:           Wed Jul 18 06:50:48 UTC 2018

Modified Files:
        src/sys/arch/evbarm/fdt: fdt_start.S

Log Message:
remove ifdef __clang.
make position independent, and cleanup.


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/sys/arch/evbarm/fdt/fdt_start.S

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/evbarm/fdt/fdt_start.S
diff -u src/sys/arch/evbarm/fdt/fdt_start.S:1.2 src/sys/arch/evbarm/fdt/fdt_start.S:1.3
--- src/sys/arch/evbarm/fdt/fdt_start.S:1.2	Tue Jul 17 00:37:42 2018
+++ src/sys/arch/evbarm/fdt/fdt_start.S	Wed Jul 18 06:50:48 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: fdt_start.S,v 1.2 2018/07/17 00:37:42 christos Exp $	*/
+/*	$NetBSD: fdt_start.S,v 1.3 2018/07/18 06:50:48 ryo Exp $	*/
 
 /*
  * Copyright (c) 2017 Ryo Shimizu <[email protected]>
@@ -32,11 +32,17 @@
 
 #include <aarch64/asm.h>
 
-RCSID("$NetBSD: fdt_start.S,v 1.2 2018/07/17 00:37:42 christos Exp $")
+RCSID("$NetBSD: fdt_start.S,v 1.3 2018/07/18 06:50:48 ryo Exp $")
 
 #define PRINT(string)	\
 	bl xprint;.asciz string;.align 2
 
+/* load far effective address (pc relative) */
+.macro	ADDR, reg, addr
+	adrp	\reg, \addr
+	add	\reg, \reg, #:lo12:\addr
+.endm
+
 /*
  * Kernel start routine for aarch64 boards.
  */
@@ -47,29 +53,16 @@ start:
 
 	sub	x10, x10, x9
 
-#ifdef __clang__
-	ldr	x8, =(kern_vtopdiff - start)
-#else
-	ldr     x7, =start
-	ldr	x8, =kern_vtopdiff
-	sub	x8, x8, x7
-#endif
-	add	x8, x8, x9
-	str	x10, [x8]
+	/* address of kern_vtopdiff (relative) */
+	ADDR	x8, kern_vtopdiff
+	str	x10, [x8]	/* kern_vtopdiff = start(virt) - start(phys) */
 
 	/*
 	 * store uboot arguments to uboot_args[4]
 	 */
 
-	/* offset of uboot_args from start */
-#ifdef __clang__
-	ldr	x8, =(uboot_args - start)
-#else
-	ldr	x8, =uboot_args
-	sub	x8, x8, x7
-#endif
-	add	x8, x8, x9		/* add load address to offset */
-
+	/* address of uboot_args (relative) */
+	ADDR	x8, uboot_args
 	str	x0, [x8, #(8*0)]
 	str	x1, [x8, #(8*1)]
 	str	x2, [x8, #(8*2)]
@@ -78,13 +71,7 @@ start:
 	/*
 	 * ARM64 boot protocol has FDT address in x0 *
 	 */
-#ifdef __clang__
-	ldr	x8, =(fdt_addr_r - start)
-#else
-	ldr	x8, =fdt_addr_r
-	sub	x8, x8, x7
-#endif
-	add	x8, x8, x9
+	ADDR	x8, fdt_addr_r
 	str	x0, [x8]
 
 

Reply via email to