~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/arch/mips/power/hibernate_asm.S

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /arch/mips/power/hibernate_asm.S (Architecture m68k) and /arch/sparc/power/hibernate_asm.S (Architecture sparc)


  1 /* SPDX-License-Identifier: GPL-2.0-only */    !!   1 /* SPDX-License-Identifier: GPL-2.0 */
  2 /*                                                  2 /*
  3  * Hibernation support specific for mips - tem !!   3  * hibernate_asm.S:  Hibernaton support specific for sparc64.
  4  *                                                  4  *
  5  * Copyright (C) 2009 Lemote Inc.              !!   5  * Copyright (C) 2013 Kirill V Tkhai (tkhai@yandex.ru)
  6  * Author: Hu Hongbing <huhb@lemote.com>        << 
  7  *         Wu Zhangjin <wuzhangjin@gmail.com>   << 
  8  */                                                 6  */
                                                   >>   7 
                                                   >>   8 #include <linux/linkage.h>
                                                   >>   9 
  9 #include <asm/asm-offsets.h>                       10 #include <asm/asm-offsets.h>
 10 #include <asm/regdef.h>                        !!  11 #include <asm/cpudata.h>
 11 #include <asm/asm.h>                           !!  12 #include <asm/page.h>
                                                   >>  13 
                                                   >>  14 ENTRY(swsusp_arch_suspend)
                                                   >>  15         save    %sp, -128, %sp
                                                   >>  16         save    %sp, -128, %sp
                                                   >>  17         flushw
                                                   >>  18 
                                                   >>  19         setuw   saved_context, %g3
                                                   >>  20 
                                                   >>  21         /* Save window regs */
                                                   >>  22         rdpr    %cwp, %g2
                                                   >>  23         stx     %g2, [%g3 + SC_REG_CWP]
                                                   >>  24         rdpr    %wstate, %g2
                                                   >>  25         stx     %g2, [%g3 + SC_REG_WSTATE]
                                                   >>  26         stx     %fp, [%g3 + SC_REG_FP]
                                                   >>  27 
                                                   >>  28         /* Save state regs */
                                                   >>  29         rdpr    %tick, %g2
                                                   >>  30         stx     %g2, [%g3 + SC_REG_TICK]
                                                   >>  31         rdpr    %pstate, %g2
                                                   >>  32         stx     %g2, [%g3 + SC_REG_PSTATE]
                                                   >>  33 
                                                   >>  34         /* Save global regs */
                                                   >>  35         stx     %g4, [%g3 + SC_REG_G4]
                                                   >>  36         stx     %g5, [%g3 + SC_REG_G5]
                                                   >>  37         stx     %g6, [%g3 + SC_REG_G6]
                                                   >>  38 
                                                   >>  39         call    swsusp_save
                                                   >>  40          nop
                                                   >>  41 
                                                   >>  42         mov     %o0, %i0
                                                   >>  43         restore
                                                   >>  44 
                                                   >>  45         mov     %o0, %i0
                                                   >>  46         ret
                                                   >>  47          restore
                                                   >>  48 
                                                   >>  49 ENTRY(swsusp_arch_resume)
                                                   >>  50         /* Write restore_pblist to %l0 */
                                                   >>  51         sethi   %hi(restore_pblist), %l0
                                                   >>  52         ldx     [%l0 + %lo(restore_pblist)], %l0
                                                   >>  53 
                                                   >>  54         call    __flush_tlb_all
                                                   >>  55          nop
                                                   >>  56 
                                                   >>  57         /* Write PAGE_OFFSET to %g7 */
                                                   >>  58         sethi   %hi(PAGE_OFFSET), %g7
                                                   >>  59         ldx     [%g7 + %lo(PAGE_OFFSET)], %g7
                                                   >>  60 
                                                   >>  61         setuw   (PAGE_SIZE-8), %g3
                                                   >>  62 
                                                   >>  63         /* Use MMU Bypass */
                                                   >>  64         rd      %asi, %g1
                                                   >>  65         wr      %g0, ASI_PHYS_USE_EC, %asi
                                                   >>  66 
                                                   >>  67         ba      fill_itlb
                                                   >>  68          nop
                                                   >>  69 
                                                   >>  70 pbe_loop:
                                                   >>  71         cmp     %l0, %g0
                                                   >>  72         be      restore_ctx
                                                   >>  73          sub    %l0, %g7, %l0
                                                   >>  74 
                                                   >>  75         ldxa    [%l0    ] %asi, %l1 /* address */
                                                   >>  76         ldxa    [%l0 + 8] %asi, %l2 /* orig_address */
                                                   >>  77 
                                                   >>  78         /* phys addr */
                                                   >>  79         sub     %l1, %g7, %l1
                                                   >>  80         sub     %l2, %g7, %l2
                                                   >>  81 
                                                   >>  82         mov     %g3, %l3 /* PAGE_SIZE-8 */
                                                   >>  83 copy_loop:
                                                   >>  84         ldxa    [%l1 + %l3] ASI_PHYS_USE_EC, %g2
                                                   >>  85         stxa    %g2, [%l2 + %l3] ASI_PHYS_USE_EC
                                                   >>  86         cmp     %l3, %g0
                                                   >>  87         bne     copy_loop
                                                   >>  88          sub    %l3, 8, %l3
                                                   >>  89 
                                                   >>  90         /* next pbe */
                                                   >>  91         ba      pbe_loop
                                                   >>  92          ldxa   [%l0 + 16] %asi, %l0
                                                   >>  93 
                                                   >>  94 restore_ctx:
                                                   >>  95         setuw   saved_context, %g3
                                                   >>  96 
                                                   >>  97         /* Restore window regs */
                                                   >>  98         wrpr    %g0, 0, %canrestore
                                                   >>  99         wrpr    %g0, 0, %otherwin
                                                   >> 100         wrpr    %g0, 6, %cansave
                                                   >> 101         wrpr    %g0, 0, %cleanwin
                                                   >> 102 
                                                   >> 103         ldxa    [%g3 + SC_REG_CWP] %asi, %g2
                                                   >> 104         wrpr    %g2, %cwp
                                                   >> 105         ldxa    [%g3 + SC_REG_WSTATE] %asi, %g2
                                                   >> 106         wrpr    %g2, %wstate
                                                   >> 107         ldxa    [%g3 + SC_REG_FP] %asi, %fp
                                                   >> 108 
                                                   >> 109         /* Restore state regs */
                                                   >> 110         ldxa    [%g3 + SC_REG_PSTATE] %asi, %g2
                                                   >> 111         wrpr    %g2, %pstate
                                                   >> 112         ldxa    [%g3 + SC_REG_TICK] %asi, %g2
                                                   >> 113         wrpr    %g2, %tick
                                                   >> 114 
                                                   >> 115         /* Restore global regs */
                                                   >> 116         ldxa    [%g3 + SC_REG_G4] %asi, %g4
                                                   >> 117         ldxa    [%g3 + SC_REG_G5] %asi, %g5
                                                   >> 118         ldxa    [%g3 + SC_REG_G6] %asi, %g6
                                                   >> 119 
                                                   >> 120         wr      %g1, %g0, %asi
                                                   >> 121 
                                                   >> 122         restore
                                                   >> 123         restore
                                                   >> 124 
                                                   >> 125         wrpr    %g0, 14, %pil
                                                   >> 126 
                                                   >> 127         retl
                                                   >> 128          mov    %g0, %o0
 12                                                   129 
 13 .text                                          !! 130 fill_itlb:
 14 LEAF(swsusp_arch_suspend)                      !! 131         ba      pbe_loop
 15         PTR_LA t0, saved_regs                  !! 132          wrpr   %g0, 15, %pil
 16         PTR_S ra, PT_R31(t0)                   << 
 17         PTR_S sp, PT_R29(t0)                   << 
 18         PTR_S fp, PT_R30(t0)                   << 
 19         PTR_S gp, PT_R28(t0)                   << 
 20         PTR_S s0, PT_R16(t0)                   << 
 21         PTR_S s1, PT_R17(t0)                   << 
 22         PTR_S s2, PT_R18(t0)                   << 
 23         PTR_S s3, PT_R19(t0)                   << 
 24         PTR_S s4, PT_R20(t0)                   << 
 25         PTR_S s5, PT_R21(t0)                   << 
 26         PTR_S s6, PT_R22(t0)                   << 
 27         PTR_S s7, PT_R23(t0)                   << 
 28         j swsusp_save                          << 
 29 END(swsusp_arch_suspend)                       << 
 30                                                << 
 31 LEAF(restore_image)                            << 
 32         PTR_L t0, restore_pblist               << 
 33 0:                                             << 
 34         PTR_L t1, PBE_ADDRESS(t0)   /* source  << 
 35         PTR_L t2, PBE_ORIG_ADDRESS(t0) /* dest << 
 36         PTR_ADDU t3, t1, _PAGE_SIZE            << 
 37 1:                                             << 
 38         REG_L t8, (t1)                         << 
 39         REG_S t8, (t2)                         << 
 40         PTR_ADDIU t1, t1, SZREG                << 
 41         PTR_ADDIU t2, t2, SZREG                << 
 42         bne t1, t3, 1b                         << 
 43         PTR_L t0, PBE_NEXT(t0)                 << 
 44         bnez t0, 0b                            << 
 45         PTR_LA t0, saved_regs                  << 
 46         PTR_L ra, PT_R31(t0)                   << 
 47         PTR_L sp, PT_R29(t0)                   << 
 48         PTR_L fp, PT_R30(t0)                   << 
 49         PTR_L gp, PT_R28(t0)                   << 
 50         PTR_L s0, PT_R16(t0)                   << 
 51         PTR_L s1, PT_R17(t0)                   << 
 52         PTR_L s2, PT_R18(t0)                   << 
 53         PTR_L s3, PT_R19(t0)                   << 
 54         PTR_L s4, PT_R20(t0)                   << 
 55         PTR_L s5, PT_R21(t0)                   << 
 56         PTR_L s6, PT_R22(t0)                   << 
 57         PTR_L s7, PT_R23(t0)                   << 
 58         PTR_LI v0, 0x0                         << 
 59         jr ra                                  << 
 60 END(restore_image)                             << 
                                                      

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php