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

TOMOYO Linux Cross Reference
Linux/arch/sparc/include/asm/head_32.h

Version: ~ [ linux-6.11-rc3 ] ~ [ linux-6.10.4 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.45 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.104 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.164 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.223 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.281 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.319 ] ~ [ 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.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /* SPDX-License-Identifier: GPL-2.0 */
  2 #ifndef __SPARC_HEAD_H
  3 #define __SPARC_HEAD_H
  4 
  5 #define KERNBASE        0xf0000000  /* First address the kernel will eventually be */
  6 
  7 #define WRITE_PAUSE      nop; nop; nop; /* Have to do this after %wim/%psr chg */
  8 
  9 /* Here are some trap goodies */
 10 
 11 /* Generic trap entry. */
 12 #define TRAP_ENTRY(type, label) \
 13         rd %psr, %l0; b label; rd %wim, %l3; nop;
 14 
 15 /* Data/text faults */
 16 #define SRMMU_TFAULT rd %psr, %l0; rd %wim, %l3; b srmmu_fault; mov 1, %l7;
 17 #define SRMMU_DFAULT rd %psr, %l0; rd %wim, %l3; b srmmu_fault; mov 0, %l7;
 18 
 19 /* This is for traps we should NEVER get. */
 20 #define BAD_TRAP(num) \
 21         rd %psr, %l0; mov num, %l7; b bad_trap_handler; rd %wim, %l3;
 22 
 23 /* This is for traps when we want just skip the instruction which caused it */
 24 #define SKIP_TRAP(type, name) \
 25         jmpl %l2, %g0; rett %l2 + 4; nop; nop;
 26 
 27 /* Notice that for the system calls we pull a trick.  We load up a
 28  * different pointer to the system call vector table in %l7, but call
 29  * the same generic system call low-level entry point.  The trap table
 30  * entry sequences are also HyperSparc pipeline friendly ;-)
 31  */
 32 
 33 /* Software trap for Linux system calls. */
 34 #define LINUX_SYSCALL_TRAP \
 35         sethi %hi(sys_call_table), %l7; \
 36         or %l7, %lo(sys_call_table), %l7; \
 37         b linux_sparc_syscall; \
 38         rd %psr, %l0;
 39 
 40 #define BREAKPOINT_TRAP \
 41         b breakpoint_trap; \
 42         rd %psr,%l0; \
 43         nop; \
 44         nop;
 45 
 46 #ifdef CONFIG_KGDB
 47 #define KGDB_TRAP(num)                  \
 48         mov num, %l7;                   \
 49         b kgdb_trap_low;                \
 50         rd %psr,%l0;                    \
 51         nop;
 52 #else
 53 #define KGDB_TRAP(num) \
 54         BAD_TRAP(num)
 55 #endif
 56 
 57 /* The Get Condition Codes software trap for userland. */
 58 #define GETCC_TRAP \
 59         b getcc_trap_handler; rd %psr, %l0; nop; nop;
 60 
 61 /* The Set Condition Codes software trap for userland. */
 62 #define SETCC_TRAP \
 63         b setcc_trap_handler; rd %psr, %l0; nop; nop;
 64 
 65 /* The Get PSR software trap for userland. */
 66 #define GETPSR_TRAP \
 67         rd %psr, %i0; jmp %l2; rett %l2 + 4; nop;
 68 
 69 /* This is for hard interrupts from level 1-14, 15 is non-maskable (nmi) and
 70  * gets handled with another macro.
 71  */
 72 #define TRAP_ENTRY_INTERRUPT(int_level) \
 73         mov int_level, %l7; rd %psr, %l0; b real_irq_entry; rd %wim, %l3;
 74 
 75 /* Window overflows/underflows are special and we need to try to be as
 76  * efficient as possible here....
 77  */
 78 #define WINDOW_SPILL \
 79         rd %psr, %l0; rd %wim, %l3; b spill_window_entry; andcc %l0, PSR_PS, %g0;
 80 
 81 #define WINDOW_FILL \
 82         rd %psr, %l0; rd %wim, %l3; b fill_window_entry; andcc %l0, PSR_PS, %g0;
 83 
 84 #endif /* __SPARC_HEAD_H */
 85 

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