Encoding:

POOL32C

011000

rt

base

LD-EVA

0110

LBE

100

offset

6

5

5

4

3

9

Format:

LBE rt, offset(base)

microMIPS

Load Byte EVA

Purpose:

Load Byte EVA

To load a byte as a signed value from user mode virtual address space when executing in kernel mode.

Description:

 GPR[rt] = memory[GPR[base] + offset]

The contents of the 8-bit byte at the memory location specified by the effective address are fetched, sign-extended, and placed in GPR rt. The 9-bit signed offset is added to the contents of GPR base to form the effective address.

The LBE instruction functions the same as the LB instruction, except that address translation is performed using the user mode virtual address space mapping in the TLB when accessing an address within a memory segment configured to use the MUSUK access mode and executing in kernel mode. Memory segments using UUSK or MUSK access modes are also accessible. Refer to Volume III, Enhanced Virtual Addressing section for additional information.

Implementation of this instruction is specified by the Config5EVA field being set to one.

Restrictions:

Only usable when access to Coprocessor0 is enabled and accessing an address within a segment configured using

UUSK, MUSK or MUSUK access mode.

Operation:

vAddr = sign_extend(offset) + GPR[base]
(pAddr, CCA) = AddressTranslation (vAddr, DATA, LOAD)
pAddr = pAddrPSIZE-1..3 || (pAddr2..0 xor ReverseEndian3)
memdoubleword = LoadMemory (CCA, BYTE, pAddr, vAddr, DATA)
byte = vAddr2..0 xor BigEndianCPU3
GPR[rt] = sign_extend(memdoubleword7+8*byte..8*byte)

Exceptions:

TLB Refill, TLB Invalid

Bus Error, Address Error, Watch, Reserved Instruction, Coprocessor Unusable