semaphores.py (6097:842991b33990) | semaphores.py (6486:33faa9915d16) |
---|---|
1# Copyright (c) 2007 The Hewlett-Packard Development Company 2# All rights reserved. 3# 4# Redistribution and use of this software in source and binary forms, 5# with or without modification, are permitted provided that the 6# following conditions are met: 7# 8# The software must be used only for Non-Commercial Use which means any --- 84 unchanged lines hidden (view full) --- 93 ldstl t1, seg, riprel, disp 94 sub t0, rax, t1, flags=(OF, SF, ZF, AF, PF, CF) 95 96 mov t1, t1, reg, flags=(CZF,) 97 stul t1, seg, riprel, disp 98 mov rax, rax, t1, flags=(nCZF,) 99}; 100 | 1# Copyright (c) 2007 The Hewlett-Packard Development Company 2# All rights reserved. 3# 4# Redistribution and use of this software in source and binary forms, 5# with or without modification, are permitted provided that the 6# following conditions are met: 7# 8# The software must be used only for Non-Commercial Use which means any --- 84 unchanged lines hidden (view full) --- 93 ldstl t1, seg, riprel, disp 94 sub t0, rax, t1, flags=(OF, SF, ZF, AF, PF, CF) 95 96 mov t1, t1, reg, flags=(CZF,) 97 stul t1, seg, riprel, disp 98 mov rax, rax, t1, flags=(nCZF,) 99}; 100 |
101def macroop CMPXCHG8B_M { 102 lea t1, seg, sib, disp, dataSize=asz 103 ldst t2, seg, [1, t0, t1], 0 104 ldst t3, seg, [1, t0, t1], dsz 105 106 sub t0, rax, t2, flags=(ZF,) 107 br label("doneComparing"), flags=(nCZF,) 108 sub t0, rdx, t3, flags=(ZF,) 109doneComparing: 110 111 # If they're equal, set t3:t2 to rbx:rcx to write to memory 112 mov t2, t2, rbx, flags=(CZF,) 113 mov t3, t3, rcx, flags=(CZF,) 114 115 # If they're not equal, set rdx:rax to the value from memory. 116 mov rax, rax, t2, flags=(nCZF,) 117 mov rdx, rdx, t3, flags=(nCZF,) 118 119 # Write to memory 120 st t3, seg, [1, t0, t1], dsz 121 st t2, seg, [1, t0, t1], 0 122}; 123 124def macroop CMPXCHG8B_P { 125 rdip t7 126 lea t1, seg, riprel, disp, dataSize=asz 127 ldst t2, seg, [1, t0, t1], 0 128 ldst t3, seg, [1, t0, t1], dsz 129 130 sub t0, rax, t2, flags=(ZF,) 131 br label("doneComparing"), flags=(nCZF,) 132 sub t0, rdx, t3, flags=(ZF,) 133doneComparing: 134 135 # If they're equal, set t3:t2 to rbx:rcx to write to memory 136 mov t2, t2, rbx, flags=(CZF,) 137 mov t3, t3, rcx, flags=(CZF,) 138 139 # If they're not equal, set rdx:rax to the value from memory. 140 mov rax, rax, t2, flags=(nCZF,) 141 mov rdx, rdx, t3, flags=(nCZF,) 142 143 # Write to memory 144 st t3, seg, [1, t0, t1], dsz 145 st t2, seg, [1, t0, t1], 0 146}; 147 148def macroop CMPXCHG8B_LOCKED_M { 149 lea t1, seg, sib, disp, dataSize=asz 150 ldstl t2, seg, [1, t0, t1], 0 151 ldstl t3, seg, [1, t0, t1], dsz 152 153 sub t0, rax, t2, flags=(ZF,) 154 br label("doneComparing"), flags=(nCZF,) 155 sub t0, rdx, t3, flags=(ZF,) 156doneComparing: 157 158 # If they're equal, set t3:t2 to rbx:rcx to write to memory 159 mov t2, t2, rbx, flags=(CZF,) 160 mov t3, t3, rcx, flags=(CZF,) 161 162 # If they're not equal, set rdx:rax to the value from memory. 163 mov rax, rax, t2, flags=(nCZF,) 164 mov rdx, rdx, t3, flags=(nCZF,) 165 166 # Write to memory 167 stul t3, seg, [1, t0, t1], dsz 168 stul t2, seg, [1, t0, t1], 0 169}; 170 171def macroop CMPXCHG8B_LOCKED_P { 172 rdip t7 173 lea t1, seg, riprel, disp, dataSize=asz 174 ldstl t2, seg, [1, t0, t1], 0 175 ldstl t3, seg, [1, t0, t1], dsz 176 177 sub t0, rax, t2, flags=(ZF,) 178 br label("doneComparing"), flags=(nCZF,) 179 sub t0, rdx, t3, flags=(ZF,) 180doneComparing: 181 182 # If they're equal, set t3:t2 to rbx:rcx to write to memory 183 mov t2, t2, rbx, flags=(CZF,) 184 mov t3, t3, rcx, flags=(CZF,) 185 186 # If they're not equal, set rdx:rax to the value from memory. 187 mov rax, rax, t2, flags=(nCZF,) 188 mov rdx, rdx, t3, flags=(nCZF,) 189 190 # Write to memory 191 stul t3, seg, [1, t0, t1], dsz 192 stul t2, seg, [1, t0, t1], 0 193}; 194 |
|
101def macroop XADD_M_R { 102 ldst t1, seg, sib, disp 103 add t2, t1, reg, flags=(OF,SF,ZF,AF,PF,CF) 104 st t2, seg, sib, disp 105 mov reg, reg, t1 106}; 107 108def macroop XADD_P_R { --- 33 unchanged lines hidden --- | 195def macroop XADD_M_R { 196 ldst t1, seg, sib, disp 197 add t2, t1, reg, flags=(OF,SF,ZF,AF,PF,CF) 198 st t2, seg, sib, disp 199 mov reg, reg, t1 200}; 201 202def macroop XADD_P_R { --- 33 unchanged lines hidden --- |