github.com/megatontech/mynoteforgo@v0.0.0-20200507084910-5d0c6ea6e890/源码/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  	_CTRL_C_EVENT     = 0x0
    21  	_CTRL_BREAK_EVENT = 0x1
    22  
    23  	_CONTEXT_CONTROL = 0x10001
    24  	_CONTEXT_FULL    = 0x10007
    25  
    26  	_EXCEPTION_ACCESS_VIOLATION     = 0xc0000005
    27  	_EXCEPTION_BREAKPOINT           = 0x80000003
    28  	_EXCEPTION_FLT_DENORMAL_OPERAND = 0xc000008d
    29  	_EXCEPTION_FLT_DIVIDE_BY_ZERO   = 0xc000008e
    30  	_EXCEPTION_FLT_INEXACT_RESULT   = 0xc000008f
    31  	_EXCEPTION_FLT_OVERFLOW         = 0xc0000091
    32  	_EXCEPTION_FLT_UNDERFLOW        = 0xc0000093
    33  	_EXCEPTION_INT_DIVIDE_BY_ZERO   = 0xc0000094
    34  	_EXCEPTION_INT_OVERFLOW         = 0xc0000095
    35  
    36  	_INFINITE     = 0xffffffff
    37  	_WAIT_TIMEOUT = 0x102
    38  
    39  	_EXCEPTION_CONTINUE_EXECUTION = -0x1
    40  	_EXCEPTION_CONTINUE_SEARCH    = 0x0
    41  )
    42  
    43  type systeminfo struct {
    44  	anon0                       [4]byte
    45  	dwpagesize                  uint32
    46  	lpminimumapplicationaddress *byte
    47  	lpmaximumapplicationaddress *byte
    48  	dwactiveprocessormask       uint32
    49  	dwnumberofprocessors        uint32
    50  	dwprocessortype             uint32
    51  	dwallocationgranularity     uint32
    52  	wprocessorlevel             uint16
    53  	wprocessorrevision          uint16
    54  }
    55  
    56  type exceptionrecord struct {
    57  	exceptioncode        uint32
    58  	exceptionflags       uint32
    59  	exceptionrecord      *exceptionrecord
    60  	exceptionaddress     *byte
    61  	numberparameters     uint32
    62  	exceptioninformation [15]uint32
    63  }
    64  
    65  type neon128 struct {
    66  	low  uint64
    67  	high int64
    68  }
    69  
    70  type context struct {
    71  	contextflags uint32
    72  	r0           uint32
    73  	r1           uint32
    74  	r2           uint32
    75  	r3           uint32
    76  	r4           uint32
    77  	r5           uint32
    78  	r6           uint32
    79  	r7           uint32
    80  	r8           uint32
    81  	r9           uint32
    82  	r10          uint32
    83  	r11          uint32
    84  	r12          uint32
    85  
    86  	spr  uint32
    87  	lrr  uint32
    88  	pc   uint32
    89  	cpsr uint32
    90  
    91  	fpscr   uint32
    92  	padding uint32
    93  
    94  	floatNeon [16]neon128
    95  
    96  	bvr      [8]uint32
    97  	bcr      [8]uint32
    98  	wvr      [1]uint32
    99  	wcr      [1]uint32
   100  	padding2 [2]uint32
   101  }
   102  
   103  func (c *context) ip() uintptr { return uintptr(c.pc) }
   104  func (c *context) sp() uintptr { return uintptr(c.spr) }
   105  func (c *context) lr() uintptr { return uintptr(c.lrr) }
   106  
   107  func (c *context) set_ip(x uintptr) { c.pc = uint32(x) }
   108  func (c *context) set_sp(x uintptr) { c.spr = uint32(x) }
   109  func (c *context) set_lr(x uintptr) { c.lrr = uint32(x) }
   110  
   111  func dumpregs(r *context) {
   112  	print("r0   ", hex(r.r0), "\n")
   113  	print("r1   ", hex(r.r1), "\n")
   114  	print("r2   ", hex(r.r2), "\n")
   115  	print("r3   ", hex(r.r3), "\n")
   116  	print("r4   ", hex(r.r4), "\n")
   117  	print("r5   ", hex(r.r5), "\n")
   118  	print("r6   ", hex(r.r6), "\n")
   119  	print("r7   ", hex(r.r7), "\n")
   120  	print("r8   ", hex(r.r8), "\n")
   121  	print("r9   ", hex(r.r9), "\n")
   122  	print("r10  ", hex(r.r10), "\n")
   123  	print("r11  ", hex(r.r11), "\n")
   124  	print("r12  ", hex(r.r12), "\n")
   125  	print("sp   ", hex(r.spr), "\n")
   126  	print("lr   ", hex(r.lrr), "\n")
   127  	print("pc   ", hex(r.pc), "\n")
   128  	print("cpsr ", hex(r.cpsr), "\n")
   129  }
   130  
   131  type overlapped struct {
   132  	internal     uint32
   133  	internalhigh uint32
   134  	anon0        [8]byte
   135  	hevent       *byte
   136  }
   137  
   138  type memoryBasicInformation struct {
   139  	baseAddress       uintptr
   140  	allocationBase    uintptr
   141  	allocationProtect uint32
   142  	regionSize        uintptr
   143  	state             uint32
   144  	protect           uint32
   145  	type_             uint32
   146  }
   147  
   148  func stackcheck() {
   149  	// TODO: not implemented on ARM
   150  }