1*7db54bfeSHuacai Chen/* SPDX-License-Identifier: GPL-2.0 */ 2*7db54bfeSHuacai Chen/* 3*7db54bfeSHuacai Chen * Hibernation support specific for LoongArch 4*7db54bfeSHuacai Chen * 5*7db54bfeSHuacai Chen * Author: Huacai Chen <chenhuacai@loongson.cn> 6*7db54bfeSHuacai Chen * Copyright (C) 2020-2022 Loongson Technology Corporation Limited 7*7db54bfeSHuacai Chen */ 8*7db54bfeSHuacai Chen#include <linux/linkage.h> 9*7db54bfeSHuacai Chen#include <asm/asm.h> 10*7db54bfeSHuacai Chen#include <asm/asm-offsets.h> 11*7db54bfeSHuacai Chen#include <asm/regdef.h> 12*7db54bfeSHuacai Chen 13*7db54bfeSHuacai Chen.text 14*7db54bfeSHuacai ChenSYM_FUNC_START(swsusp_asm_suspend) 15*7db54bfeSHuacai Chen la.pcrel t0, saved_regs 16*7db54bfeSHuacai Chen PTR_S ra, t0, PT_R1 17*7db54bfeSHuacai Chen PTR_S tp, t0, PT_R2 18*7db54bfeSHuacai Chen PTR_S sp, t0, PT_R3 19*7db54bfeSHuacai Chen PTR_S u0, t0, PT_R21 20*7db54bfeSHuacai Chen PTR_S fp, t0, PT_R22 21*7db54bfeSHuacai Chen PTR_S s0, t0, PT_R23 22*7db54bfeSHuacai Chen PTR_S s1, t0, PT_R24 23*7db54bfeSHuacai Chen PTR_S s2, t0, PT_R25 24*7db54bfeSHuacai Chen PTR_S s3, t0, PT_R26 25*7db54bfeSHuacai Chen PTR_S s4, t0, PT_R27 26*7db54bfeSHuacai Chen PTR_S s5, t0, PT_R28 27*7db54bfeSHuacai Chen PTR_S s6, t0, PT_R29 28*7db54bfeSHuacai Chen PTR_S s7, t0, PT_R30 29*7db54bfeSHuacai Chen PTR_S s8, t0, PT_R31 30*7db54bfeSHuacai Chen b swsusp_save 31*7db54bfeSHuacai ChenSYM_FUNC_END(swsusp_asm_suspend) 32*7db54bfeSHuacai Chen 33*7db54bfeSHuacai ChenSYM_FUNC_START(swsusp_asm_resume) 34*7db54bfeSHuacai Chen la.pcrel t0, restore_pblist 35*7db54bfeSHuacai Chen PTR_L t0, t0, 0 36*7db54bfeSHuacai Chen0: 37*7db54bfeSHuacai Chen PTR_L t1, t0, PBE_ADDRESS /* source */ 38*7db54bfeSHuacai Chen PTR_L t2, t0, PBE_ORIG_ADDRESS /* destination */ 39*7db54bfeSHuacai Chen PTR_LI t3, _PAGE_SIZE 40*7db54bfeSHuacai Chen PTR_ADD t3, t3, t1 41*7db54bfeSHuacai Chen1: 42*7db54bfeSHuacai Chen REG_L t8, t1, 0 43*7db54bfeSHuacai Chen REG_S t8, t2, 0 44*7db54bfeSHuacai Chen PTR_ADDI t1, t1, SZREG 45*7db54bfeSHuacai Chen PTR_ADDI t2, t2, SZREG 46*7db54bfeSHuacai Chen bne t1, t3, 1b 47*7db54bfeSHuacai Chen PTR_L t0, t0, PBE_NEXT 48*7db54bfeSHuacai Chen bnez t0, 0b 49*7db54bfeSHuacai Chen la.pcrel t0, saved_regs 50*7db54bfeSHuacai Chen PTR_L ra, t0, PT_R1 51*7db54bfeSHuacai Chen PTR_L tp, t0, PT_R2 52*7db54bfeSHuacai Chen PTR_L sp, t0, PT_R3 53*7db54bfeSHuacai Chen PTR_L u0, t0, PT_R21 54*7db54bfeSHuacai Chen PTR_L fp, t0, PT_R22 55*7db54bfeSHuacai Chen PTR_L s0, t0, PT_R23 56*7db54bfeSHuacai Chen PTR_L s1, t0, PT_R24 57*7db54bfeSHuacai Chen PTR_L s2, t0, PT_R25 58*7db54bfeSHuacai Chen PTR_L s3, t0, PT_R26 59*7db54bfeSHuacai Chen PTR_L s4, t0, PT_R27 60*7db54bfeSHuacai Chen PTR_L s5, t0, PT_R28 61*7db54bfeSHuacai Chen PTR_L s6, t0, PT_R29 62*7db54bfeSHuacai Chen PTR_L s7, t0, PT_R30 63*7db54bfeSHuacai Chen PTR_L s8, t0, PT_R31 64*7db54bfeSHuacai Chen PTR_LI a0, 0x0 65*7db54bfeSHuacai Chen jirl zero, ra, 0 66*7db54bfeSHuacai ChenSYM_FUNC_END(swsusp_asm_resume) 67