1 /*
   2  * This file and its contents are supplied under the terms of the
   3  * Common Development and Distribution License ("CDDL"), version 1.0.
   4  * You may only use this file in accordance with the terms of version
   5  * 1.0 of the CDDL.
   6  *
   7  * A full copy of the text of the CDDL should have accompanied this
   8  * source.  A copy of the CDDL is also available via the Internet at
   9  * http://www.illumos.org/license/CDDL.
  10  */
  11 
  12 /*
  13  * Copyright 2018 Joyent, Inc.
  14  */
  15 
  16 #if !defined(__lint)
  17         .file   "unix_sup.s"
  18 #endif /* __lint */
  19 
  20 /*
  21  * Support routines for the unix kmdb module
  22  */
  23 
  24 #include <sys/asm_linkage.h>
  25 
  26 #if defined(__lint)
  27 
  28 #include <sys/types.h>
  29 
  30 ulong_t
  31 kmdb_unix_getcr0(void)
  32 { return (0); }
  33 
  34 ulong_t
  35 kmdb_unix_getcr4(void)
  36 { return (0); }
  37 
  38 #else   /* __lint */
  39 
  40 #if defined(__amd64)
  41         ENTRY(kmdb_unix_getcr0)
  42         movq %cr0, %rax
  43         ret
  44         SET_SIZE(kmdb_unix_getcr0)
  45 
  46         ENTRY(kmdb_unix_getcr2)
  47         movq %cr2, %rax
  48         ret
  49         SET_SIZE(kmdb_unix_getcr2)
  50 
  51         ENTRY(kmdb_unix_getcr3)
  52         movq %cr3, %rax
  53         ret
  54         SET_SIZE(kmdb_unix_getcr3)
  55 
  56         ENTRY(kmdb_unix_getcr4)
  57         movq %cr4, %rax
  58         ret
  59         SET_SIZE(kmdb_unix_getcr4)
  60 
  61 #elif defined (__i386)
  62         ENTRY(kmdb_unix_getcr0)
  63         movl %cr0, %eax
  64         ret
  65         SET_SIZE(kmdb_unix_getcr0)
  66 
  67         ENTRY(kmdb_unix_getcr2)
  68         movl %cr2, %eax
  69         ret
  70         SET_SIZE(kmdb_unix_getcr2)
  71 
  72         ENTRY(kmdb_unix_getcr3)
  73         movl %cr3, %eax
  74         ret
  75         SET_SIZE(kmdb_unix_getcr3)
  76 
  77         ENTRY(kmdb_unix_getcr4)
  78         movl %cr4, %eax
  79         ret
  80         SET_SIZE(kmdb_unix_getcr4)
  81 
  82 #endif  /* __i386 */
  83 
  84 #endif /* __lint */