MPC563XM Reference Manual, Rev. 1
884
Freescale Semiconductor
Preliminary—Subject to Change Without Notice
MDU Carry Flag - MC
MDU carry flag indicates if the result cannot be represented by a 48-bit number, in Signed and Unsigned
Multiply Accumulates. It is reset in the other operations.
MDU Zero Flag - MZ
In multiply and multiply-accumulate operations, MDU zero flag is asserted if MACH and MACL are equal
to zero at the end of an operation. In divide operations, zero flag is asserted if MACL (result) is equal to 0.
MDU Overflow Flag - MV
In multiply operations, MV flag is negated and keeps negated in the end, because the result of a
multiplication can always fit in a 48-bit result (MACH and MACL concatenated). In a
multiply-accumulate operation, MV is asserted if the result size is wider than 48 bits. MV flag work in
both signed and unsigned operations.
In divide operations it is only asserted if a divide-by-zero operation was executed.
MDU Busy Flag (MB)
MB tests as true at the next microinstruction after the MDU start operation, and as false at the last
microcycle of any MDU operation execution.
23.4.8.4
Branch Conditions
Microengine allows conditional branch. There are five sets of flags that can be tested in a conditional
branch: ALU flags, MDU flags, P flags, Channel flags, and Semaphore flag (flag SMLCK).
When a thread starts to be executed, the values in MDU and ALU flags are not initialized. ALU flags are
described in
Section 23.4.8.2.1, “ALU Flags
”. MDU and ALU flags are updated during execution of microinstructions.
P flags are actually the upper byte of P register, which optionally can work as user defined flags (see
Section 23.4.8.1.1, “P Register
Channel flags Flags0, Flag1, MRL1, MRL2, TDL1, TDL2, PSS, PSTI and PSTO are obtained from the
selected channel (value in CHAN register), while channel flags, LSR, FM[0] and FM[1] are selected by
the serviced channel, regardless of the CHAN value
1
.
Flags TDL1/2, MRL1/2, LSR, FM[1:0] and PSS, are sampled at the beginning of a thread. Flag PSS does
not change during its execution while CHAN register is not written. When a write in CHAN register is
performed, all flags except LSR and FM[1:0] are updated according to the channel specified by CHAN
1.
Serviced channel does not change during execution of a thread, and it is the channel that requested a service (initial value
of CHAN register when a thread starts).