Table of contents

TRANSPORTUIP - Microcode Subroutine Call Setup

Purpose

TRANSPORTUIP prepares for microcode subroutine execution by saving a return address. It does NOT perform the actual jump - a subsequent U_JCC or U_JMP instruction does that. Return from subroutine happnes via U_JMP_INDIR or using some flow bits (xxx need to clarify this).

Operation

result = TRANSPORTUIP(CONST, target_label, IA.11, U3.01)

Example

TMP8 = TRANSPORTUIP(CONST, part_macro_fxsave_alt, IA.11, U3.01)
// TMP8 contains internal state (not directly usable)
// Actual jump happens next (implicitly or explicitly)

Subroutine Return

Example from FXSAVE

// Main path:
TMP8 = TRANSPORTUIP(CONST, part_macro_fxsave_alt, IA.11, U3.01)
[... store FP registers ...]

// At part_macro_fxsave_alt:
[... alternate FP register stores ...]
EOM + ???FL2??? // With return flag - goes back to main path

Cpuid in some cache CRBUS handling subroutine also uses U_JMP.INDIR to return back from subroutine.

Notes

OLDER NOTES:

Typical micro-subroutine call

Example with TMP5 used as return address from subroutine:

...
TMP5 =         TRANSPORTUIP   (CONST         , loc_ret  , IA_11, U3_01)
...
U_JMP_NT       (CONST         , sub_xyz  , IA_11, U3_1B)
loc_ret:
...


# microcode subroutine
sub_xyz:
...
U_JMP_INDIR_N  (CONST_0       , TMP5          , U3_40)
This project is an independent, unofficial work based on publicly available information and reverse-engineering research, and is not affiliated with, endorsed by, sponsored by, or associated with Intel Corporation or its affiliates. It is provided "as is", without warranty of any kind. The author assumes no responsibility or liability for any use, misuse, damage, data loss, hardware failure, or other consequences arising from its use. Intel, Pentium, Core and related trademarks are the property of their respective owners and are used solely for identification and informational purposes.
  • index page
  • uop description
  • ADC
  • ADD
  • AND
  • BSF
  • BSR
  • BSWAP
  • BTEST
  • DIV
  • FANDNOT
  • FCALCTW
  • FCMOV
  • FCOM
  • FMERGE
  • FMOV
  • FPEXTRACT
  • FPORDATATYPE
  • FPSIGNEXT
  • FREADROM
  • FXORS
  • IDIV
  • IMUL
  • INTEXTRACT
  • LEA
  • LOAD
  • MOVE
  • MOVEFROMCREG
  • MOVETOCREG
  • MUL
  • OR
  • PORTIN
  • PORTOUT
  • RCL
  • RCR
  • RDSEGFLD
  • ROL
  • ROR
  • SAL
  • SAR
  • SBC
  • SHL
  • SHR
  • SIGEVENT
  • STA
  • STRD
  • SUB
  • SUBR
  • TRANSPORTUIP
  • UOP
  • U_JCC
  • U_JMP
  • U_JMP_INDIR
  • WRSEGFLD
  • WUCONCAT
  • WUEXTRBK
  • WUINSERT
  • WUMERGE
  • XOR