1#include "io.h" 2 3int main(void) 4{ 5 long long rt, ach, acl, dsp; 6 long long result; 7 8 ach = 0x05; 9 acl = 0xB4CB; 10 dsp = 0x07; 11 result = 0x000C; 12 13 __asm 14 ("wrdsp %1, 0x01\n\t" 15 "mthi %2, $ac1\n\t" 16 "mtlo %3, $ac1\n\t" 17 "extp %0, $ac1, 0x03\n\t" 18 "rddsp %1\n\t" 19 : "=r"(rt), "+r"(dsp) 20 : "r"(ach), "r"(acl) 21 ); 22 dsp = (dsp >> 14) & 0x01; 23 if ((dsp != 0) || (result != rt)) { 24 printf("extp wrong\n"); 25 26 return -1; 27 } 28 29 ach = 0x05; 30 acl = 0xB4CB; 31 dsp = 0x01; 32 33 __asm 34 ("wrdsp %1, 0x01\n\t" 35 "mthi %2, $ac1\n\t" 36 "mtlo %3, $ac1\n\t" 37 "extp %0, $ac1, 0x03\n\t" 38 "rddsp %1\n\t" 39 : "=r"(rt), "+r"(dsp) 40 : "r"(ach), "r"(acl) 41 ); 42 dsp = (dsp >> 14) & 0x01; 43 if (dsp != 1) { 44 printf("extp wrong\n"); 45 46 return -1; 47 } 48 49 return 0; 50} 51