1*b2441318SGreg Kroah-Hartman/* SPDX-License-Identifier: GPL-2.0 */ 21da177e4SLinus Torvalds/* 31da177e4SLinus Torvalds * File: mca_drv_asm.S 41da177e4SLinus Torvalds * Purpose: Assembly portion of Generic MCA handling 51da177e4SLinus Torvalds * 61da177e4SLinus Torvalds * Copyright (C) 2004 FUJITSU LIMITED 7fe77efb8SHidetoshi Seto * Copyright (C) 2004 Hidetoshi Seto <seto.hidetoshi@jp.fujitsu.com> 81da177e4SLinus Torvalds */ 91da177e4SLinus Torvalds#include <linux/threads.h> 101da177e4SLinus Torvalds 111da177e4SLinus Torvalds#include <asm/asmmacro.h> 121da177e4SLinus Torvalds#include <asm/processor.h> 13b1b901c2SRuss Anderson#include <asm/ptrace.h> 141da177e4SLinus Torvalds 151da177e4SLinus TorvaldsGLOBAL_ENTRY(mca_handler_bhhook) 161da177e4SLinus Torvalds invala // clear RSE ? 1720305e59SHidetoshi Seto cover 1820305e59SHidetoshi Seto ;; 1920305e59SHidetoshi Seto clrrrb 201da177e4SLinus Torvalds ;; 21d2a28ad9SRuss Anderson alloc r16=ar.pfs,0,2,3,0 // make a new frame 22b1b901c2SRuss Anderson mov ar.rsc=0 231da177e4SLinus Torvalds mov r13=IA64_KR(CURRENT) // current task pointer 241da177e4SLinus Torvalds ;; 25b1b901c2SRuss Anderson mov r2=r13 261da177e4SLinus Torvalds ;; 27b1b901c2SRuss Anderson addl r22=IA64_RBS_OFFSET,r2 281da177e4SLinus Torvalds ;; 29b1b901c2SRuss Anderson mov ar.bspstore=r22 30b1b901c2SRuss Anderson addl sp=IA64_STK_OFFSET-IA64_PT_REGS_SIZE,r2 31b1b901c2SRuss Anderson ;; 32b1b901c2SRuss Anderson adds r2=IA64_TASK_THREAD_ON_USTACK_OFFSET,r13 33b1b901c2SRuss Anderson ;; 34b1b901c2SRuss Anderson st1 [r2]=r0 // clear current->thread.on_ustack flag 351da177e4SLinus Torvalds mov loc0=r16 361da177e4SLinus Torvalds movl loc1=mca_handler_bh // recovery C function 371da177e4SLinus Torvalds ;; 381da177e4SLinus Torvalds mov out0=r8 // poisoned address 39d2a28ad9SRuss Anderson mov out1=r9 // iip 40d2a28ad9SRuss Anderson mov out2=r10 // psr 411da177e4SLinus Torvalds mov b6=loc1 421da177e4SLinus Torvalds ;; 431da177e4SLinus Torvalds mov loc1=rp 4483ce6ef8STony Luck ssm psr.ic 4583ce6ef8STony Luck ;; 4683ce6ef8STony Luck srlz.i 4783ce6ef8STony Luck ;; 4883ce6ef8STony Luck ssm psr.i 49b1b901c2SRuss Anderson br.call.sptk.many rp=b6 // does not return ... 501da177e4SLinus Torvalds ;; 511da177e4SLinus Torvalds mov ar.pfs=loc0 521da177e4SLinus Torvalds mov rp=loc1 531da177e4SLinus Torvalds ;; 541da177e4SLinus Torvalds mov r8=r0 551da177e4SLinus Torvalds br.ret.sptk.many rp 561da177e4SLinus TorvaldsEND(mca_handler_bhhook) 57