OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [gen_or1k_isa/] [sources/] [or1k_isadesc.h] - Diff between revs 1108 and 1113

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 1108 Rev 1113
Line 1... Line 1...
/* Information about OR1K ISA. W/o this we can't generate or1k_isa_part.tex.
/* Information about OR1K ISA. W/o this we can't generate or1k_isa_part.tex.
 
*
 
* $Log: not supported by cvs2svn $
*/
*/
 
 
struct or1k_isa {
struct or1k_isa {
        char *name;
        char *name;
        char *title;
        char *title;
Line 181... Line 183...
        "register rA. The sum represents an effective address. The byte in memory "
        "register rA. The sum represents an effective address. The byte in memory "
        "addressed by EA is loaded into the low-order eight bits of "
        "addressed by EA is loaded into the low-order eight bits of "
        "general-purpose register rD. "
        "general-purpose register rD. "
        "High-order bits of general-purpose register rD are replaced with "
        "High-order bits of general-purpose register rD are replaced with "
        "bit 7 of the loaded value.",
        "bit 7 of the loaded value.",
        "EA <- exts(Immediate) + rA[31:0]\\rD[7:0] <- (EA)[7:0]\\rD[31:8] <- \{rD[7]\}",
        "EA <- exts(Immediate) + rA[31:0]\\rD[7:0] <- (EA)[7:0]\\rD[31:8] <- (EA)[7]",
        "EA <- exts(Immediate) + rA[63:0]\\rD[7:0] <- (EA)[7:0]\\rD[63:8] <- \{rD[7]\}",
        "EA <- exts(Immediate) + rA[63:0]\\rD[7:0] <- (EA)[7:0]\\rD[63:8] <- (EA)[7]",
        "TLB miss\\Page fault\\Bus error\\Alignment", ORBIS32I,},
        "TLB miss\\Page fault\\Bus error\\Alignment", ORBIS32I,},
 
 
{"l.lhs", "Load Half Word and Extend with Sign",
{"l.lhs", "Load Half Word and Extend with Sign",
        "The offset is sign-extended and added to the contents of general-purpose "
        "The offset is sign-extended and added to the contents of general-purpose "
        "register rA. The sum represents an effective address. The half word in memory "
        "register rA. The sum represents an effective address. The half word in memory "
        "addressed by EA is loaded into the low-order 16 bits of "
        "addressed by EA is loaded into the low-order 16 bits of "
        "general-purpose register rD. "
        "general-purpose register rD. "
        "High-order bits of general-purpose register rD are replaced with "
        "High-order bits of general-purpose register rD are replaced with "
        "bit 15 of the loaded value.",
        "bit 15 of the loaded value.",
        "EA <- exts(Immediate) + rA[31:0]\\rD[15:0] <- (EA)[15:0]\\rD[31:16] <- \{rD[15]\}",
        "EA <- exts(Immediate) + rA[31:0]\\rD[15:0] <- (EA)[15:0]\\rD[31:16] <- (EA)[15]",
        "EA <- exts(Immediate) + rA[63:0]\\rD[15:0] <- (EA)[15:0]\\rD[63:16] <- \{rD[15]\}",
        "EA <- exts(Immediate) + rA[63:0]\\rD[15:0] <- (EA)[15:0]\\rD[63:16] <- (EA)[15]",
        "TLB miss\\Page fault\\Bus error\\Alignment", ORBIS32I,},
        "TLB miss\\Page fault\\Bus error\\Alignment", ORBIS32I,},
 
 
{"l.lws", "Load Single Word and Extend with Sign",
{"l.lws", "Load Single Word and Extend with Sign",
        "The offset is sign-extended and added to the contents of general-purpose "
        "The offset is sign-extended and added to the contents of general-purpose "
        "register rA. The sum represents an effective address. The single word in memory "
        "register rA. The sum represents an effective address. The single word in memory "
        "addressed by EA is loaded into the low-order 32 bits of "
        "addressed by EA is loaded into the low-order 32 bits of "
        "general-purpose register rD. "
        "general-purpose register rD. "
        "High-order bits of general-purpose register rD are replaced with "
        "High-order bits of general-purpose register rD are replaced with "
        "bit 31 of the loaded value.",
        "bit 31 of the loaded value.",
        "EA <- exts(Immediate) + rA[31:0]\\rD[31:0] <- (EA)[31:0]",
        "EA <- exts(Immediate) + rA[31:0]\\rD[31:0] <- (EA)[31:0]",
        "EA <- exts(Immediate) + rA[63:0]\\rD[31:0] <- (EA)[31:0]\\rD[63:32] <- \{rD[31]\}",
        "EA <- exts(Immediate) + rA[63:0]\\rD[31:0] <- (EA)[31:0]\\rD[63:32] <- (EA)[31]",
        "TLB miss\\Page fault\\Bus error\\Alignment", ORBIS32I,},
        "TLB miss\\Page fault\\Bus error\\Alignment", ORBIS32I,},
 
 
{"l.lbz", "Load Byte and Extend with Zero",
{"l.lbz", "Load Byte and Extend with Zero",
        "The offset is sign-extended and added to the contents of general-purpose "
        "The offset is sign-extended and added to the contents of general-purpose "
        "register rA. The sum represents an effective address. The byte in memory "
        "register rA. The sum represents an effective address. The byte in memory "
Line 631... Line 633...
        "None", ORBIS32II,},
        "None", ORBIS32II,},
 
 
{"l.mtspr", "Move To Special-Purpose Register",
{"l.mtspr", "Move To Special-Purpose Register",
        "The contents of general-purpose register rB are moved into the special register "
        "The contents of general-purpose register rB are moved into the special register "
        "identified by the sum of general-purpose register rA and the immediate value.",
        "identified by the sum of general-purpose register rA and the immediate value.",
        "spr(rA+Immediate) <- rB[31:0]",
        "spr(rA OR Immediate) <- rB[31:0]",
        "spr(rA+Immediate) <- rB[31:0]",
        "spr(rA OR Immediate) <- rB[31:0]",
        "None", ORBIS32I,},
        "None", ORBIS32I,},
 
 
{"l.mfspr", "Move From Special-Purpose Register",
{"l.mfspr", "Move From Special-Purpose Register",
        "The contents of the special register are identified by the sum of general-purpose rA, and "
        "The contents of the special register are identified by the sum of general-purpose rA, and "
        "the immediate value are moved into general-purpose register rD.",
        "the immediate value are moved into general-purpose register rD.",
        "rD[31:0] <- spr(rA+Immediate)",
        "rD[31:0] <- spr(rA OR Immediate)",
        "rD[63:0] <- spr(rA+Immediate)",
        "rD[63:0] <- spr(rA OR Immediate)",
        "None", ORBIS32I,},
        "None", ORBIS32I,},
 
 
{"l.nop", "No Operation",
{"l.nop", "No Operation",
        "This instruction does not do anything except that it takes at least one "
        "This instruction does not do anything except that it takes at least one "
        "clock cycle to complete. It is often used to fill delay slot gaps."
        "clock cycle to complete. It is often used to fill delay slot gaps."
Line 659... Line 661...
        "rD[63:0] <- extz(Immediate) << 16",
        "rD[63:0] <- extz(Immediate) << 16",
        "None", ORBIS32I,},
        "None", ORBIS32I,},
 
 
{"l.bf", "Branch if Flag",
{"l.bf", "Branch if Flag",
        "The immediate value is shifted left two bits, sign-extended to "
        "The immediate value is shifted left two bits, sign-extended to "
        "program counter width, and then added to the address of the delay slot. The result "
        "program counter width, and then added to the address of the branch instruction. The result "
        "is the effective address of the branch. If the flag is set, "
        "is the effective address of the branch. If the flag is set, "
        "the program branches "
        "the program branches "
        "to EA with a delay of one instruction.",
        "to EA with a delay of one instruction.",
        "EA <- exts(Immediate << 2) + DelayInsnAddr\\PC <- EA if SR[F] set",
        "EA <- exts(Immediate << 2) + BranchInsnAddr\\PC <- EA if SR[F] set",
        "EA <- exts(Immediate << 2) + DelayInsnAddr\\PC <- EA if SR[F] set",
        "EA <- exts(Immediate << 2) + BranchInsnAddr\\PC <- EA if SR[F] set",
        "None", ORBIS32I,},
        "None", ORBIS32I,},
 
 
{"l.bnf", "Branch if No Flag",
{"l.bnf", "Branch if No Flag",
        "The immediate value is shifted left two bits, sign-extended to "
        "The immediate value is shifted left two bits, sign-extended to "
        "program counter width, and then added to the address of the delay slot. The result "
        "program counter width, and then added to the address of the branch instruction. The result "
        "is the effective address of the branch. If the flag is cleared, "
        "is the effective address of the branch. If the flag is cleared, "
        "the program branches "
        "the program branches "
        "to EA with a delay of one instruction.",
        "to EA with a delay of one instruction.",
        "EA <- exts(Immediate << 2) + DelayInsnAddr\\PC <- EA if SR[F] cleared",
        "EA <- exts(Immediate << 2) + BranchInsnAddr\\PC <- EA if SR[F] cleared",
        "EA <- exts(Immediate << 2) + DelayInsnAddr\\PC <- EA if SR[F] cleared",
        "EA <- exts(Immediate << 2) + BranchInsnAddr\\PC <- EA if SR[F] cleared",
        "None", ORBIS32I,},
        "None", ORBIS32I,},
 
 
{"l.jal", "Jump and Link",
{"l.jal", "Jump and Link",
        "The immediate value is shifted left two bits, sign-extended to "
        "The immediate value is shifted left two bits, sign-extended to "
        "program counter width, and then added to the address of the delay slot. The result "
        "program counter width, and then added to the address of the jump instruction. The result "
        "is the effective address of the jump. The program unconditionally jumps "
        "is the effective address of the jump. The program unconditionally jumps "
        "to EA with a delay of one instruction. The "
        "to EA with a delay of one instruction. The "
        "address of the instruction after the delay slot is placed in the "
        "address of the instruction after the delay slot is placed in the "
        "link register. ",
        "link register. ",
        "PC <- exts(Immediate << 2) + DelayInsnAddr\\LR <- DelayInsnAddr + 4",
        "PC <- exts(Immediate << 2) + JumpInsnAddr\\LR <- DelayInsnAddr + 4",
        "PC <- exts(Immediate << 2) + DelayInsnAddr\\LR <- DelayInsnAddr + 4",
        "PC <- exts(Immediate << 2) + JumpInsnAddr\\LR <- DelayInsnAddr + 4",
        "None", ORBIS32I,},
        "None", ORBIS32I,},
 
 
{"l.j", "Jump",
{"l.j", "Jump",
        "The immediate value is shifted left two bits, sign-extended to "
        "The immediate value is shifted left two bits, sign-extended to "
        "program counter width, and then added to the address of the delay slot. The result "
        "program counter width, and then added to the address of the jump instruction. The result "
        "is the effective address of the jump. The program unconditionally jumps "
        "is the effective address of the jump. The program unconditionally jumps "
        "to EA with a delay of one instruction.",
        "to EA with a delay of one instruction.",
        "PC <- exts(Immediate << 2) + DelayInsnAddr\\LR <- DelayInsnAddr + 4",
        "PC <- exts(Immediate << 2) + JumpInsnAddr\\LR <- DelayInsnAddr + 4",
        "PC <- exts(Immediate << 2) + DelayInsnAddr\\LR <- DelayInsnAddr + 4",
        "PC <- exts(Immediate << 2) + JumpInsnAddr\\LR <- DelayInsnAddr + 4",
        "None", ORBIS32I,},
        "None", ORBIS32I,},
 
 
{"l.jalr", "Jump and Link Register",
{"l.jalr", "Jump and Link Register",
        "The contents of general-purpose register rB "
        "The contents of general-purpose register rB "
        "is the effective address of the jump. The program unconditionally jumps "
        "is the effective address of the jump. The program unconditionally jumps "
Line 718... Line 720...
        "None", ORBIS32I,},
        "None", ORBIS32I,},
 
 
{"l.sys", "System Call",
{"l.sys", "System Call",
        "Execution of the system call instruction results in the system call "
        "Execution of the system call instruction results in the system call "
        "exception. The system calls exception is a request to the operating system "
        "exception. The system calls exception is a request to the operating system "
        "to provide operating system services. The immediate value specifies which system service "
        "to provide operating system services. The immediate value can be used to "
        "is required.",
        "specify which system service is requested, alternatively a GPR defined by "
        "system-call-exception()",
        "the ABI can be used to specify system service.",
        "system-call-exception()",
        "system-call-exception(K)",
 
        "system-call-exception(K)",
        "System Call", ORBIS32I,},
        "System Call", ORBIS32I,},
 
 
{"l.msync", "Memory Syncronization",
{"l.msync", "Memory Syncronization",
        "Execution of the memory synchronization instruction results in completion "
        "Execution of the memory synchronization instruction results in completion "
        "of all load/store operations before the RISC core continues.",
        "of all load/store operations before the RISC core continues.",

powered by: WebSVN 2.1.0

© copyright 1999-2025 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.