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_getcr3(void)
  36 { return (0); }
  37 
  38 ulong_t
  39 kmdb_unix_getcr4(void)
  40 { return (0); }
  41 
  42 #else   /* __lint */
  43 
  44 #if defined(__amd64)
  45         ENTRY(kmdb_unix_getcr0)
  46         movq %cr0, %rax
  47         ret
  48         SET_SIZE(kmdb_unix_getcr0)
  49 
  50         ENTRY(kmdb_unix_getcr2)
  51         movq %cr2, %rax
  52         ret
  53         SET_SIZE(kmdb_unix_getcr2)
  54 
  55         ENTRY(kmdb_unix_getcr3)
  56         movq %cr3, %rax
  57         ret
  58         SET_SIZE(kmdb_unix_getcr3)
  59 
  60         ENTRY(kmdb_unix_getcr4)
  61         movq %cr4, %rax
  62         ret
  63         SET_SIZE(kmdb_unix_getcr4)
  64 
  65 #elif defined (__i386)
  66         ENTRY(kmdb_unix_getcr0)
  67         movl %cr0, %eax
  68         ret
  69         SET_SIZE(kmdb_unix_getcr0)
  70 
  71         ENTRY(kmdb_unix_getcr2)
  72         movl %cr2, %eax
  73         ret
  74         SET_SIZE(kmdb_unix_getcr2)
  75 
  76         ENTRY(kmdb_unix_getcr3)
  77         movl %cr3, %eax
  78         ret
  79         SET_SIZE(kmdb_unix_getcr3)
  80 
  81         ENTRY(kmdb_unix_getcr4)
  82         movl %cr4, %eax
  83         ret
  84         SET_SIZE(kmdb_unix_getcr4)
  85 
  86 #endif  /* __i386 */
  87 
  88 #endif /* __lint */