decoder.isa (3680:00bf1ba79520) decoder.isa (4027:53292b42ee1c)
1// -*- mode:c++ -*-
2
3// Copyright (c) 2003-2006 The Regents of The University of Michigan
4// All rights reserved.
5//
6// Redistribution and use in source and binary forms, with or without
7// modification, are permitted provided that the following conditions are
8// met: redistributions of source code must retain the above copyright

--- 70 unchanged lines hidden (view full) ---

79 }
80
81 format StoreCond {
82 0x2e: stl_c({{ Mem.ul = Ra<31:0>; }},
83 {{
84 uint64_t tmp = write_result;
85 // see stq_c
86 Ra = (tmp == 0 || tmp == 1) ? tmp : Ra;
1// -*- mode:c++ -*-
2
3// Copyright (c) 2003-2006 The Regents of The University of Michigan
4// All rights reserved.
5//
6// Redistribution and use in source and binary forms, with or without
7// modification, are permitted provided that the following conditions are
8// met: redistributions of source code must retain the above copyright

--- 70 unchanged lines hidden (view full) ---

79 }
80
81 format StoreCond {
82 0x2e: stl_c({{ Mem.ul = Ra<31:0>; }},
83 {{
84 uint64_t tmp = write_result;
85 // see stq_c
86 Ra = (tmp == 0 || tmp == 1) ? tmp : Ra;
87 if (tmp == 1) {
88 xc->setStCondFailures(0);
89 }
87 }}, mem_flags = LOCKED, inst_flags = IsStoreConditional);
88 0x2f: stq_c({{ Mem.uq = Ra; }},
89 {{
90 uint64_t tmp = write_result;
91 // If the write operation returns 0 or 1, then
92 // this was a conventional store conditional,
93 // and the value indicates the success/failure
94 // of the operation. If another value is
95 // returned, then this was a Turbolaser
96 // mailbox access, and we don't update the
97 // result register at all.
98 Ra = (tmp == 0 || tmp == 1) ? tmp : Ra;
90 }}, mem_flags = LOCKED, inst_flags = IsStoreConditional);
91 0x2f: stq_c({{ Mem.uq = Ra; }},
92 {{
93 uint64_t tmp = write_result;
94 // If the write operation returns 0 or 1, then
95 // this was a conventional store conditional,
96 // and the value indicates the success/failure
97 // of the operation. If another value is
98 // returned, then this was a Turbolaser
99 // mailbox access, and we don't update the
100 // result register at all.
101 Ra = (tmp == 0 || tmp == 1) ? tmp : Ra;
102 if (tmp == 1) {
103 // clear failure counter... this is
104 // non-architectural and for debugging
105 // only.
106 xc->setStCondFailures(0);
107 }
99 }}, mem_flags = LOCKED, inst_flags = IsStoreConditional);
100 }
101
102 format IntegerOperate {
103
104 0x10: decode INTFUNC { // integer arithmetic operations
105
106 0x00: addl({{ Rc.sl = Ra.sl + Rb_or_imm.sl; }});

--- 744 unchanged lines hidden ---
108 }}, mem_flags = LOCKED, inst_flags = IsStoreConditional);
109 }
110
111 format IntegerOperate {
112
113 0x10: decode INTFUNC { // integer arithmetic operations
114
115 0x00: addl({{ Rc.sl = Ra.sl + Rb_or_imm.sl; }});

--- 744 unchanged lines hidden ---