Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Data Structures | Macros | Functions
uasm.h File Reference
#include <linux/types.h>

Go to the source code of this file.

Data Structures

struct  uasm_label
 
struct  uasm_reloc
 

Macros

#define __uasminit   __cpuinit
 
#define __uasminitdata   __cpuinitdata
 
#define UASM_EXPORT_SYMBOL(sym)
 
#define Ip_u1u2u3(op)
 
#define Ip_u2u1u3(op)
 
#define Ip_u3u1u2(op)
 
#define Ip_u1u2s3(op)
 
#define Ip_u2s3u1(op)
 
#define Ip_u2u1s3(op)
 
#define Ip_u2u1msbu3(op)
 
#define Ip_u1u2(op)   void __uasminit uasm_i##op(u32 **buf, unsigned int a, unsigned int b)
 
#define Ip_u1s2(op)   void __uasminit uasm_i##op(u32 **buf, unsigned int a, signed int b)
 
#define Ip_u1(op)   void __uasminit uasm_i##op(u32 **buf, unsigned int a)
 
#define Ip_0(op)   void __uasminit uasm_i##op(u32 **buf)
 
#define UASM_L_LA(lb)
 
#define UASM_i_ADDIU(buf, rs, rt, val)   uasm_i_addiu(buf, rs, rt, val)
 
#define UASM_i_ADDU(buf, rs, rt, rd)   uasm_i_addu(buf, rs, rt, rd)
 
#define UASM_i_LL(buf, rs, rt, off)   uasm_i_ll(buf, rs, rt, off)
 
#define UASM_i_LW(buf, rs, rt, off)   uasm_i_lw(buf, rs, rt, off)
 
#define UASM_i_LWX(buf, rs, rt, rd)   uasm_i_lwx(buf, rs, rt, rd)
 
#define UASM_i_MFC0(buf, rt, rd...)   uasm_i_mfc0(buf, rt, rd)
 
#define UASM_i_MTC0(buf, rt, rd...)   uasm_i_mtc0(buf, rt, rd)
 
#define UASM_i_ROTR(buf, rs, rt, sh)   uasm_i_rotr(buf, rs, rt, sh)
 
#define UASM_i_SC(buf, rs, rt, off)   uasm_i_sc(buf, rs, rt, off)
 
#define UASM_i_SLL(buf, rs, rt, sh)   uasm_i_sll(buf, rs, rt, sh)
 
#define UASM_i_SRA(buf, rs, rt, sh)   uasm_i_sra(buf, rs, rt, sh)
 
#define UASM_i_SRL(buf, rs, rt, sh)   uasm_i_srl(buf, rs, rt, sh)
 
#define UASM_i_SRL_SAFE(buf, rs, rt, sh)   uasm_i_srl(buf, rs, rt, sh)
 
#define UASM_i_SUBU(buf, rs, rt, rd)   uasm_i_subu(buf, rs, rt, rd)
 
#define UASM_i_SW(buf, rs, rt, off)   uasm_i_sw(buf, rs, rt, off)
 
#define uasm_i_b(buf, off)   uasm_i_beq(buf, 0, 0, off)
 
#define uasm_i_beqz(buf, rs, off)   uasm_i_beq(buf, rs, 0, off)
 
#define uasm_i_beqzl(buf, rs, off)   uasm_i_beql(buf, rs, 0, off)
 
#define uasm_i_bnez(buf, rs, off)   uasm_i_bne(buf, rs, 0, off)
 
#define uasm_i_bnezl(buf, rs, off)   uasm_i_bnel(buf, rs, 0, off)
 
#define uasm_i_ehb(buf)   uasm_i_sll(buf, 0, 0, 3)
 
#define uasm_i_move(buf, a, b)   UASM_i_ADDU(buf, a, 0, b)
 
#define uasm_i_nop(buf)   uasm_i_sll(buf, 0, 0, 0)
 
#define uasm_i_ssnop(buf)   uasm_i_sll(buf, 0, 0, 1)
 
#define UASM_LABEL_INVALID   0
 

Functions

 Ip_u2u1s3 (_addiu)
 
 Ip_u3u1u2 (_addu)
 
 Ip_u3u1u2 (_and)
 
 Ip_u2u1u3 (_andi)
 
 Ip_u1u2s3 (_bbit0)
 
 Ip_u1u2s3 (_bbit1)
 
 Ip_u1u2s3 (_beq)
 
 Ip_u1u2s3 (_beql)
 
 Ip_u1s2 (_bgez)
 
 Ip_u1s2 (_bgezl)
 
 Ip_u1s2 (_bltz)
 
 Ip_u1s2 (_bltzl)
 
 Ip_u1u2s3 (_bne)
 
 Ip_u2s3u1 (_cache)
 
 Ip_u2u1s3 (_daddiu)
 
 Ip_u3u1u2 (_daddu)
 
 Ip_u2u1msbu3 (_dins)
 
 Ip_u2u1msbu3 (_dinsm)
 
 Ip_u1u2u3 (_dmfc0)
 
 Ip_u1u2u3 (_dmtc0)
 
 Ip_u2u1u3 (_drotr)
 
 Ip_u2u1u3 (_drotr32)
 
 Ip_u2u1u3 (_dsll)
 
 Ip_u2u1u3 (_dsll32)
 
 Ip_u2u1u3 (_dsra)
 
 Ip_u2u1u3 (_dsrl)
 
 Ip_u2u1u3 (_dsrl32)
 
 Ip_u3u1u2 (_dsubu)
 
 Ip_0 (_eret)
 
 Ip_u2u1msbu3 (_ext)
 
 Ip_u2u1msbu3 (_ins)
 
 Ip_u1 (_j)
 
 Ip_u1 (_jal)
 
 Ip_u1 (_jr)
 
 Ip_u2s3u1 (_ld)
 
 Ip_u3u1u2 (_ldx)
 
 Ip_u2s3u1 (_ll)
 
 Ip_u2s3u1 (_lld)
 
 Ip_u1s2 (_lui)
 
 Ip_u2s3u1 (_lw)
 
 Ip_u3u1u2 (_lwx)
 
 Ip_u1u2u3 (_mfc0)
 
 Ip_u1u2u3 (_mtc0)
 
 Ip_u3u1u2 (_or)
 
 Ip_u2u1u3 (_ori)
 
 Ip_u2s3u1 (_pref)
 
 Ip_0 (_rfe)
 
 Ip_u2u1u3 (_rotr)
 
 Ip_u2s3u1 (_sc)
 
 Ip_u2s3u1 (_scd)
 
 Ip_u2s3u1 (_sd)
 
 Ip_u2u1u3 (_sll)
 
 Ip_u2u1u3 (_sra)
 
 Ip_u2u1u3 (_srl)
 
 Ip_u3u1u2 (_subu)
 
 Ip_u2s3u1 (_sw)
 
 Ip_u1 (_syscall)
 
 Ip_0 (_tlbp)
 
 Ip_0 (_tlbr)
 
 Ip_0 (_tlbwi)
 
 Ip_0 (_tlbwr)
 
 Ip_u3u1u2 (_xor)
 
 Ip_u2u1u3 (_xori)
 
void __uasminit uasm_build_label (struct uasm_label **lab, u32 *addr, int lid)
 
int uasm_rel_hi (long val)
 
int uasm_rel_lo (long val)
 
void UASM_i_LA_mostly (u32 **buf, unsigned int rs, long addr)
 
void UASM_i_LA (u32 **buf, unsigned int rs, long addr)
 
void uasm_r_mips_pc16 (struct uasm_reloc **rel, u32 *addr, int lid)
 
void uasm_resolve_relocs (struct uasm_reloc *rel, struct uasm_label *lab)
 
void uasm_move_relocs (struct uasm_reloc *rel, u32 *first, u32 *end, long off)
 
void uasm_move_labels (struct uasm_label *lab, u32 *first, u32 *end, long off)
 
void uasm_copy_handler (struct uasm_reloc *rel, struct uasm_label *lab, u32 *first, u32 *end, u32 *target)
 
int uasm_insn_has_bdelay (struct uasm_reloc *rel, u32 *addr)
 
void uasm_il_b (u32 **p, struct uasm_reloc **r, int lid)
 
void uasm_il_bbit0 (u32 **p, struct uasm_reloc **r, unsigned int reg, unsigned int bit, int lid)
 
void uasm_il_bbit1 (u32 **p, struct uasm_reloc **r, unsigned int reg, unsigned int bit, int lid)
 
void uasm_il_beqz (u32 **p, struct uasm_reloc **r, unsigned int reg, int lid)
 
void uasm_il_beqzl (u32 **p, struct uasm_reloc **r, unsigned int reg, int lid)
 
void uasm_il_bgezl (u32 **p, struct uasm_reloc **r, unsigned int reg, int lid)
 
void uasm_il_bgez (u32 **p, struct uasm_reloc **r, unsigned int reg, int lid)
 
void uasm_il_bltz (u32 **p, struct uasm_reloc **r, unsigned int reg, int lid)
 
void uasm_il_bne (u32 **p, struct uasm_reloc **r, unsigned int reg1, unsigned int reg2, int lid)
 
void uasm_il_bnez (u32 **p, struct uasm_reloc **r, unsigned int reg, int lid)
 

Macro Definition Documentation

#define __uasminit   __cpuinit

Definition at line 20 of file uasm.h.

#define __uasminitdata   __cpuinitdata

Definition at line 21 of file uasm.h.

#define Ip_0 (   op)    void __uasminit uasm_i##op(u32 **buf)

Definition at line 62 of file uasm.h.

#define Ip_u1 (   op)    void __uasminit uasm_i##op(u32 **buf, unsigned int a)

Definition at line 60 of file uasm.h.

#define Ip_u1s2 (   op)    void __uasminit uasm_i##op(u32 **buf, unsigned int a, signed int b)

Definition at line 57 of file uasm.h.

#define Ip_u1u2 (   op)    void __uasminit uasm_i##op(u32 **buf, unsigned int a, unsigned int b)

Definition at line 54 of file uasm.h.

#define Ip_u1u2s3 (   op)
Value:
void __uasminit \
uasm_i##op(u32 **buf, unsigned int a, unsigned int b, signed int c)

Definition at line 37 of file uasm.h.

#define Ip_u1u2u3 (   op)
Value:
void __uasminit \
uasm_i##op(u32 **buf, unsigned int a, unsigned int b, unsigned int c)

Definition at line 25 of file uasm.h.

#define Ip_u2s3u1 (   op)
Value:
void __uasminit \
uasm_i##op(u32 **buf, unsigned int a, signed int b, unsigned int c)

Definition at line 41 of file uasm.h.

#define Ip_u2u1msbu3 (   op)
Value:
void __uasminit \
uasm_i##op(u32 **buf, unsigned int a, unsigned int b, unsigned int c, \
unsigned int d)

Definition at line 49 of file uasm.h.

#define Ip_u2u1s3 (   op)
Value:
void __uasminit \
uasm_i##op(u32 **buf, unsigned int a, unsigned int b, signed int c)

Definition at line 45 of file uasm.h.

#define Ip_u2u1u3 (   op)
Value:
void __uasminit \
uasm_i##op(u32 **buf, unsigned int a, unsigned int b, unsigned int c)

Definition at line 29 of file uasm.h.

#define Ip_u3u1u2 (   op)
Value:
void __uasminit \
uasm_i##op(u32 **buf, unsigned int a, unsigned int b, unsigned int c)

Definition at line 33 of file uasm.h.

#define UASM_EXPORT_SYMBOL (   sym)

Definition at line 22 of file uasm.h.

#define UASM_i_ADDIU (   buf,
  rs,
  rt,
  val 
)    uasm_i_addiu(buf, rs, rt, val)

Definition at line 168 of file uasm.h.

#define UASM_i_ADDU (   buf,
  rs,
  rt,
  rd 
)    uasm_i_addu(buf, rs, rt, rd)

Definition at line 169 of file uasm.h.

#define uasm_i_b (   buf,
  off 
)    uasm_i_beq(buf, 0, 0, off)

Definition at line 185 of file uasm.h.

#define uasm_i_beqz (   buf,
  rs,
  off 
)    uasm_i_beq(buf, rs, 0, off)

Definition at line 186 of file uasm.h.

#define uasm_i_beqzl (   buf,
  rs,
  off 
)    uasm_i_beql(buf, rs, 0, off)

Definition at line 187 of file uasm.h.

#define uasm_i_bnez (   buf,
  rs,
  off 
)    uasm_i_bne(buf, rs, 0, off)

Definition at line 188 of file uasm.h.

#define uasm_i_bnezl (   buf,
  rs,
  off 
)    uasm_i_bnel(buf, rs, 0, off)

Definition at line 189 of file uasm.h.

#define uasm_i_ehb (   buf)    uasm_i_sll(buf, 0, 0, 3)

Definition at line 190 of file uasm.h.

#define UASM_i_LL (   buf,
  rs,
  rt,
  off 
)    uasm_i_ll(buf, rs, rt, off)

Definition at line 170 of file uasm.h.

#define UASM_i_LW (   buf,
  rs,
  rt,
  off 
)    uasm_i_lw(buf, rs, rt, off)

Definition at line 171 of file uasm.h.

#define UASM_i_LWX (   buf,
  rs,
  rt,
  rd 
)    uasm_i_lwx(buf, rs, rt, rd)

Definition at line 172 of file uasm.h.

#define UASM_i_MFC0 (   buf,
  rt,
  rd... 
)    uasm_i_mfc0(buf, rt, rd)

Definition at line 173 of file uasm.h.

#define uasm_i_move (   buf,
  a,
  b 
)    UASM_i_ADDU(buf, a, 0, b)

Definition at line 191 of file uasm.h.

#define UASM_i_MTC0 (   buf,
  rt,
  rd... 
)    uasm_i_mtc0(buf, rt, rd)

Definition at line 174 of file uasm.h.

#define uasm_i_nop (   buf)    uasm_i_sll(buf, 0, 0, 0)

Definition at line 192 of file uasm.h.

#define UASM_i_ROTR (   buf,
  rs,
  rt,
  sh 
)    uasm_i_rotr(buf, rs, rt, sh)

Definition at line 175 of file uasm.h.

#define UASM_i_SC (   buf,
  rs,
  rt,
  off 
)    uasm_i_sc(buf, rs, rt, off)

Definition at line 176 of file uasm.h.

#define UASM_i_SLL (   buf,
  rs,
  rt,
  sh 
)    uasm_i_sll(buf, rs, rt, sh)

Definition at line 177 of file uasm.h.

#define UASM_i_SRA (   buf,
  rs,
  rt,
  sh 
)    uasm_i_sra(buf, rs, rt, sh)

Definition at line 178 of file uasm.h.

#define UASM_i_SRL (   buf,
  rs,
  rt,
  sh 
)    uasm_i_srl(buf, rs, rt, sh)

Definition at line 179 of file uasm.h.

#define UASM_i_SRL_SAFE (   buf,
  rs,
  rt,
  sh 
)    uasm_i_srl(buf, rs, rt, sh)

Definition at line 180 of file uasm.h.

#define uasm_i_ssnop (   buf)    uasm_i_sll(buf, 0, 0, 1)

Definition at line 193 of file uasm.h.

#define UASM_i_SUBU (   buf,
  rs,
  rt,
  rd 
)    uasm_i_subu(buf, rs, rt, rd)

Definition at line 181 of file uasm.h.

#define UASM_i_SW (   buf,
  rs,
  rt,
  off 
)    uasm_i_sw(buf, rs, rt, off)

Definition at line 182 of file uasm.h.

#define UASM_L_LA (   lb)
Value:
static inline void __uasminit uasm_l##lb(struct uasm_label **lab, u32 *addr) \
{ \
uasm_build_label(lab, addr, label##lb); \
}

Definition at line 144 of file uasm.h.

#define UASM_LABEL_INVALID   0

Definition at line 230 of file uasm.h.

Function Documentation

Ip_0 ( _eret  )
Ip_0 ( _rfe  )
Ip_0 ( _tlbp  )
Ip_0 ( _tlbr  )
Ip_0 ( _tlbwi  )
Ip_0 ( _tlbwr  )
Ip_u1 ( _j  )
Ip_u1 ( _jal  )
Ip_u1 ( _jr  )
Ip_u1 ( _syscall  )
Ip_u1s2 ( _bgez  )
Ip_u1s2 ( _bgezl  )
Ip_u1s2 ( _bltz  )
Ip_u1s2 ( _bltzl  )
Ip_u1s2 ( _lui  )
Ip_u1u2s3 ( _bbit0  )
Ip_u1u2s3 ( _bbit1  )
Ip_u1u2s3 ( _beq  )
Ip_u1u2s3 ( _beql  )
Ip_u1u2s3 ( _bne  )
Ip_u1u2u3 ( _dmfc0  )
Ip_u1u2u3 ( _dmtc0  )
Ip_u1u2u3 ( _mfc0  )
Ip_u1u2u3 ( _mtc0  )
Ip_u2s3u1 ( _cache  )
Ip_u2s3u1 ( _ld  )
Ip_u2s3u1 ( _ll  )
Ip_u2s3u1 ( _lld  )
Ip_u2s3u1 ( _lw  )
Ip_u2s3u1 ( _pref  )
Ip_u2s3u1 ( _sc  )
Ip_u2s3u1 ( _scd  )
Ip_u2s3u1 ( _sd  )
Ip_u2s3u1 ( _sw  )
Ip_u2u1msbu3 ( _dins  )
Ip_u2u1msbu3 ( _dinsm  )
Ip_u2u1msbu3 ( _ext  )
Ip_u2u1msbu3 ( _ins  )
Ip_u2u1s3 ( _addiu  )
Ip_u2u1s3 ( _daddiu  )
Ip_u2u1u3 ( _andi  )
Ip_u2u1u3 ( _drotr  )
Ip_u2u1u3 ( _drotr32  )
Ip_u2u1u3 ( _dsll  )
Ip_u2u1u3 ( _dsll32  )
Ip_u2u1u3 ( _dsra  )
Ip_u2u1u3 ( _dsrl  )
Ip_u2u1u3 ( _dsrl32  )
Ip_u2u1u3 ( _ori  )
Ip_u2u1u3 ( _rotr  )
Ip_u2u1u3 ( _sll  )
Ip_u2u1u3 ( _sra  )
Ip_u2u1u3 ( _srl  )
Ip_u2u1u3 ( _xori  )
Ip_u3u1u2 ( _addu  )
Ip_u3u1u2 ( _and  )
Ip_u3u1u2 ( _daddu  )
Ip_u3u1u2 ( _dsubu  )
Ip_u3u1u2 ( _ldx  )
Ip_u3u1u2 ( _lwx  )
Ip_u3u1u2 ( _or  )
Ip_u3u1u2 ( _subu  )
Ip_u3u1u2 ( _xor  )
void __uasminit uasm_build_label ( struct uasm_label **  lab,
u32 addr,
int  lid 
)
void uasm_copy_handler ( struct uasm_reloc rel,
struct uasm_label lab,
u32 first,
u32 end,
u32 target 
)

Definition at line 603 of file uasm.c.

void UASM_i_LA ( u32 **  buf,
unsigned int  rs,
long  addr 
)

Definition at line 532 of file uasm.c.

void UASM_i_LA_mostly ( u32 **  buf,
unsigned int  rs,
long  addr 
)

Definition at line 515 of file uasm.c.

void uasm_il_b ( u32 **  p,
struct uasm_reloc **  r,
int  lid 
)

Definition at line 638 of file uasm.c.

void uasm_il_bbit0 ( u32 **  p,
struct uasm_reloc **  r,
unsigned int  reg,
unsigned int  bit,
int  lid 
)

Definition at line 695 of file uasm.c.

void uasm_il_bbit1 ( u32 **  p,
struct uasm_reloc **  r,
unsigned int  reg,
unsigned int  bit,
int  lid 
)

Definition at line 704 of file uasm.c.

void uasm_il_beqz ( u32 **  p,
struct uasm_reloc **  r,
unsigned int  reg,
int  lid 
)

Definition at line 646 of file uasm.c.

void uasm_il_beqzl ( u32 **  p,
struct uasm_reloc **  r,
unsigned int  reg,
int  lid 
)

Definition at line 654 of file uasm.c.

void uasm_il_bgez ( u32 **  p,
struct uasm_reloc **  r,
unsigned int  reg,
int  lid 
)

Definition at line 687 of file uasm.c.

void uasm_il_bgezl ( u32 **  p,
struct uasm_reloc **  r,
unsigned int  reg,
int  lid 
)

Definition at line 679 of file uasm.c.

void uasm_il_bltz ( u32 **  p,
struct uasm_reloc **  r,
unsigned int  reg,
int  lid 
)

Definition at line 630 of file uasm.c.

void uasm_il_bne ( u32 **  p,
struct uasm_reloc **  r,
unsigned int  reg1,
unsigned int  reg2,
int  lid 
)

Definition at line 662 of file uasm.c.

void uasm_il_bnez ( u32 **  p,
struct uasm_reloc **  r,
unsigned int  reg,
int  lid 
)

Definition at line 671 of file uasm.c.

int uasm_insn_has_bdelay ( struct uasm_reloc rel,
u32 addr 
)

Definition at line 615 of file uasm.c.

void uasm_move_labels ( struct uasm_label lab,
u32 first,
u32 end,
long  off 
)

Definition at line 594 of file uasm.c.

void uasm_move_relocs ( struct uasm_reloc rel,
u32 first,
u32 end,
long  off 
)

Definition at line 585 of file uasm.c.

void uasm_r_mips_pc16 ( struct uasm_reloc **  rel,
u32 addr,
int  lid 
)

Definition at line 546 of file uasm.c.

int uasm_rel_hi ( long  val)

Definition at line 503 of file uasm.c.

int uasm_rel_lo ( long  val)

Definition at line 509 of file uasm.c.

void uasm_resolve_relocs ( struct uasm_reloc rel,
struct uasm_label lab 
)

Definition at line 573 of file uasm.c.