github.com/rafaeltorres324/go/src@v0.0.0-20210519164414-9fdf653a9838/runtime/defs_windows_arm.go (about)

     1  // Copyright 2018 The Go Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  package runtime
     6  
     7  const (
     8  	_PROT_NONE  = 0
     9  	_PROT_READ  = 1
    10  	_PROT_WRITE = 2
    11  	_PROT_EXEC  = 4
    12  
    13  	_MAP_ANON    = 1
    14  	_MAP_PRIVATE = 2
    15  
    16  	_DUPLICATE_SAME_ACCESS   = 0x2
    17  	_THREAD_PRIORITY_HIGHEST = 0x2
    18  
    19  	_SIGINT              = 0x2
    20  	_SIGTERM             = 0xF
    21  	_CTRL_C_EVENT        = 0x0
    22  	_CTRL_BREAK_EVENT    = 0x1
    23  	_CTRL_CLOSE_EVENT    = 0x2
    24  	_CTRL_LOGOFF_EVENT   = 0x5
    25  	_CTRL_SHUTDOWN_EVENT = 0x6
    26  
    27  	_CONTEXT_CONTROL = 0x10001
    28  	_CONTEXT_FULL    = 0x10007
    29  
    30  	_EXCEPTION_ACCESS_VIOLATION     = 0xc0000005
    31  	_EXCEPTION_BREAKPOINT           = 0x80000003
    32  	_EXCEPTION_FLT_DENORMAL_OPERAND = 0xc000008d
    33  	_EXCEPTION_FLT_DIVIDE_BY_ZERO   = 0xc000008e
    34  	_EXCEPTION_FLT_INEXACT_RESULT   = 0xc000008f
    35  	_EXCEPTION_FLT_OVERFLOW         = 0xc0000091
    36  	_EXCEPTION_FLT_UNDERFLOW        = 0xc0000093
    37  	_EXCEPTION_INT_DIVIDE_BY_ZERO   = 0xc0000094
    38  	_EXCEPTION_INT_OVERFLOW         = 0xc0000095
    39  
    40  	_INFINITE     = 0xffffffff
    41  	_WAIT_TIMEOUT = 0x102
    42  
    43  	_EXCEPTION_CONTINUE_EXECUTION = -0x1
    44  	_EXCEPTION_CONTINUE_SEARCH    = 0x0
    45  )
    46  
    47  type systeminfo struct {
    48  	anon0                       [4]byte
    49  	dwpagesize                  uint32
    50  	lpminimumapplicationaddress *byte
    51  	lpmaximumapplicationaddress *byte
    52  	dwactiveprocessormask       uint32
    53  	dwnumberofprocessors        uint32
    54  	dwprocessortype             uint32
    55  	dwallocationgranularity     uint32
    56  	wprocessorlevel             uint16
    57  	wprocessorrevision          uint16
    58  }
    59  
    60  type exceptionrecord struct {
    61  	exceptioncode        uint32
    62  	exceptionflags       uint32
    63  	exceptionrecord      *exceptionrecord
    64  	exceptionaddress     *byte
    65  	numberparameters     uint32
    66  	exceptioninformation [15]uint32
    67  }
    68  
    69  type neon128 struct {
    70  	low  uint64
    71  	high int64
    72  }
    73  
    74  type context struct {
    75  	contextflags uint32
    76  	r0           uint32
    77  	r1           uint32
    78  	r2           uint32
    79  	r3           uint32
    80  	r4           uint32
    81  	r5           uint32
    82  	r6           uint32
    83  	r7           uint32
    84  	r8           uint32
    85  	r9           uint32
    86  	r10          uint32
    87  	r11          uint32
    88  	r12          uint32
    89  
    90  	spr  uint32
    91  	lrr  uint32
    92  	pc   uint32
    93  	cpsr uint32
    94  
    95  	fpscr   uint32
    96  	padding uint32
    97  
    98  	floatNeon [16]neon128
    99  
   100  	bvr      [8]uint32
   101  	bcr      [8]uint32
   102  	wvr      [1]uint32
   103  	wcr      [1]uint32
   104  	padding2 [2]uint32
   105  }
   106  
   107  func (c *context) ip() uintptr { return uintptr(c.pc) }
   108  func (c *context) sp() uintptr { return uintptr(c.spr) }
   109  func (c *context) lr() uintptr { return uintptr(c.lrr) }
   110  
   111  func (c *context) set_ip(x uintptr) { c.pc = uint32(x) }
   112  func (c *context) set_sp(x uintptr) { c.spr = uint32(x) }
   113  func (c *context) set_lr(x uintptr) { c.lrr = uint32(x) }
   114  
   115  func dumpregs(r *context) {
   116  	print("r0   ", hex(r.r0), "\n")
   117  	print("r1   ", hex(r.r1), "\n")
   118  	print("r2   ", hex(r.r2), "\n")
   119  	print("r3   ", hex(r.r3), "\n")
   120  	print("r4   ", hex(r.r4), "\n")
   121  	print("r5   ", hex(r.r5), "\n")
   122  	print("r6   ", hex(r.r6), "\n")
   123  	print("r7   ", hex(r.r7), "\n")
   124  	print("r8   ", hex(r.r8), "\n")
   125  	print("r9   ", hex(r.r9), "\n")
   126  	print("r10  ", hex(r.r10), "\n")
   127  	print("r11  ", hex(r.r11), "\n")
   128  	print("r12  ", hex(r.r12), "\n")
   129  	print("sp   ", hex(r.spr), "\n")
   130  	print("lr   ", hex(r.lrr), "\n")
   131  	print("pc   ", hex(r.pc), "\n")
   132  	print("cpsr ", hex(r.cpsr), "\n")
   133  }
   134  
   135  type overlapped struct {
   136  	internal     uint32
   137  	internalhigh uint32
   138  	anon0        [8]byte
   139  	hevent       *byte
   140  }
   141  
   142  type memoryBasicInformation struct {
   143  	baseAddress       uintptr
   144  	allocationBase    uintptr
   145  	allocationProtect uint32
   146  	regionSize        uintptr
   147  	state             uint32
   148  	protect           uint32
   149  	type_             uint32
   150  }
   151  
   152  func stackcheck() {
   153  	// TODO: not implemented on ARM
   154  }