svn commit: r355439 - in head/sys/arm: arm include

Ian Lepore ian at FreeBSD.org
Fri Dec 6 03:48:36 UTC 2019


Author: ian
Date: Fri Dec  6 03:48:35 2019
New Revision: 355439
URL: https://svnweb.freebsd.org/changeset/base/355439

Log:
  Declare the global kernel symbols created by ldscript.arm in arm's machdep.h,
  and remove a couple scattered local declarations.
  
  Most of these aren't referenced in C code (there are some references in
  asm code), and they also aren't documented anywhere.  This helps a bit
  with the latter.

Modified:
  head/sys/arm/arm/mp_machdep.c
  head/sys/arm/arm/unwind.c
  head/sys/arm/include/machdep.h

Modified: head/sys/arm/arm/mp_machdep.c
==============================================================================
--- head/sys/arm/arm/mp_machdep.c	Fri Dec  6 03:46:38 2019	(r355438)
+++ head/sys/arm/arm/mp_machdep.c	Fri Dec  6 03:48:35 2019	(r355439)
@@ -106,8 +106,6 @@ check_ap(void)
 	return (-2);
 }
 
-extern unsigned char _end[];
-
 /* Initialize and fire up non-boot processors */
 void
 cpu_mp_start(void)

Modified: head/sys/arm/arm/unwind.c
==============================================================================
--- head/sys/arm/arm/unwind.c	Fri Dec  6 03:46:38 2019	(r355438)
+++ head/sys/arm/arm/unwind.c	Fri Dec  6 03:48:35 2019	(r355439)
@@ -35,6 +35,7 @@ __FBSDID("$FreeBSD$");
 #include <sys/systm.h>
 #include <sys/linker.h>
 
+#include <machine/machdep.h>
 #include <machine/stack.h>
 
 #include "linker_if.h"
@@ -61,12 +62,6 @@ __FBSDID("$FreeBSD$");
 #define	EXIDX_CANTUNWIND	1
 
 /*
- * These are set in the linker script. Their addresses will be
- * either the start or end of the exception table or index.
- */
-extern int exidx_start, exidx_end;
-
-/*
  * Entry types.
  * These are the only entry types that have been seen in the kernel.
  */
@@ -154,9 +149,9 @@ find_index(uint32_t addr, int search_modules)
 	int32_t prel31_addr;
 	uint32_t func_addr;
 
-	start = (struct unwind_idx *)&exidx_start;
-	idx_start = (caddr_t)&exidx_start;
-	idx_end = (caddr_t)&exidx_end;
+	start = (struct unwind_idx *)&_exidx_start;
+	idx_start = (caddr_t)&_exidx_start;
+	idx_end = (caddr_t)&_exidx_end;
 
 	/* This may acquire a lock */
 	if (search_modules) {

Modified: head/sys/arm/include/machdep.h
==============================================================================
--- head/sys/arm/include/machdep.h	Fri Dec  6 03:46:38 2019	(r355438)
+++ head/sys/arm/include/machdep.h	Fri Dec  6 03:48:35 2019	(r355439)
@@ -61,4 +61,24 @@ void arm_add_efi_map_entries(struct efi_map_header *ef
     struct mem_region *mr, int *mrcnt);
 #endif
 
+/*
+ * Symbols created by ldscript.arm which are accessible in the kernel as global
+ * symbols. They have uint8 type because they mark the byte location where the
+ * corresponding data starts or ends (in the end case, it's the next byte
+ * following the data, so the data size is end-start).  These are listed below
+ * in the order they occur within the kernel (i.e., the address of each variable
+ * should be greater than any of the ones before it).
+ */
+extern uint8_t _start;		/* Kernel entry point in locore.S */
+extern uint8_t _etext;		/* text segment end */
+extern uint8_t _extab_start;	/* unwind table start */
+extern uint8_t _exidx_start;	/* unwind index start */
+extern uint8_t _exidx_end;	/* unwind index end */
+extern uint8_t _start_ctors;	/* ctors data start */
+extern uint8_t _stop_ctors;	/* ctors data end */
+extern uint8_t _edata;		/* data segment end */
+extern uint8_t __bss_start;	/* bss segment start */
+extern uint8_t _ebss;		/* bss segment end */
+extern uint8_t _end;		/* End of kernel (text+ctors+unwind+data+bss) */
+
 #endif /* !_MACHINE_MACHDEP_H_ */


More information about the svn-src-all mailing list