CGEN_KEYWORD_ENTRY fr30_cgen_opval_h_gr_entries[] = 
 {
-  { "ac", 13 },
-  { "fp", 14 },
-  { "sp", 15 },
   { "r0", 0 },
   { "r1", 1 },
   { "r2", 2 },
   { "r12", 12 },
   { "r13", 13 },
   { "r14", 14 },
-  { "r15", 15 }
+  { "r15", 15 },
+  { "ac", 13 },
+  { "fp", 14 },
+  { "sp", 15 }
 };
 
 CGEN_KEYWORD fr30_cgen_opval_h_gr = 
   { HW_H_VBIT, & HW_ENT (HW_H_VBIT + 1), "h-vbit", CGEN_ASM_KEYWORD, (PTR) 0, { 0, 0, { 0 } } },
   { HW_H_CBIT, & HW_ENT (HW_H_CBIT + 1), "h-cbit", CGEN_ASM_KEYWORD, (PTR) 0, { 0, 0, { 0 } } },
   { HW_H_IBIT, & HW_ENT (HW_H_IBIT + 1), "h-ibit", CGEN_ASM_KEYWORD, (PTR) 0, { 0, 0, { 0 } } },
-  { HW_H_SBIT, & HW_ENT (HW_H_SBIT + 1), "h-sbit", CGEN_ASM_KEYWORD, (PTR) 0, { 0, 0, { 0 } } },
+  { HW_H_SBIT, & HW_ENT (HW_H_SBIT + 1), "h-sbit", CGEN_ASM_KEYWORD, (PTR) 0, { 0, 0|(1<<CGEN_HW_FUN_ACCESS), { 0 } } },
   { HW_H_TBIT, & HW_ENT (HW_H_TBIT + 1), "h-tbit", CGEN_ASM_KEYWORD, (PTR) 0, { 0, 0, { 0 } } },
   { HW_H_D0BIT, & HW_ENT (HW_H_D0BIT + 1), "h-d0bit", CGEN_ASM_KEYWORD, (PTR) 0, { 0, 0, { 0 } } },
   { HW_H_D1BIT, & HW_ENT (HW_H_D1BIT + 1), "h-d1bit", CGEN_ASM_KEYWORD, (PTR) 0, { 0, 0, { 0 } } },
   { 0 }
 };
 
+static const CGEN_OPERAND_INSTANCE fmt_ldres_ops[] = {
+  { INPUT, "Ri", & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (RI), 0, 0 },
+  { OUTPUT, "Ri", & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (RI), 0, 0 },
+  { 0 }
+};
+
 static const CGEN_OPERAND_INSTANCE fmt_andccr_ops[] = {
   { INPUT, "ccr", & HW_ENT (HW_H_CCR), CGEN_MODE_UQI, 0, 0, 0 },
   { INPUT, "u8", & HW_ENT (HW_H_UINT), CGEN_MODE_USI, & OP_ENT (U8), 0, 0 },
     { { MNEM, ' ', OP (RJ), ',', '@', OP (RI), 0 } },
     & fmt_andm, { 0x8400 },
     (PTR) & fmt_andm_ops[0],
-    { 0, 0, { 0 } }
+    { 0, 0|A(NOT_IN_DELAY_SLOT), { 0 } }
   },
 /* andh $Rj,@$Ri */
   {
     { { MNEM, ' ', OP (RJ), ',', '@', OP (RI), 0 } },
     & fmt_andh, { 0x8500 },
     (PTR) & fmt_andh_ops[0],
-    { 0, 0, { 0 } }
+    { 0, 0|A(NOT_IN_DELAY_SLOT), { 0 } }
   },
 /* andb $Rj,@$Ri */
   {
     { { MNEM, ' ', OP (RJ), ',', '@', OP (RI), 0 } },
     & fmt_andb, { 0x8600 },
     (PTR) & fmt_andb_ops[0],
-    { 0, 0, { 0 } }
+    { 0, 0|A(NOT_IN_DELAY_SLOT), { 0 } }
   },
 /* or $Rj,@$Ri */
   {
     { { MNEM, ' ', OP (RJ), ',', '@', OP (RI), 0 } },
     & fmt_andm, { 0x9400 },
     (PTR) & fmt_andm_ops[0],
-    { 0, 0, { 0 } }
+    { 0, 0|A(NOT_IN_DELAY_SLOT), { 0 } }
   },
 /* orh $Rj,@$Ri */
   {
     { { MNEM, ' ', OP (RJ), ',', '@', OP (RI), 0 } },
     & fmt_andh, { 0x9500 },
     (PTR) & fmt_andh_ops[0],
-    { 0, 0, { 0 } }
+    { 0, 0|A(NOT_IN_DELAY_SLOT), { 0 } }
   },
 /* orb $Rj,@$Ri */
   {
     { { MNEM, ' ', OP (RJ), ',', '@', OP (RI), 0 } },
     & fmt_andb, { 0x9600 },
     (PTR) & fmt_andb_ops[0],
-    { 0, 0, { 0 } }
+    { 0, 0|A(NOT_IN_DELAY_SLOT), { 0 } }
   },
 /* eor $Rj,@$Ri */
   {
     { { MNEM, ' ', OP (RJ), ',', '@', OP (RI), 0 } },
     & fmt_andm, { 0x9c00 },
     (PTR) & fmt_andm_ops[0],
-    { 0, 0, { 0 } }
+    { 0, 0|A(NOT_IN_DELAY_SLOT), { 0 } }
   },
 /* eorh $Rj,@$Ri */
   {
     { { MNEM, ' ', OP (RJ), ',', '@', OP (RI), 0 } },
     & fmt_andh, { 0x9d00 },
     (PTR) & fmt_andh_ops[0],
-    { 0, 0, { 0 } }
+    { 0, 0|A(NOT_IN_DELAY_SLOT), { 0 } }
   },
 /* eorb $Rj,@$Ri */
   {
     { { MNEM, ' ', OP (RJ), ',', '@', OP (RI), 0 } },
     & fmt_andb, { 0x9e00 },
     (PTR) & fmt_andb_ops[0],
-    { 0, 0, { 0 } }
+    { 0, 0|A(NOT_IN_DELAY_SLOT), { 0 } }
   },
 /* bandl $u4,@$Ri */
   {
     { { MNEM, ' ', OP (U4), ',', '@', OP (RI), 0 } },
     & fmt_bandl, { 0x8000 },
     (PTR) & fmt_bandl_ops[0],
-    { 0, 0, { 0 } }
+    { 0, 0|A(NOT_IN_DELAY_SLOT), { 0 } }
   },
 /* borl $u4,@$Ri */
   {
     { { MNEM, ' ', OP (U4), ',', '@', OP (RI), 0 } },
     & fmt_bandl, { 0x9000 },
     (PTR) & fmt_bandl_ops[0],
-    { 0, 0, { 0 } }
+    { 0, 0|A(NOT_IN_DELAY_SLOT), { 0 } }
   },
 /* beorl $u4,@$Ri */
   {
     { { MNEM, ' ', OP (U4), ',', '@', OP (RI), 0 } },
     & fmt_bandl, { 0x9800 },
     (PTR) & fmt_bandl_ops[0],
-    { 0, 0, { 0 } }
+    { 0, 0|A(NOT_IN_DELAY_SLOT), { 0 } }
   },
 /* bandh $u4,@$Ri */
   {
     { { MNEM, ' ', OP (U4), ',', '@', OP (RI), 0 } },
     & fmt_bandl, { 0x8100 },
     (PTR) & fmt_bandl_ops[0],
-    { 0, 0, { 0 } }
+    { 0, 0|A(NOT_IN_DELAY_SLOT), { 0 } }
   },
 /* borh $u4,@$Ri */
   {
     { { MNEM, ' ', OP (U4), ',', '@', OP (RI), 0 } },
     & fmt_bandl, { 0x9100 },
     (PTR) & fmt_bandl_ops[0],
-    { 0, 0, { 0 } }
+    { 0, 0|A(NOT_IN_DELAY_SLOT), { 0 } }
   },
 /* beorh $u4,@$Ri */
   {
     { { MNEM, ' ', OP (U4), ',', '@', OP (RI), 0 } },
     & fmt_bandl, { 0x9900 },
     (PTR) & fmt_bandl_ops[0],
-    { 0, 0, { 0 } }
+    { 0, 0|A(NOT_IN_DELAY_SLOT), { 0 } }
   },
 /* btstl $u4,@$Ri */
   {
     { { MNEM, ' ', OP (U4), ',', '@', OP (RI), 0 } },
     & fmt_btstl, { 0x8800 },
     (PTR) & fmt_btstl_ops[0],
-    { 0, 0, { 0 } }
+    { 0, 0|A(NOT_IN_DELAY_SLOT), { 0 } }
   },
 /* btsth $u4,@$Ri */
   {
     { { MNEM, ' ', OP (U4), ',', '@', OP (RI), 0 } },
     & fmt_btstl, { 0x8900 },
     (PTR) & fmt_btstl_ops[0],
-    { 0, 0, { 0 } }
+    { 0, 0|A(NOT_IN_DELAY_SLOT), { 0 } }
   },
 /* mul $Rj,$Ri */
   {
     { { MNEM, ' ', OP (RJ), ',', OP (RI), 0 } },
     & fmt_mul, { 0xaf00 },
     (PTR) & fmt_mul_ops[0],
-    { 0, 0, { 0 } }
+    { 0, 0|A(NOT_IN_DELAY_SLOT), { 0 } }
   },
 /* mulu $Rj,$Ri */
   {
     { { MNEM, ' ', OP (RJ), ',', OP (RI), 0 } },
     & fmt_mulu, { 0xab00 },
     (PTR) & fmt_mulu_ops[0],
-    { 0, 0, { 0 } }
+    { 0, 0|A(NOT_IN_DELAY_SLOT), { 0 } }
   },
 /* mulh $Rj,$Ri */
   {
     { { MNEM, ' ', OP (RJ), ',', OP (RI), 0 } },
     & fmt_mulh, { 0xbf00 },
     (PTR) & fmt_mulh_ops[0],
-    { 0, 0, { 0 } }
+    { 0, 0|A(NOT_IN_DELAY_SLOT), { 0 } }
   },
 /* muluh $Rj,$Ri */
   {
     { { MNEM, ' ', OP (RJ), ',', OP (RI), 0 } },
     & fmt_mulh, { 0xbb00 },
     (PTR) & fmt_mulh_ops[0],
-    { 0, 0, { 0 } }
+    { 0, 0|A(NOT_IN_DELAY_SLOT), { 0 } }
   },
 /* div0s $Ri */
   {
     { { MNEM, ' ', OP (I32), ',', OP (RI), 0 } },
     & fmt_ldi32, { 0x9f80 },
     (PTR) & fmt_ldi32_ops[0],
-    { 0, 0, { 0 } }
+    { 0, 0|A(NOT_IN_DELAY_SLOT), { 0 } }
   },
 /* ld @$Rj,$Ri */
   {
     { { MNEM, ' ', '@', OP (R15), '+', ',', OP (PS), 0 } },
     & fmt_ldr15ps, { 0x790 },
     (PTR) & fmt_ldr15ps_ops[0],
-    { 0, 0, { 0 } }
+    { 0, 0|A(NOT_IN_DELAY_SLOT), { 0 } }
   },
 /* st $Ri,@$Rj */
   {
     { { MNEM, ' ', '@', OP (RI), 0 } },
     & fmt_jmp, { 0x9700 },
     (PTR) & fmt_jmp_ops[0],
-    { 0, 0|A(UNCOND_CTI), { 0 } }
+    { 0, 0|A(NOT_IN_DELAY_SLOT)|A(UNCOND_CTI), { 0 } }
   },
 /* jmp:d @$Ri */
   {
     { { MNEM, ' ', '@', OP (RI), 0 } },
     & fmt_callr, { 0x9710 },
     (PTR) & fmt_callr_ops[0],
-    { 0, 0|A(UNCOND_CTI), { 0 } }
+    { 0, 0|A(NOT_IN_DELAY_SLOT)|A(UNCOND_CTI), { 0 } }
   },
 /* call:d @$Ri */
   {
     { { MNEM, ' ', '@', OP (RI), 0 } },
     & fmt_callr, { 0x9f10 },
     (PTR) & fmt_callr_ops[0],
-    { 0, 0|A(DELAY_SLOT)|A(UNCOND_CTI), { 0 } }
+    { 0, 0|A(NOT_IN_DELAY_SLOT)|A(DELAY_SLOT)|A(UNCOND_CTI), { 0 } }
   },
 /* call $label12 */
   {
     { { MNEM, ' ', OP (LABEL12), 0 } },
     & fmt_call, { 0xd000 },
     (PTR) & fmt_call_ops[0],
-    { 0, 0|A(UNCOND_CTI), { 0 } }
+    { 0, 0|A(NOT_IN_DELAY_SLOT)|A(UNCOND_CTI), { 0 } }
   },
 /* call:d $label12 */
   {
     { { MNEM, ' ', OP (LABEL12), 0 } },
     & fmt_call, { 0xd800 },
     (PTR) & fmt_call_ops[0],
-    { 0, 0|A(DELAY_SLOT)|A(UNCOND_CTI), { 0 } }
+    { 0, 0|A(NOT_IN_DELAY_SLOT)|A(DELAY_SLOT)|A(UNCOND_CTI), { 0 } }
   },
 /* ret */
   {
     { { MNEM, 0 } },
     & fmt_ret, { 0x9720 },
     (PTR) & fmt_ret_ops[0],
-    { 0, 0|A(UNCOND_CTI), { 0 } }
+    { 0, 0|A(NOT_IN_DELAY_SLOT)|A(UNCOND_CTI), { 0 } }
   },
 /* ret:d */
   {
     { { MNEM, 0 } },
     & fmt_ret, { 0x9f20 },
     (PTR) & fmt_ret_ops[0],
-    { 0, 0|A(DELAY_SLOT)|A(UNCOND_CTI), { 0 } }
+    { 0, 0|A(NOT_IN_DELAY_SLOT)|A(DELAY_SLOT)|A(UNCOND_CTI), { 0 } }
   },
 /* int $u8 */
   {
     { { MNEM, ' ', OP (U8), 0 } },
     & fmt_int, { 0x1f00 },
     (PTR) & fmt_int_ops[0],
-    { 0, 0|A(UNCOND_CTI), { 0 } }
+    { 0, 0|A(NOT_IN_DELAY_SLOT)|A(UNCOND_CTI), { 0 } }
   },
 /* inte */
   {
     { { MNEM, 0 } },
     & fmt_inte, { 0x9f30 },
     (PTR) & fmt_inte_ops[0],
-    { 0, 0|A(UNCOND_CTI), { 0 } }
+    { 0, 0|A(NOT_IN_DELAY_SLOT)|A(UNCOND_CTI), { 0 } }
   },
 /* reti */
   {
     { { MNEM, 0 } },
     & fmt_reti, { 0x9730 },
     (PTR) & fmt_reti_ops[0],
-    { 0, 0|A(COND_CTI)|A(COND_CTI), { 0 } }
+    { 0, 0|A(NOT_IN_DELAY_SLOT)|A(COND_CTI)|A(COND_CTI), { 0 } }
   },
 /* bra:d $label9 */
   {
     { { MNEM, ' ', '@', OP (R13), '+', ',', '@', OP (DIR10), 0 } },
     & fmt_dmovr13pi, { 0x1c00 },
     (PTR) & fmt_dmovr13pi_ops[0],
-    { 0, 0, { 0 } }
+    { 0, 0|A(NOT_IN_DELAY_SLOT), { 0 } }
   },
 /* dmovh @$R13+,@$dir9 */
   {
     { { MNEM, ' ', '@', OP (R13), '+', ',', '@', OP (DIR9), 0 } },
     & fmt_dmovr13pih, { 0x1d00 },
     (PTR) & fmt_dmovr13pih_ops[0],
-    { 0, 0, { 0 } }
+    { 0, 0|A(NOT_IN_DELAY_SLOT), { 0 } }
   },
 /* dmovb @$R13+,@$dir8 */
   {
     { { MNEM, ' ', '@', OP (R13), '+', ',', '@', OP (DIR8), 0 } },
     & fmt_dmovr13pib, { 0x1e00 },
     (PTR) & fmt_dmovr13pib_ops[0],
-    { 0, 0, { 0 } }
+    { 0, 0|A(NOT_IN_DELAY_SLOT), { 0 } }
   },
 /* dmov @$R15+,@$dir10 */
   {
     { { MNEM, ' ', '@', OP (R15), '+', ',', '@', OP (DIR10), 0 } },
     & fmt_dmovr15pi, { 0x1b00 },
     (PTR) & fmt_dmovr15pi_ops[0],
-    { 0, 0, { 0 } }
+    { 0, 0|A(NOT_IN_DELAY_SLOT), { 0 } }
   },
 /* dmov @$dir10,$R13 */
   {
     { { MNEM, ' ', '@', OP (DIR10), ',', '@', OP (R13), '+', 0 } },
     & fmt_dmov2r13pi, { 0xc00 },
     (PTR) & fmt_dmov2r13pi_ops[0],
-    { 0, 0, { 0 } }
+    { 0, 0|A(NOT_IN_DELAY_SLOT), { 0 } }
   },
 /* dmovh @$dir9,@$R13+ */
   {
     { { MNEM, ' ', '@', OP (DIR9), ',', '@', OP (R13), '+', 0 } },
     & fmt_dmov2r13pih, { 0xd00 },
     (PTR) & fmt_dmov2r13pih_ops[0],
-    { 0, 0, { 0 } }
+    { 0, 0|A(NOT_IN_DELAY_SLOT), { 0 } }
   },
 /* dmovb @$dir8,@$R13+ */
   {
     { { MNEM, ' ', '@', OP (DIR8), ',', '@', OP (R13), '+', 0 } },
     & fmt_dmov2r13pib, { 0xe00 },
     (PTR) & fmt_dmov2r13pib_ops[0],
-    { 0, 0, { 0 } }
+    { 0, 0|A(NOT_IN_DELAY_SLOT), { 0 } }
   },
 /* dmov @$dir10,@-$R15 */
   {
     { { MNEM, ' ', '@', OP (DIR10), ',', '@', '-', OP (R15), 0 } },
     & fmt_dmov2r15pd, { 0xb00 },
     (PTR) & fmt_dmov2r15pd_ops[0],
-    { 0, 0, { 0 } }
+    { 0, 0|A(NOT_IN_DELAY_SLOT), { 0 } }
   },
 /* ldres @$Ri+,$u4 */
   {
     FR30_INSN_LDRES, "ldres", "ldres",
     { { MNEM, ' ', '@', OP (RI), '+', ',', OP (U4), 0 } },
     & fmt_ldres, { 0xbc00 },
-    (PTR) 0,
+    (PTR) & fmt_ldres_ops[0],
     { 0, 0, { 0 } }
   },
 /* stres $u4,@$Ri+ */
     FR30_INSN_STRES, "stres", "stres",
     { { MNEM, ' ', OP (U4), ',', '@', OP (RI), '+', 0 } },
     & fmt_ldres, { 0xbd00 },
-    (PTR) 0,
+    (PTR) & fmt_ldres_ops[0],
     { 0, 0, { 0 } }
   },
 /* copop $u4c,$ccc,$CRj,$CRi */
     { { MNEM, ' ', OP (U4C), ',', OP (CCC), ',', OP (CRJ), ',', OP (CRI), 0 } },
     & fmt_copop, { 0x9fc0 },
     (PTR) 0,
-    { 0, 0, { 0 } }
+    { 0, 0|A(NOT_IN_DELAY_SLOT), { 0 } }
   },
 /* copld $u4c,$ccc,$Rjc,$CRi */
   {
     { { MNEM, ' ', OP (U4C), ',', OP (CCC), ',', OP (RJC), ',', OP (CRI), 0 } },
     & fmt_copld, { 0x9fd0 },
     (PTR) 0,
-    { 0, 0, { 0 } }
+    { 0, 0|A(NOT_IN_DELAY_SLOT), { 0 } }
   },
 /* copst $u4c,$ccc,$CRj,$Ric */
   {
     { { MNEM, ' ', OP (U4C), ',', OP (CCC), ',', OP (CRJ), ',', OP (RIC), 0 } },
     & fmt_copst, { 0x9fe0 },
     (PTR) 0,
-    { 0, 0, { 0 } }
+    { 0, 0|A(NOT_IN_DELAY_SLOT), { 0 } }
   },
 /* copsv $u4c,$ccc,$CRj,$Ric */
   {
     { { MNEM, ' ', OP (U4C), ',', OP (CCC), ',', OP (CRJ), ',', OP (RIC), 0 } },
     & fmt_copst, { 0x9ff0 },
     (PTR) 0,
-    { 0, 0, { 0 } }
+    { 0, 0|A(NOT_IN_DELAY_SLOT), { 0 } }
   },
 /* nop */
   {
     { { MNEM, ' ', '(', OP (REGLIST_LOW_LD), ')', 0 } },
     & fmt_ldm0, { 0x8c00 },
     (PTR) & fmt_ldm0_ops[0],
-    { 0, 0, { 0 } }
+    { 0, 0|A(NOT_IN_DELAY_SLOT), { 0 } }
   },
 /* ldm1 ($reglist_hi_ld) */
   {
     { { MNEM, ' ', '(', OP (REGLIST_HI_LD), ')', 0 } },
     & fmt_ldm1, { 0x8d00 },
     (PTR) & fmt_ldm1_ops[0],
-    { 0, 0, { 0 } }
+    { 0, 0|A(NOT_IN_DELAY_SLOT), { 0 } }
   },
 /* stm0 ($reglist_low_st) */
   {
     { { MNEM, ' ', '(', OP (REGLIST_LOW_ST), ')', 0 } },
     & fmt_stm0, { 0x8e00 },
     (PTR) & fmt_stm0_ops[0],
-    { 0, 0, { 0 } }
+    { 0, 0|A(NOT_IN_DELAY_SLOT), { 0 } }
   },
 /* stm1 ($reglist_hi_st) */
   {
     { { MNEM, ' ', '(', OP (REGLIST_HI_ST), ')', 0 } },
     & fmt_stm1, { 0x8f00 },
     (PTR) & fmt_stm1_ops[0],
-    { 0, 0, { 0 } }
+    { 0, 0|A(NOT_IN_DELAY_SLOT), { 0 } }
   },
 /* enter $u10 */
   {
     { { MNEM, ' ', OP (U10), 0 } },
     & fmt_enter, { 0xf00 },
     (PTR) & fmt_enter_ops[0],
-    { 0, 0, { 0 } }
+    { 0, 0|A(NOT_IN_DELAY_SLOT), { 0 } }
   },
 /* leave */
   {
     { { MNEM, ' ', '@', OP (RJ), ',', OP (RI), 0 } },
     & fmt_xchb, { 0x8a00 },
     (PTR) & fmt_xchb_ops[0],
-    { 0, 0, { 0 } }
+    { 0, 0|A(NOT_IN_DELAY_SLOT), { 0 } }
   },
 };