- PRAGMA_CHECKNEG SYM0 SYM1 SYM2 offset
The pragma symbol instruction checks if the condition:
sym0 + sym1 - sym2 + offset < 0
is true. The offset is a 32-bit integer, and the symbols: sym0, sym1, sym2, can assume the
label "ZERO" for the value zero.
Takes no cycles to execute.
Example:
ADDR DISP C5 MCC STKC FLW IOC AGU ASEL BS5 P5 BS4 C4 P4 MPC
----------------------------------------------------------------
!!SECID:56 SLABEL:DCL_START1 SLABELID:4212 STARTPMA:0x0547 ENDPMA:0x0547
0547: 000000aa 0 - - - - E - 0 00 0 0 00 -
0548: 000000bb 0 - - - - E - 0 00 0 0 00 -
0549: 000000cc 0 - - - - E - 0 00 0 0 00 -
054A: 000000dd 0 - - - - E - 0 00 0 0 00 -
054B: 00000565 0 - - - - E - 0 00 0 0 00 -
054C: 00000000 0 - - - - - LFPC 0 00 0 0 00 -
054D: 00000565 0 - - - - E - 0 00 0 0 00 -
054E: 00000000 0 - - - - - LPMA 0 00 0 0 00 -
054F: 00000014 0 - - - - DA - 0 00 0 0 00 -
0550: 00000000 0 - - - - - LAPMA 0 00 0 0 00 -
0551: 00140000 0 - - - - E - 0 00 0 0 00 -
0552: 00000000 0 - - - - - LIWA 0 00 0 0 00 -
0553: 00000014 0 M2I - - - E - 0 00 0 0 00 -
0554: 00000000 0 - - - - - LFWA 0 00 0 0 00 -
0555: 00000000 0 - - - - E - 0 00 0 0 00 -
!! ..... Omitted nop lines ....
0560: 00000000 0 - - - - - - 0 00 0 0 00 -
0561: 00000000 0 - - - - - LIRA 0 00 0 0 00 -
0562: 00000000 0 - - - - - - 0 00 0 0 00 -
0563: 00000000 0 - - SRFR - - - 0 00 0 0 00 -
0564: 00000000 0 - - UPC - - - 0 00 0 0 00 -
!!SECID:56 SLABEL:DCL_END1 SLABELID:4211 STARTPMA:0x0565 ENDPMA:0x0565
None
PRAGMA_SYMBOL DCA_CHECK ZERO ZERO ZERO 0xFFFFF000
PRAGMA_CHECKNEG DCA_CHECK DCL_END1 DCL_START1 0x300
The PRAGMA_SYMBOL defines the symbol:
DCA_CHECK as equal to 0xfffff000 (-4096),
and the PRAGMA_CHECKNEG checks that the dynamic cache block, delimited by the symbols
DCL_START1 and DCL_END1 (see the microcode example above) fits into the section of the
instruction cache allocated to the dynamic cache blocks, which, in this example, starts
with 0x300, and ends with 0x1000 (4096).