* [RFC PATCH 0/2] ARM: Add a generic macro for declaring proc_info structs
@ 2011-06-09 17:21 Dave Martin
2011-06-09 17:21 ` [RFC PATCH 1/2] " Dave Martin
` (2 more replies)
0 siblings, 3 replies; 10+ messages in thread
From: Dave Martin @ 2011-06-09 17:21 UTC (permalink / raw)
To: linux-arm-kernel
Based on recent problems with variable-size Thumb instructions
inside tables, this patch adds an experimental macro for declaring
proc_info structs, as an example of the kind of build-time robustness
we could implement for these and similar structures.
As such, it's an illustration of something we _could_ do, rather
than something we necessarily should do.
I'd be interested in people's views on this.
Potential advantages include:
* automatic build-time checking that struct proc_info is reasonably
in sync with the assembler definitions;
* automatic checking that proc_info structure declarations are
complete and correctly structured, with no mis-sized or misaligned
elements (particularly important for Thumb-2 kernels);
* better readability of the declarations (depending on people's
personal taste, of course);
* reduction of some boilerplate code (perhaps up to 700 lines net
if we were to convert all arch/arm/mm/proc-*.S to use the macro.
The same general technique could be potentially expanded to cover
any struct defined in assembler.
However, this may be taking a sledgehammer to crack a nut,
and it will cause some churn, though it could leave is with a
cleaner situation afterwards.
Much lighter-weight, less invasive build-time checks could
still deliver significant benefits.
Dave Martin (2):
ARM: Add a generic macro for declaring proc_info structs
ARM: proc-v7: Use the new proc_info declaration macro
arch/arm/mm/proc-macros.S | 141 +++++++++++++++++++++++++++++++++++++++++++++
arch/arm/mm/proc-v7.S | 93 ++++++++++++-----------------
2 files changed, 179 insertions(+), 55 deletions(-)
--
1.7.4.1
^ permalink raw reply [flat|nested] 10+ messages in thread* [RFC PATCH 1/2] ARM: Add a generic macro for declaring proc_info structs 2011-06-09 17:21 [RFC PATCH 0/2] ARM: Add a generic macro for declaring proc_info structs Dave Martin @ 2011-06-09 17:21 ` Dave Martin 2011-06-09 17:21 ` [RFC PATCH 2/2] ARM: proc-v7: Use the new proc_info declaration macro Dave Martin 2011-06-09 17:38 ` [RFC PATCH 0/2] ARM: Add a generic macro for declaring proc_info structs Russell King - ARM Linux 2 siblings, 0 replies; 10+ messages in thread From: Dave Martin @ 2011-06-09 17:21 UTC (permalink / raw) To: linux-arm-kernel Using a macro allows the structure declarations to be more readable and shorter, as well as enabling build-time checking of the structure layout. Signed-off-by: Dave Martin <dave.martin@linaro.org> --- arch/arm/mm/proc-macros.S | 141 +++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 141 insertions(+), 0 deletions(-) diff --git a/arch/arm/mm/proc-macros.S b/arch/arm/mm/proc-macros.S index 34261f9..fe78f3b 100644 --- a/arch/arm/mm/proc-macros.S +++ b/arch/arm/mm/proc-macros.S @@ -254,3 +254,144 @@ mcr p15, 0, r0, c7, c10, 1 @ clean L1 D line mcr p15, 0, ip, c7, c10, 4 @ data write barrier .endm + +/* + * proc_info structure declaration macro + */ + .macro proc_info name:req + .macro _proc_check_align fieldname:req, align:req + .if . - \name != (\align ) + .error "Unexpected or misaligned proc_info field \fieldname" + .endif + .endm + + .macro cpu_val value:req + _proc_check_align cpu_val, 0 + .long \value + .endm + + .macro cpu_mask value:req + _proc_check_align cpu_mask, 4 + .long \value + .endm + + /* + * Normal memory MMU flags for CPUs with no SMP support. + * For CPUs with SMP support, use __cpu_mm_mmu_flags_smp and + * __cpu_mm_mmu_flags_up instead. + */ + .macro __cpu_mm_mmu_flags value:req + _proc_check_align __cpu_mm_mmu_flags, PROCINFO_MM_MMUFLAGS + .long \value + .endm + + .macro __cpu_mm_mmu_flags_smp value:req + _proc_check_align __cpu_mm_mmu_flags_smp, PROCINFO_MM_MMUFLAGS + ALT_SMP( .long \value ) + .endm + + /* + * __cpu_mm_mmu_flags_up must follow __cpu_mm_mmu_flags_smp, + * so the assembly-time offset is actually PROCINFO_IO_MMUFLAGS. + * This macro generates fixups, rather than direct output. + */ + .macro __cpu_mm_mmu_flags_up value:req + _proc_check_align __cpu_mm_mmu_flags_up, PROCINFO_IO_MMUFLAGS + ALT_UP( .long \value ) + .endm + + .macro __cpu_io_mmu_flags value:req + _proc_check_align __cpu_io_mmu_flags, PROCINFO_IO_MMUFLAGS + .long \value + .endm + + .macro __cpu_flush insn:vararg + _proc_check_align __cpu_flush, PROCINFO_INITFUNC + \insn + .endm + + .macro arch_name string:req + _proc_check_align arch_name, 0x14 + .pushsection .rodata.str, "aMS", 1 +\name\()_arch_name: .asciz "\string" + .size \name\()_arch_name, . - \name\()_arch_name + .type \name\()_arch_name, #object + .popsection + .long \name\()_arch_name + .endm + + .macro elf_name string:req + _proc_check_align elf_name, 0x18 + .pushsection .rodata.str, "aMS", 1 +\name\()_elf_name: .asciz "\string" + .size \name\()_elf_name, . - \name\()_elf_name + .type \name\()_elf_name, #object + .popsection + .long \name\()_elf_name + .endm + + .macro elf_hwcap value:req + _proc_check_align elf_hwcap, 0x1c + .long \value + .endm + + .macro cpu_name string:req + _proc_check_align cpu_name, 0x20 + .pushsection .rodata.str, "aMS", 1 +\name\()_cpu_name: .asciz "\string" + .size \name\()_cpu_name, . - \name\()_cpu_name + .type \name\()_cpu_name, #object + .popsection + .long \name\()_cpu_name + .endm + + .macro proc label:req + _proc_check_align proc, 0x24 + .long \label + .endm + + .macro tlb label:req + _proc_check_align tlb, 0x28 + .long \label + .endm + + .macro user label:req + _proc_check_align user, 0x2c + .long \label + .endm + + .macro cache label:req + _proc_check_align cache, 0x30 + .long \label + .endm + + .macro end_proc_info + .if . - \name != PROC_INFO_SZ + .error "incorrect number of fields in proc_info" + .endif + .size \name , . - \name + .type \name , #object + .popsection + .purgem end_proc_info + .purgem _proc_check_align + .purgem cpu_val + .purgem cpu_mask + .purgem __cpu_mm_mmu_flags + .purgem __cpu_mm_mmu_flags_smp + .purgem __cpu_mm_mmu_flags_up + .purgem __cpu_io_mmu_flags + .purgem __cpu_flush + .purgem arch_name + .purgem elf_name + .purgem elf_hwcap + .purgem cpu_name + .purgem proc + .purgem tlb + .purgem user + .purgem cache + .endm + + .pushsection .proc.info.init, #alloc, #execinstr + .align 2 +\name : + .endm -- 1.7.4.1 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* [RFC PATCH 2/2] ARM: proc-v7: Use the new proc_info declaration macro 2011-06-09 17:21 [RFC PATCH 0/2] ARM: Add a generic macro for declaring proc_info structs Dave Martin 2011-06-09 17:21 ` [RFC PATCH 1/2] " Dave Martin @ 2011-06-09 17:21 ` Dave Martin 2011-06-09 17:38 ` [RFC PATCH 0/2] ARM: Add a generic macro for declaring proc_info structs Russell King - ARM Linux 2 siblings, 0 replies; 10+ messages in thread From: Dave Martin @ 2011-06-09 17:21 UTC (permalink / raw) To: linux-arm-kernel Signed-off-by: Dave Martin <dave.martin@linaro.org> --- arch/arm/mm/proc-v7.S | 93 ++++++++++++++++++++----------------------------- 1 files changed, 38 insertions(+), 55 deletions(-) diff --git a/arch/arm/mm/proc-v7.S b/arch/arm/mm/proc-v7.S index b3b566e..9e8569c 100644 --- a/arch/arm/mm/proc-v7.S +++ b/arch/arm/mm/proc-v7.S @@ -171,8 +171,6 @@ ENTRY(cpu_v7_set_pte_ext) mov pc, lr ENDPROC(cpu_v7_set_pte_ext) -cpu_v7_name: - .ascii "ARMv7 Processor" .align /* @@ -421,78 +419,63 @@ ENTRY(v7_processor_functions) .word 0 .size v7_processor_functions, . - v7_processor_functions - .section ".rodata" - - .type cpu_arch_name, #object -cpu_arch_name: - .asciz "armv7" - .size cpu_arch_name, . - cpu_arch_name - - .type cpu_elf_name, #object -cpu_elf_name: - .asciz "v7" - .size cpu_elf_name, . - cpu_elf_name - .align - - .section ".proc.info.init", #alloc, #execinstr - - .type __v7_ca9mp_proc_info, #object -__v7_ca9mp_proc_info: - .long 0x410fc090 @ Required ID value - .long 0xff0ffff0 @ Mask for ID - ALT_SMP(.long \ +proc_info __v7_ca9mp_proc_info + cpu_val 0x410fc090 @ Required ID value + cpu_mask 0xff0ffff0 @ Mask for ID + __cpu_mm_mmu_flags_smp \ PMD_TYPE_SECT | \ PMD_SECT_AP_WRITE | \ PMD_SECT_AP_READ | \ - PMD_FLAGS_SMP) - ALT_UP(.long \ + PMD_FLAGS_SMP + __cpu_mm_mmu_flags_up \ PMD_TYPE_SECT | \ PMD_SECT_AP_WRITE | \ PMD_SECT_AP_READ | \ - PMD_FLAGS_UP) - .long PMD_TYPE_SECT | \ + PMD_FLAGS_UP + __cpu_io_mmu_flags \ + PMD_TYPE_SECT | \ PMD_SECT_XN | \ PMD_SECT_AP_WRITE | \ PMD_SECT_AP_READ - W(b) __v7_ca9mp_setup - .long cpu_arch_name - .long cpu_elf_name - .long HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP|HWCAP_TLS - .long cpu_v7_name - .long v7_processor_functions - .long v7wbi_tlb_fns - .long v6_user_fns - .long v7_cache_fns - .size __v7_ca9mp_proc_info, . - __v7_ca9mp_proc_info + __cpu_flush W(b) __v7_ca9mp_setup + arch_name "armv7" + elf_name "v7" + elf_hwcap HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP|HWCAP_TLS + cpu_name "ARMv7 Processor" + proc v7_processor_functions + tlb v7wbi_tlb_fns + user v6_user_fns + cache v7_cache_fns +end_proc_info /* * Match any ARMv7 processor core. */ - .type __v7_proc_info, #object -__v7_proc_info: - .long 0x000f0000 @ Required ID value - .long 0x000f0000 @ Mask for ID - ALT_SMP(.long \ +proc_info __v7_proc_info + cpu_val 0x000f0000 @ Required ID value + cpu_mask 0x000f0000 @ Mask for ID + __cpu_mm_mmu_flags_smp \ PMD_TYPE_SECT | \ PMD_SECT_AP_WRITE | \ PMD_SECT_AP_READ | \ - PMD_FLAGS_SMP) - ALT_UP(.long \ + PMD_FLAGS_SMP + __cpu_mm_mmu_flags_up \ PMD_TYPE_SECT | \ PMD_SECT_AP_WRITE | \ PMD_SECT_AP_READ | \ - PMD_FLAGS_UP) - .long PMD_TYPE_SECT | \ + PMD_FLAGS_UP + __cpu_io_mmu_flags \ + PMD_TYPE_SECT | \ PMD_SECT_XN | \ PMD_SECT_AP_WRITE | \ PMD_SECT_AP_READ - W(b) __v7_setup - .long cpu_arch_name - .long cpu_elf_name - .long HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP|HWCAP_TLS - .long cpu_v7_name - .long v7_processor_functions - .long v7wbi_tlb_fns - .long v6_user_fns - .long v7_cache_fns - .size __v7_proc_info, . - __v7_proc_info + __cpu_flush W(b) __v7_setup + arch_name "armv7" + elf_name "v7" + elf_hwcap HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP|HWCAP_TLS + cpu_name "ARMv7 Processor" + proc v7_processor_functions + tlb v7wbi_tlb_fns + user v6_user_fns + cache v7_cache_fns +end_proc_info -- 1.7.4.1 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* [RFC PATCH 0/2] ARM: Add a generic macro for declaring proc_info structs 2011-06-09 17:21 [RFC PATCH 0/2] ARM: Add a generic macro for declaring proc_info structs Dave Martin 2011-06-09 17:21 ` [RFC PATCH 1/2] " Dave Martin 2011-06-09 17:21 ` [RFC PATCH 2/2] ARM: proc-v7: Use the new proc_info declaration macro Dave Martin @ 2011-06-09 17:38 ` Russell King - ARM Linux 2011-06-10 8:57 ` Dave Martin 2 siblings, 1 reply; 10+ messages in thread From: Russell King - ARM Linux @ 2011-06-09 17:38 UTC (permalink / raw) To: linux-arm-kernel On Thu, Jun 09, 2011 at 06:21:50PM +0100, Dave Martin wrote: > Based on recent problems with variable-size Thumb instructions > inside tables, this patch adds an experimental macro for declaring > proc_info structs, as an example of the kind of build-time robustness > we could implement for these and similar structures. Could we just check the size of the proc_info region in the linker is a multiple of the struct size we expect? > However, this may be taking a sledgehammer to crack a nut, > and it will cause some churn, though it could leave is with a > cleaner situation afterwards. It does look very much like a sledge hammer to me. All we're really after is whether the size of the region is what we expect it to be - which will tell us whether there's a T2 instruction in there. It's also fragile - if the struct has a member inserted, who says that the offsets in the macro will be updated anyway... so it still suffers from the same problem of no real build-time checking. At least if we check that the size of the region is a multiple of the struct size, we can catch whether there's any mismatch between the struct size and assembly rather trivially. ^ permalink raw reply [flat|nested] 10+ messages in thread
* [RFC PATCH 0/2] ARM: Add a generic macro for declaring proc_info structs 2011-06-09 17:38 ` [RFC PATCH 0/2] ARM: Add a generic macro for declaring proc_info structs Russell King - ARM Linux @ 2011-06-10 8:57 ` Dave Martin 2011-06-12 8:22 ` Russell King - ARM Linux 0 siblings, 1 reply; 10+ messages in thread From: Dave Martin @ 2011-06-10 8:57 UTC (permalink / raw) To: linux-arm-kernel On Thu, Jun 09, 2011 at 06:38:36PM +0100, Russell King - ARM Linux wrote: > On Thu, Jun 09, 2011 at 06:21:50PM +0100, Dave Martin wrote: > > Based on recent problems with variable-size Thumb instructions > > inside tables, this patch adds an experimental macro for declaring > > proc_info structs, as an example of the kind of build-time robustness > > we could implement for these and similar structures. > > Could we just check the size of the proc_info region in the linker > is a multiple of the struct size we expect? This might work; it's possible to add assertions in the linker script, but section alignment padding would mask some errors. It would be better than having no check, though. > > However, this may be taking a sledgehammer to crack a nut, > > and it will cause some churn, though it could leave is with a > > cleaner situation afterwards. > > It does look very much like a sledge hammer to me. All we're really > after is whether the size of the region is what we expect it to be - > which will tell us whether there's a T2 instruction in there. True, although the intent was no to solve just that one problem, but to show how to avoid a whole variety of trivial mistakes. Since proc_info structs don't tend to get changed much after they're initially written, I guess that such mistakes don't actually occur very often, though. > It's also fragile - if the struct has a member inserted, who says that > the offsets in the macro will be updated anyway... so it still suffers > from the same problem of no real build-time checking. That is actually somewhat solvable using the automatically updated asm-offsets.h constants. I only use the constants which already exist already: there isn't one for every field, but one could be defined for every field in the structure. > At least if we check that the size of the region is a multiple of the > struct size, we can catch whether there's any mismatch between the > struct size and assembly rather trivially. For the proc_types stuff in compressed/head.S, I've proposed basically the same check you describe: http://article.gmane.org/gmane.linux.ports.arm.kernel/119940/match=proc_type This is at the other end of the the spectrum, but is pretty non- invasive, and will probably catch the common mistakes. As for the heavyweight version, I will file it away under "interesting exercises". That technique might come in handy sometime, but I agree it's probably overkill for this kind of case. Cheers ---Dave ^ permalink raw reply [flat|nested] 10+ messages in thread
* [RFC PATCH 0/2] ARM: Add a generic macro for declaring proc_info structs 2011-06-10 8:57 ` Dave Martin @ 2011-06-12 8:22 ` Russell King - ARM Linux 2011-06-12 15:14 ` Russell King - ARM Linux 0 siblings, 1 reply; 10+ messages in thread From: Russell King - ARM Linux @ 2011-06-12 8:22 UTC (permalink / raw) To: linux-arm-kernel On Fri, Jun 10, 2011 at 09:57:52AM +0100, Dave Martin wrote: > On Thu, Jun 09, 2011 at 06:38:36PM +0100, Russell King - ARM Linux wrote: > > It does look very much like a sledge hammer to me. All we're really > > after is whether the size of the region is what we expect it to be - > > which will tell us whether there's a T2 instruction in there. > > True, although the intent was no to solve just that one problem, > but to show how to avoid a whole variety of trivial mistakes. > Since proc_info structs don't tend to get changed much after > they're initially written, I guess that such mistakes don't actually > occur very often, though. We have several other structures encoded in assembly - and to do this for every one would be excessive. The amount of churn produced too would be large. Historically we've had little problem with these structs being wrong - about once or twice pre-Thumb for a decade IIRC (where at least one was down to "using an old patch but didn't update it properly for the new proc-*.S files".) ^ permalink raw reply [flat|nested] 10+ messages in thread
* [RFC PATCH 0/2] ARM: Add a generic macro for declaring proc_info structs 2011-06-12 8:22 ` Russell King - ARM Linux @ 2011-06-12 15:14 ` Russell King - ARM Linux 2011-06-13 13:10 ` Dave Martin 0 siblings, 1 reply; 10+ messages in thread From: Russell King - ARM Linux @ 2011-06-12 15:14 UTC (permalink / raw) To: linux-arm-kernel On Sun, Jun 12, 2011 at 09:22:21AM +0100, Russell King - ARM Linux wrote: > On Fri, Jun 10, 2011 at 09:57:52AM +0100, Dave Martin wrote: > > On Thu, Jun 09, 2011 at 06:38:36PM +0100, Russell King - ARM Linux wrote: > > > It does look very much like a sledge hammer to me. All we're really > > > after is whether the size of the region is what we expect it to be - > > > which will tell us whether there's a T2 instruction in there. > > > > True, although the intent was no to solve just that one problem, > > but to show how to avoid a whole variety of trivial mistakes. > > Since proc_info structs don't tend to get changed much after > > they're initially written, I guess that such mistakes don't actually > > occur very often, though. > > We have several other structures encoded in assembly - and to do this > for every one would be excessive. The amount of churn produced too > would be large. > > Historically we've had little problem with these structs being wrong - > about once or twice pre-Thumb for a decade IIRC (where at least one was > down to "using an old patch but didn't update it properly for the new > proc-*.S files".) What may be worth doing is something like this, where all entries follow a well defined naming scheme: .macro processor_functions, name, dabort, pabort, suspend, nommu .type \name\()_processor_functions, #object ENTRY(\name\()_processor_functions) .word \dabort\()_abort .word \pabort\()_pabort .word cpu_\name\()_proc_init .word cpu_\name\()_proc_fin .word cpu_\name\()_reset .word cpu_\name\()_do_idle .word cpu_\name\()_dcache_clean_area .word cpu_\name\()_switch_mm .ifne \nommu .word 0 .else .word cpu_\name\()_set_pte_ext .endif .ifne \suspend .word cpu_\name\()_suspend_size .word cpu_\name\()_do_suspend .word cpu_\name\()_do_resume .else .word 0 .word 0 .word 0 .endif .size \name\()_processor_functions, . - \name\()_processor_functions .endm and this has great value to ensuring that the structure in assembly matches what is in the headers as it means that instead of having N places to update these structures, we're down to its header and one macro - and also ensures that proc files which miss out on the update won't link to an apparantly working kernel. The cache and tlb structures follow a very similar naming scheme to the above. The proc_info structures are much harder to deal with because they don't contain such commonality, but I'm sure it may be possible to come up with something along these lines. ^ permalink raw reply [flat|nested] 10+ messages in thread
* [RFC PATCH 0/2] ARM: Add a generic macro for declaring proc_info structs 2011-06-12 15:14 ` Russell King - ARM Linux @ 2011-06-13 13:10 ` Dave Martin 2011-06-13 13:12 ` Russell King - ARM Linux 0 siblings, 1 reply; 10+ messages in thread From: Dave Martin @ 2011-06-13 13:10 UTC (permalink / raw) To: linux-arm-kernel On Sun, Jun 12, 2011 at 04:14:22PM +0100, Russell King - ARM Linux wrote: > On Sun, Jun 12, 2011 at 09:22:21AM +0100, Russell King - ARM Linux wrote: > > On Fri, Jun 10, 2011 at 09:57:52AM +0100, Dave Martin wrote: > > > On Thu, Jun 09, 2011 at 06:38:36PM +0100, Russell King - ARM Linux wrote: > > > > It does look very much like a sledge hammer to me. All we're really > > > > after is whether the size of the region is what we expect it to be - > > > > which will tell us whether there's a T2 instruction in there. > > > > > > True, although the intent was no to solve just that one problem, > > > but to show how to avoid a whole variety of trivial mistakes. > > > Since proc_info structs don't tend to get changed much after > > > they're initially written, I guess that such mistakes don't actually > > > occur very often, though. > > > > We have several other structures encoded in assembly - and to do this > > for every one would be excessive. The amount of churn produced too > > would be large. > > > > Historically we've had little problem with these structs being wrong - > > about once or twice pre-Thumb for a decade IIRC (where at least one was > > down to "using an old patch but didn't update it properly for the new > > proc-*.S files".) > > What may be worth doing is something like this, where all entries follow > a well defined naming scheme: > > .macro processor_functions, name, dabort, pabort, suspend, nommu > .type \name\()_processor_functions, #object > ENTRY(\name\()_processor_functions) > .word \dabort\()_abort > .word \pabort\()_pabort > .word cpu_\name\()_proc_init > .word cpu_\name\()_proc_fin > .word cpu_\name\()_reset > .word cpu_\name\()_do_idle > .word cpu_\name\()_dcache_clean_area > .word cpu_\name\()_switch_mm > .ifne \nommu > .word 0 > .else > .word cpu_\name\()_set_pte_ext > .endif > .ifne \suspend > .word cpu_\name\()_suspend_size > .word cpu_\name\()_do_suspend > .word cpu_\name\()_do_resume > .else > .word 0 > .word 0 > .word 0 > .endif > .size \name\()_processor_functions, . - \name\()_processor_functions > .endm > > and this has great value to ensuring that the structure in assembly > matches what is in the headers as it means that instead of having N > places to update these structures, we're down to its header and one > macro - and also ensures that proc files which miss out on the update > won't link to an apparantly working kernel. > > The cache and tlb structures follow a very similar naming scheme to > the above. > > The proc_info structures are much harder to deal with because they > don't contain such commonality, but I'm sure it may be possible to > come up with something along these lines. Hmmm, that could be quite a nice approach. I guess it's not urgent, but I'll have a think about it and maybe propose a patch for just one of the structures initially, to see what it looks like. Using macros such as you suggest would force a consistent naming on different CPUs' helper functions, which actually seems rather a good thing. A possible downside is that the relationship between those functions and the macro becomes invisible in proc-*.S (though a very brief comment or two could easibly address that). Cheers ---Dave ^ permalink raw reply [flat|nested] 10+ messages in thread
* [RFC PATCH 0/2] ARM: Add a generic macro for declaring proc_info structs 2011-06-13 13:10 ` Dave Martin @ 2011-06-13 13:12 ` Russell King - ARM Linux 2011-06-13 13:48 ` Dave Martin 0 siblings, 1 reply; 10+ messages in thread From: Russell King - ARM Linux @ 2011-06-13 13:12 UTC (permalink / raw) To: linux-arm-kernel On Mon, Jun 13, 2011 at 02:10:08PM +0100, Dave Martin wrote: > Using macros such as you suggest would force a consistent naming on > different CPUs' helper functions, which actually seems rather a good thing. > A possible downside is that the relationship between those functions > and the macro becomes invisible in proc-*.S (though a very brief comment > or two could easibly address that). The consistent naming is already required for the !MULTI_CPU, etc. Same for the cache and tlb structs. The processor structure has less strict requirements though. ^ permalink raw reply [flat|nested] 10+ messages in thread
* [RFC PATCH 0/2] ARM: Add a generic macro for declaring proc_info structs 2011-06-13 13:12 ` Russell King - ARM Linux @ 2011-06-13 13:48 ` Dave Martin 0 siblings, 0 replies; 10+ messages in thread From: Dave Martin @ 2011-06-13 13:48 UTC (permalink / raw) To: linux-arm-kernel On Mon, Jun 13, 2011 at 02:12:57PM +0100, Russell King - ARM Linux wrote: > On Mon, Jun 13, 2011 at 02:10:08PM +0100, Dave Martin wrote: > > Using macros such as you suggest would force a consistent naming on > > different CPUs' helper functions, which actually seems rather a good thing. > > A possible downside is that the relationship between those functions > > and the macro becomes invisible in proc-*.S (though a very brief comment > > or two could easibly address that). > > The consistent naming is already required for the !MULTI_CPU, etc. > Same for the cache and tlb structs. > > The processor structure has less strict requirements though. OK, well I might have a go at this for the CPU func structs at some point, and see how it turns out. Cheers ---Dave ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2011-06-13 13:48 UTC | newest] Thread overview: 10+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2011-06-09 17:21 [RFC PATCH 0/2] ARM: Add a generic macro for declaring proc_info structs Dave Martin 2011-06-09 17:21 ` [RFC PATCH 1/2] " Dave Martin 2011-06-09 17:21 ` [RFC PATCH 2/2] ARM: proc-v7: Use the new proc_info declaration macro Dave Martin 2011-06-09 17:38 ` [RFC PATCH 0/2] ARM: Add a generic macro for declaring proc_info structs Russell King - ARM Linux 2011-06-10 8:57 ` Dave Martin 2011-06-12 8:22 ` Russell King - ARM Linux 2011-06-12 15:14 ` Russell King - ARM Linux 2011-06-13 13:10 ` Dave Martin 2011-06-13 13:12 ` Russell King - ARM Linux 2011-06-13 13:48 ` Dave Martin
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).