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

TOMOYO Linux Cross Reference
Linux/Documentation/arch/sh/register-banks.rst

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 ] ~

  1 .. SPDX-License-Identifier: GPL-2.0
  2 
  3 ==========================================
  4 Notes on register bank usage in the kernel
  5 ==========================================
  6 
  7 Introduction
  8 ------------
  9 
 10 The SH-3 and SH-4 CPU families traditionally include a single partial register
 11 bank (selected by SR.RB, only r0 ... r7 are banked), whereas other families
 12 may have more full-featured banking or simply no such capabilities at all.
 13 
 14 SR.RB banking
 15 -------------
 16 
 17 In the case of this type of banking, banked registers are mapped directly to
 18 r0 ... r7 if SR.RB is set to the bank we are interested in, otherwise ldc/stc
 19 can still be used to reference the banked registers (as r0_bank ... r7_bank)
 20 when in the context of another bank. The developer must keep the SR.RB value
 21 in mind when writing code that utilizes these banked registers, for obvious
 22 reasons. Userspace is also not able to poke at the bank1 values, so these can
 23 be used rather effectively as scratch registers by the kernel.
 24 
 25 Presently the kernel uses several of these registers.
 26 
 27         - r0_bank, r1_bank (referenced as k0 and k1, used for scratch
 28           registers when doing exception handling).
 29 
 30         - r2_bank (used to track the EXPEVT/INTEVT code)
 31 
 32                 - Used by do_IRQ() and friends for doing irq mapping based off
 33                   of the interrupt exception vector jump table offset
 34 
 35         - r6_bank (global interrupt mask)
 36 
 37                 - The SR.IMASK interrupt handler makes use of this to set the
 38                   interrupt priority level (used by local_irq_enable())
 39 
 40         - r7_bank (current)

~ [ 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