 c3dc5bec05
			
		
	
	
	c3dc5bec05
	
	
	
		
			
			The flat loader uses an architecture's flat_stack_align() to align the stack but assumes word-alignment is enough for the data sections. However, on the Xtensa S6000 we have registers up to 128bit width which can be used from userspace and therefor need userspace stack and data-section alignment of at least this size. This patch drops flat_stack_align() and uses the same alignment that is required for slab caches, ARCH_SLAB_MINALIGN, or wordsize if it's not defined by the architecture. It also fixes m32r which was obviously kaput, aligning an uninitialized stack entry instead of the stack pointer. [akpm@linux-foundation.org: coding-style fixes] Signed-off-by: Oskar Schirmer <os@emlix.com> Cc: David Howells <dhowells@redhat.com> Cc: Russell King <rmk@arm.linux.org.uk> Cc: Bryan Wu <cooloney@kernel.org> Cc: Geert Uytterhoeven <geert@linux-m68k.org> Acked-by: Paul Mundt <lethal@linux-sh.org> Cc: Greg Ungerer <gerg@uclinux.org> Signed-off-by: Johannes Weiner <jw@emlix.com> Acked-by: Mike Frysinger <vapier.adi@gmail.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
		
			
				
	
	
		
			30 lines
		
	
	
	
		
			1 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			30 lines
		
	
	
	
		
			1 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
|  * include/asm-sh/flat.h
 | |
|  *
 | |
|  * uClinux flat-format executables
 | |
|  *
 | |
|  * Copyright (C) 2003  Paul Mundt
 | |
|  *
 | |
|  * This file is subject to the terms and conditions of the GNU General Public
 | |
|  * License.  See the file "COPYING" in the main directory of this archive for
 | |
|  * more details.
 | |
|  */
 | |
| #ifndef __ASM_SH_FLAT_H
 | |
| #define __ASM_SH_FLAT_H
 | |
| 
 | |
| #define	flat_argvp_envp_on_stack()		0
 | |
| #define	flat_old_ram_flag(flags)		(flags)
 | |
| #define	flat_reloc_valid(reloc, size)		((reloc) <= (size))
 | |
| #define	flat_get_addr_from_rp(rp, relval, flags, p)	get_unaligned(rp)
 | |
| #define	flat_put_addr_at_rp(rp, val, relval)	put_unaligned(val,rp)
 | |
| #define	flat_get_relocate_addr(rel)		(rel)
 | |
| #define	flat_set_persistent(relval, p)		({ (void)p; 0; })
 | |
| 
 | |
| #define FLAT_PLAT_INIT(_r) \
 | |
|   do { _r->regs[0]=0; _r->regs[1]=0; _r->regs[2]=0; _r->regs[3]=0; \
 | |
|        _r->regs[4]=0; _r->regs[5]=0; _r->regs[6]=0; _r->regs[7]=0; \
 | |
|        _r->regs[8]=0; _r->regs[9]=0; _r->regs[10]=0; _r->regs[11]=0; \
 | |
|        _r->regs[12]=0; _r->regs[13]=0; _r->regs[14]=0; \
 | |
|        _r->sr = SR_FD; } while (0)
 | |
| 
 | |
| #endif /* __ASM_SH_FLAT_H */
 |