Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 144d634a authored by Jan Glauber's avatar Jan Glauber Committed by Martin Schwidefsky
Browse files

[S390] fix s390 assembler code alignments



The alignment is missing for various global symbols in s390 assembly code.
With a recent gcc and an instruction like stgrl this can lead to a
specification exception if the instruction uses such a mis-aligned address.

Specify the alignment explicitely and while add it define __ALIGN for s390
and use the ENTRY define to save some lines of code.

Signed-off-by: default avatarJan Glauber <jang@linux.vnet.ibm.com>
Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
parent 603d1a50
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -7,14 +7,14 @@
 */

#include <linux/init.h>
#include <linux/linkage.h>
#include <asm/asm-offsets.h>
#include <asm/thread_info.h>
#include <asm/page.h>
#include "sizes.h"

__HEAD
	.globl	startup_continue
startup_continue:
ENTRY(startup_continue)
	basr	%r13,0			# get base
.LPG1:
	# setup stack
+2 −2
Original line number Diff line number Diff line
@@ -7,14 +7,14 @@
 */

#include <linux/init.h>
#include <linux/linkage.h>
#include <asm/asm-offsets.h>
#include <asm/thread_info.h>
#include <asm/page.h>
#include "sizes.h"

__HEAD
	.globl	startup_continue
startup_continue:
ENTRY(startup_continue)
	basr	%r13,0			# get base
.LPG1:
	# setup stack
+4 −1
Original line number Diff line number Diff line
#ifndef __ASM_LINKAGE_H
#define __ASM_LINKAGE_H

/* Nothing to see here... */
#include <linux/stringify.h>

#define __ALIGN .align 4, 0x07
#define __ALIGN_STR __stringify(__ALIGN)

#endif
+13 −12
Original line number Diff line number Diff line
@@ -6,13 +6,13 @@
 *		 Michael Holzheu <holzheu@de.ibm.com>
 */

#include <linux/linkage.h>
#include <asm/asm-offsets.h>
#include <asm/ptrace.h>

#ifdef CONFIG_64BIT

	.globl	s390_base_mcck_handler
s390_base_mcck_handler:
ENTRY(s390_base_mcck_handler)
	basr	%r13,0
0:	lg	%r15,__LC_PANIC_STACK	# load panic stack
	aghi	%r15,-STACK_FRAME_OVERHEAD
@@ -26,13 +26,13 @@ s390_base_mcck_handler:
	lpswe	__LC_MCK_OLD_PSW

	.section .bss
	.align 8
	.globl	s390_base_mcck_handler_fn
s390_base_mcck_handler_fn:
	.quad	0
	.previous

	.globl	s390_base_ext_handler
s390_base_ext_handler:
ENTRY(s390_base_ext_handler)
	stmg	%r0,%r15,__LC_SAVE_AREA
	basr	%r13,0
0:	aghi	%r15,-STACK_FRAME_OVERHEAD
@@ -46,13 +46,13 @@ s390_base_ext_handler:
	lpswe	__LC_EXT_OLD_PSW

	.section .bss
	.align 8
	.globl s390_base_ext_handler_fn
s390_base_ext_handler_fn:
	.quad	0
	.previous

	.globl	s390_base_pgm_handler
s390_base_pgm_handler:
ENTRY(s390_base_pgm_handler)
	stmg	%r0,%r15,__LC_SAVE_AREA
	basr	%r13,0
0:	aghi	%r15,-STACK_FRAME_OVERHEAD
@@ -70,6 +70,7 @@ disabled_wait_psw:
	.quad	0x0002000180000000,0x0000000000000000 + s390_base_pgm_handler

	.section .bss
	.align 8
	.globl s390_base_pgm_handler_fn
s390_base_pgm_handler_fn:
	.quad	0
@@ -77,8 +78,7 @@ s390_base_pgm_handler_fn:

#else /* CONFIG_64BIT */

	.globl	s390_base_mcck_handler
s390_base_mcck_handler:
ENTRY(s390_base_mcck_handler)
	basr	%r13,0
0:	l	%r15,__LC_PANIC_STACK	# load panic stack
	ahi	%r15,-STACK_FRAME_OVERHEAD
@@ -93,13 +93,13 @@ s390_base_mcck_handler:
2:	.long	s390_base_mcck_handler_fn

	.section .bss
	.align 4
	.globl	s390_base_mcck_handler_fn
s390_base_mcck_handler_fn:
	.long	0
	.previous

	.globl	s390_base_ext_handler
s390_base_ext_handler:
ENTRY(s390_base_ext_handler)
	stm	%r0,%r15,__LC_SAVE_AREA
	basr	%r13,0
0:	ahi	%r15,-STACK_FRAME_OVERHEAD
@@ -115,13 +115,13 @@ s390_base_ext_handler:
2:	.long	s390_base_ext_handler_fn

	.section .bss
	.align 4
	.globl	s390_base_ext_handler_fn
s390_base_ext_handler_fn:
	.long	0
	.previous

	.globl	s390_base_pgm_handler
s390_base_pgm_handler:
ENTRY(s390_base_pgm_handler)
	stm	%r0,%r15,__LC_SAVE_AREA
	basr	%r13,0
0:	ahi	%r15,-STACK_FRAME_OVERHEAD
@@ -142,6 +142,7 @@ disabled_wait_psw:
	.long	0x000a0000,0x00000000 + s390_base_pgm_handler

	.section .bss
	.align 4
	.globl	s390_base_pgm_handler_fn
s390_base_pgm_handler_fn:
	.long	0
+280 −556

File changed.

Preview size limit exceeded, changes collapsed.

Loading