diff mbox

[RFC,v2,4/7] asm/sections: add a generic push_section_tbl()

Message ID 1455889559-9428-5-git-send-email-mcgrof@kernel.org (mailing list archive)
State New, archived
Headers show

Commit Message

Luis Chamberlain Feb. 19, 2016, 1:45 p.m. UTC
With a generic linker tables solution in place we
need a general asm solution for declaring entries
with asm. The first easy target is to cover the C
asm declarations, guard the header file for now
and define a first generic entry push_section_tbl()
to be used later for custom linker table annotations.

Signed-off-by: Luis R. Rodriguez <mcgrof@kernel.org>
---
 include/asm-generic/sections.h | 10 ++++++++++
 1 file changed, 10 insertions(+)

Comments

H. Peter Anvin Feb. 19, 2016, 8:26 p.m. UTC | #1
On 02/19/2016 05:45 AM, Luis R. Rodriguez wrote:
> With a generic linker tables solution in place we
> need a general asm solution for declaring entries
> with asm. The first easy target is to cover the C
> asm declarations, guard the header file for now
> and define a first generic entry push_section_tbl()
> to be used later for custom linker table annotations.
> 
> Signed-off-by: Luis R. Rodriguez <mcgrof@kernel.org>
> ---
>  include/asm-generic/sections.h | 10 ++++++++++
>  1 file changed, 10 insertions(+)
> 
> diff --git a/include/asm-generic/sections.h b/include/asm-generic/sections.h
> index af0254c09424..f5ea98bd85d2 100644
> --- a/include/asm-generic/sections.h
> +++ b/include/asm-generic/sections.h
> @@ -3,8 +3,10 @@
>  
>  /* References to section boundaries */
>  
> +#ifndef __ASSEMBLY__
>  #include <linux/compiler.h>
>  #include <linux/types.h>
> +#include <linux/sections.h>
>  
>  /*
>   * Usage guidelines:
> @@ -128,4 +130,12 @@ static inline bool init_section_intersects(void *virt, size_t size)
>  	return memory_intersects(__init_begin, __init_end, virt, size);
>  }
>  
> +/*
> + * Some architectures do not like the "\t" at the end (s39), we should be
> + * able to generalize this further, but so far this covers most architectures.
> + */
> +#define push_section_tbl(section, name, level, flags)			\
> +	".pushsection " SECTION_TBL(section,name,level) ",  \"" #flags "\"\n\t"
> +#endif
> +

I think the \n\t is unnecessary.

	-hpa
Luis Chamberlain Feb. 19, 2016, 9:06 p.m. UTC | #2
On Fri, Feb 19, 2016 at 12:26:51PM -0800, H. Peter Anvin wrote:
> On 02/19/2016 05:45 AM, Luis R. Rodriguez wrote:
> > With a generic linker tables solution in place we
> > need a general asm solution for declaring entries
> > with asm. The first easy target is to cover the C
> > asm declarations, guard the header file for now
> > and define a first generic entry push_section_tbl()
> > to be used later for custom linker table annotations.
> > 
> > Signed-off-by: Luis R. Rodriguez <mcgrof@kernel.org>
> > ---
> >  include/asm-generic/sections.h | 10 ++++++++++
> >  1 file changed, 10 insertions(+)
> > 
> > diff --git a/include/asm-generic/sections.h b/include/asm-generic/sections.h
> > index af0254c09424..f5ea98bd85d2 100644
> > --- a/include/asm-generic/sections.h
> > +++ b/include/asm-generic/sections.h
> > @@ -3,8 +3,10 @@
> >  
> >  /* References to section boundaries */
> >  
> > +#ifndef __ASSEMBLY__
> >  #include <linux/compiler.h>
> >  #include <linux/types.h>
> > +#include <linux/sections.h>
> >  
> >  /*
> >   * Usage guidelines:
> > @@ -128,4 +130,12 @@ static inline bool init_section_intersects(void *virt, size_t size)
> >  	return memory_intersects(__init_begin, __init_end, virt, size);
> >  }
> >  
> > +/*
> > + * Some architectures do not like the "\t" at the end (s39), we should be
> > + * able to generalize this further, but so far this covers most architectures.
> > + */
> > +#define push_section_tbl(section, name, level, flags)			\
> > +	".pushsection " SECTION_TBL(section,name,level) ",  \"" #flags "\"\n\t"
> > +#endif
> > +
> 
> I think the \n\t is unnecessary.

Super! I wonder if we we can just use this on s390 as well without it pooping?
I ask as this would set a precedent.

  Luis
H. Peter Anvin Feb. 22, 2016, 2:55 a.m. UTC | #3
On 02/19/16 13:06, Luis R. Rodriguez wrote:
>>
>> I think the \n\t is unnecessary.
> 
> Super! I wonder if we we can just use this on s390 as well without it pooping?
> I ask as this would set a precedent.
> 

Ask Heike, but I think just ; or \n ought be be fine.  I do not know of
*any* case where \t at the end of a string would ever be necessary, and
it would *always* be possible to replace it with a space in a pinch.

	-hpa
Heiko Carstens Feb. 26, 2016, 2:56 p.m. UTC | #4
On Sun, Feb 21, 2016 at 06:55:05PM -0800, H. Peter Anvin wrote:
> On 02/19/16 13:06, Luis R. Rodriguez wrote:
> >>
> >> I think the \n\t is unnecessary.
> > 
> > Super! I wonder if we we can just use this on s390 as well without it pooping?
> > I ask as this would set a precedent.
> > 
> 
> Ask Heike, but I think just ; or \n ought be be fine.  I do not know of
> *any* case where \t at the end of a string would ever be necessary, and
> it would *always* be possible to replace it with a space in a pinch.

\n should be fine on s390.
Luis Chamberlain May 20, 2016, 7:53 p.m. UTC | #5
On Fri, Feb 26, 2016 at 03:56:04PM +0100, Heiko Carstens wrote:
> On Sun, Feb 21, 2016 at 06:55:05PM -0800, H. Peter Anvin wrote:
> > On 02/19/16 13:06, Luis R. Rodriguez wrote:
> > >>
> > >> I think the \n\t is unnecessary.
> > > 
> > > Super! I wonder if we we can just use this on s390 as well without it pooping?
> > > I ask as this would set a precedent.
> > > 
> > 
> > Ask Heike, but I think just ; or \n ought be be fine.  I do not know of
> > *any* case where \t at the end of a string would ever be necessary, and
> > it would *always* be possible to replace it with a space in a pinch.
> 
> \n should be fine on s390.

Great, thanks, I'll move forward with just \n in v3.

  Luis
diff mbox

Patch

diff --git a/include/asm-generic/sections.h b/include/asm-generic/sections.h
index af0254c09424..f5ea98bd85d2 100644
--- a/include/asm-generic/sections.h
+++ b/include/asm-generic/sections.h
@@ -3,8 +3,10 @@ 
 
 /* References to section boundaries */
 
+#ifndef __ASSEMBLY__
 #include <linux/compiler.h>
 #include <linux/types.h>
+#include <linux/sections.h>
 
 /*
  * Usage guidelines:
@@ -128,4 +130,12 @@  static inline bool init_section_intersects(void *virt, size_t size)
 	return memory_intersects(__init_begin, __init_end, virt, size);
 }
 
+/*
+ * Some architectures do not like the "\t" at the end (s39), we should be
+ * able to generalize this further, but so far this covers most architectures.
+ */
+#define push_section_tbl(section, name, level, flags)			\
+	".pushsection " SECTION_TBL(section,name,level) ",  \"" #flags "\"\n\t"
+#endif
+
 #endif /* _ASM_GENERIC_SECTIONS_H_ */