root/include/asm-sparc/vac-ops.h

/* [previous][next][first][last][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. enable_vac
  2. disable_vac
  3. hw_flush_vac_context_entry
  4. sw_flush_vac_context_entry
  5. hw_flush_vac_segment_entry
  6. sw_flush_vac_segment_entry
  7. hw_flush_vac_page_entry
  8. sw_flush_vac_page_entry

   1 /* vac-ops.h: Inline assembly routines to do operations on the Sparc
   2               VAC (virtual address cache).
   3 
   4    Copyright (C) 1994, David S. Miller (davem@caip.rutgers.edu)
   5 */
   6 
   7 /* enable_vac() enables the virtual address cache. It returns 0 on
   8    success, 1 on failure.
   9 */
  10 
  11 extern __inline__ int enable_vac()
     /* [previous][next][first][last][top][bottom][index][help] */
  12 {
  13   int success;
  14 
  15   __asm__ __volatile__("lduba [0x40000000] 0x2, %0\n\t"
  16                        "or    %0, 0x10, %0\n\t"
  17                        "stba  %0, [0x40000000] 0x2\n\t"
  18                        "or    %g0, %g0, %0" : "=r" (success) : "0" (success));
  19   return success;
  20 }
  21 
  22 /* disable_vac() disables the virtual address cache. It returns 0 on
  23    success, 1 on failure.
  24 */
  25 
  26 extern __inline__ int disable_vac()
     /* [previous][next][first][last][top][bottom][index][help] */
  27 {
  28   int success;
  29 
  30   __asm__ __volatile__("lduba [0x40000000] 0x2, %0\n\t"
  31                         "xor   %0, 0x10, %0\n\t"
  32                         "stba  %0, [0x40000000] 0x2\n\t"
  33                         "or    %g0, %g0, %0" : "=r" (success) : "0" (success));
  34   return success;
  35 }
  36 
  37 /* Various one-shot VAC entry flushes on the Sparc */
  38 
  39 extern __inline__ void hw_flush_vac_context_entry(char* addr)
     /* [previous][next][first][last][top][bottom][index][help] */
  40 {
  41   __asm__ __volatile__("sta 0, [%0] 0x7" : : "r" (addr));
  42 }
  43 
  44 extern __inline__ void sw_flush_vac_context_entry(char* addr)
     /* [previous][next][first][last][top][bottom][index][help] */
  45 {
  46   __asm__ __volatile__("sta 0, [%0] 0xe" : : "r" (addr));
  47 }
  48 
  49 extern __inline__ void hw_flush_vac_segment_entry(char* addr)
     /* [previous][next][first][last][top][bottom][index][help] */
  50 {
  51   __asm__ __volatile__("sta 0, [%0] 0x5" : : "r" (addr));
  52 }
  53 
  54 extern __inline__ void sw_flush_vac_segment_entry(char* addr)
     /* [previous][next][first][last][top][bottom][index][help] */
  55 {
  56   __asm__ __volatile__("sta 0, [%0], 0xc" : : "r" (addr));
  57 }
  58 
  59 extern __inline__ void hw_flush_vac_page_entry(char* addr)
     /* [previous][next][first][last][top][bottom][index][help] */
  60 {
  61   __asm__ __volatile__("sta 0, [%0] 0x6" : : "r" (addr));
  62 }
  63 
  64 extern __inline__ void sw_flush_vac_page_entry(char* addr)
     /* [previous][next][first][last][top][bottom][index][help] */
  65 {
  66   __asm__ __volatile__("sta 0, [%0] 0xd" : : "r" (addr));
  67 }
  68  

/* [previous][next][first][last][top][bottom][index][help] */