github.com/riscv/riscv-go@v0.0.0-20200123204226-124ebd6fcc8e/src/runtime/defs_windows_386.go (about)

     1  // created by cgo -cdefs and then converted to Go
     2  // cgo -cdefs defs_windows.go
     3  
     4  package runtime
     5  
     6  const (
     7  	_PROT_NONE  = 0
     8  	_PROT_READ  = 1
     9  	_PROT_WRITE = 2
    10  	_PROT_EXEC  = 4
    11  
    12  	_MAP_ANON    = 1
    13  	_MAP_PRIVATE = 2
    14  
    15  	_DUPLICATE_SAME_ACCESS   = 0x2
    16  	_THREAD_PRIORITY_HIGHEST = 0x2
    17  
    18  	_SIGINT           = 0x2
    19  	_CTRL_C_EVENT     = 0x0
    20  	_CTRL_BREAK_EVENT = 0x1
    21  
    22  	_CONTEXT_CONTROL = 0x10001
    23  	_CONTEXT_FULL    = 0x10007
    24  
    25  	_EXCEPTION_ACCESS_VIOLATION     = 0xc0000005
    26  	_EXCEPTION_BREAKPOINT           = 0x80000003
    27  	_EXCEPTION_FLT_DENORMAL_OPERAND = 0xc000008d
    28  	_EXCEPTION_FLT_DIVIDE_BY_ZERO   = 0xc000008e
    29  	_EXCEPTION_FLT_INEXACT_RESULT   = 0xc000008f
    30  	_EXCEPTION_FLT_OVERFLOW         = 0xc0000091
    31  	_EXCEPTION_FLT_UNDERFLOW        = 0xc0000093
    32  	_EXCEPTION_INT_DIVIDE_BY_ZERO   = 0xc0000094
    33  	_EXCEPTION_INT_OVERFLOW         = 0xc0000095
    34  
    35  	_INFINITE     = 0xffffffff
    36  	_WAIT_TIMEOUT = 0x102
    37  
    38  	_EXCEPTION_CONTINUE_EXECUTION = -0x1
    39  	_EXCEPTION_CONTINUE_SEARCH    = 0x0
    40  )
    41  
    42  type systeminfo struct {
    43  	anon0                       [4]byte
    44  	dwpagesize                  uint32
    45  	lpminimumapplicationaddress *byte
    46  	lpmaximumapplicationaddress *byte
    47  	dwactiveprocessormask       uint32
    48  	dwnumberofprocessors        uint32
    49  	dwprocessortype             uint32
    50  	dwallocationgranularity     uint32
    51  	wprocessorlevel             uint16
    52  	wprocessorrevision          uint16
    53  }
    54  
    55  type exceptionrecord struct {
    56  	exceptioncode        uint32
    57  	exceptionflags       uint32
    58  	exceptionrecord      *exceptionrecord
    59  	exceptionaddress     *byte
    60  	numberparameters     uint32
    61  	exceptioninformation [15]uint32
    62  }
    63  
    64  type floatingsavearea struct {
    65  	controlword   uint32
    66  	statusword    uint32
    67  	tagword       uint32
    68  	erroroffset   uint32
    69  	errorselector uint32
    70  	dataoffset    uint32
    71  	dataselector  uint32
    72  	registerarea  [80]uint8
    73  	cr0npxstate   uint32
    74  }
    75  
    76  type context struct {
    77  	contextflags      uint32
    78  	dr0               uint32
    79  	dr1               uint32
    80  	dr2               uint32
    81  	dr3               uint32
    82  	dr6               uint32
    83  	dr7               uint32
    84  	floatsave         floatingsavearea
    85  	seggs             uint32
    86  	segfs             uint32
    87  	seges             uint32
    88  	segds             uint32
    89  	edi               uint32
    90  	esi               uint32
    91  	ebx               uint32
    92  	edx               uint32
    93  	ecx               uint32
    94  	eax               uint32
    95  	ebp               uint32
    96  	eip               uint32
    97  	segcs             uint32
    98  	eflags            uint32
    99  	esp               uint32
   100  	segss             uint32
   101  	extendedregisters [512]uint8
   102  }
   103  
   104  func (c *context) ip() uintptr { return uintptr(c.eip) }
   105  func (c *context) sp() uintptr { return uintptr(c.esp) }
   106  
   107  func (c *context) setip(x uintptr) { c.eip = uint32(x) }
   108  func (c *context) setsp(x uintptr) { c.esp = uint32(x) }
   109  
   110  func dumpregs(r *context) {
   111  	print("eax     ", hex(r.eax), "\n")
   112  	print("ebx     ", hex(r.ebx), "\n")
   113  	print("ecx     ", hex(r.ecx), "\n")
   114  	print("edx     ", hex(r.edx), "\n")
   115  	print("edi     ", hex(r.edi), "\n")
   116  	print("esi     ", hex(r.esi), "\n")
   117  	print("ebp     ", hex(r.ebp), "\n")
   118  	print("esp     ", hex(r.esp), "\n")
   119  	print("eip     ", hex(r.eip), "\n")
   120  	print("eflags  ", hex(r.eflags), "\n")
   121  	print("cs      ", hex(r.segcs), "\n")
   122  	print("fs      ", hex(r.segfs), "\n")
   123  	print("gs      ", hex(r.seggs), "\n")
   124  }
   125  
   126  type overlapped struct {
   127  	internal     uint32
   128  	internalhigh uint32
   129  	anon0        [8]byte
   130  	hevent       *byte
   131  }