Deleted Added
sdiff udiff text old ( 3531:51eb743f38f5 ) new ( 3587:841cf134f321 )
full compact
1// Copyright (c) 2006 The Regents of The University of Michigan
2// All rights reserved.
3//
4// Redistribution and use in source and binary forms, with or without
5// modification, are permitted provided that the following conditions are
6// met: redistributions of source code must retain the above copyright
7// notice, this list of conditions and the following disclaimer;
8// redistributions in binary form must reproduce the above copyright

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

341 0x26: decode X {
342 0x0: srl({{Rd = Rs1.uw >> (I ? SHCNT32 : Rs2<4:0>);}});
343 0x1: srlx({{Rd = Rs1.udw >> (I ? SHCNT64 : Rs2<5:0>);}});
344 }
345 0x27: decode X {
346 0x0: sra({{Rd = Rs1.sw >> (I ? SHCNT32 : Rs2<4:0>);}});
347 0x1: srax({{Rd = Rs1.sdw >> (I ? SHCNT64 : Rs2<5:0>);}});
348 }
349 // XXX might want a format rdipr thing here
350 0x28: decode RS1 {
351 0xF: decode I {
352 0x0: Nop::stbar({{/*stuff*/}});
353 0x1: Nop::membar({{/*stuff*/}});
354 }
355 default: rdasr({{
356 Rd = xc->readMiscRegWithEffect(RS1 + AsrStart);
357 }});
358 }
359 0x29: HPriv::rdhpr({{
360 Rd = xc->readMiscRegWithEffect(RS1 + HprStart);
361 }});
362 0x2A: Priv::rdpr({{
363 Rd = xc->readMiscRegWithEffect(RS1 + PrStart);
364 }});
365 0x2B: BasicOperate::flushw({{
366 if(NWindows - 2 - Cansave == 0)
367 {
368 if(Otherwin)
369 fault = new SpillNOther(Wstate<5:3>);
370 else
371 fault = new SpillNNormal(Wstate<2:0>);
372 }

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

412 {
413 0x1: movreq({{Rd = (Rs1.sdw == 0) ? Rs2_or_imm10 : Rd;}});
414 0x2: movrle({{Rd = (Rs1.sdw <= 0) ? Rs2_or_imm10 : Rd;}});
415 0x3: movrl({{Rd = (Rs1.sdw < 0) ? Rs2_or_imm10 : Rd;}});
416 0x5: movrne({{Rd = (Rs1.sdw != 0) ? Rs2_or_imm10 : Rd;}});
417 0x6: movrg({{Rd = (Rs1.sdw > 0) ? Rs2_or_imm10 : Rd;}});
418 0x7: movrge({{Rd = (Rs1.sdw >= 0) ? Rs2_or_imm10 : Rd;}});
419 }
420 0x30: wrasr({{
421 xc->setMiscRegWithEffect(RD + AsrStart, Rs1 ^ Rs2_or_imm13);
422 }});
423 0x31: decode FCN {
424 0x0: Priv::saved({{
425 assert(Cansave < NWindows - 2);
426 assert(Otherwin || Canrestore);
427 Cansave = Cansave + 1;
428 if(Otherwin == 0)
429 Canrestore = Canrestore - 1;
430 else

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

435 assert(Canrestore < NWindows - 2);
436 Canrestore = Canrestore + 1;
437 if(Otherwin == 0)
438 Cansave = Cansave - 1;
439 else
440 Otherwin = Otherwin - 1;
441 }});
442 }
443 0x32: Priv::wrpr({{
444 // XXX Need to protect with format that traps non-priv
445 // access
446 xc->setMiscRegWithEffect(RD + PrStart, Rs1 ^ Rs2_or_imm13);
447 }});
448 0x33: HPriv::wrhpr({{
449 // XXX Need to protect with format that traps non-priv/priv
450 // access
451 xc->setMiscRegWithEffect(RD + HprStart, Rs1 ^ Rs2_or_imm13);
452 }});
453 0x34: decode OPF{
454 format BasicOperate{
455 0x01: fmovs({{
456 Frds.uw = Frs2s.uw;
457 //fsr.ftt = fsr.cexc = 0
458 Fsr &= ~(7 << 14);
459 Fsr &= ~(0x1F);
460 }});

--- 632 unchanged lines hidden ---