diff -Ncwr utkernel_source.prev/kernel/sysdepend/cpu/h8s2212/cpu_support.S utkernel_source.curr/kernel/sysdepend/cpu/h8s2212/cpu_support.S *** utkernel_source.prev/kernel/sysdepend/cpu/h8s2212/cpu_support.S 2007-10-24 20:57:56.000000000 +0900 --- utkernel_source.curr/kernel/sysdepend/cpu/h8s2212/cpu_support.S 2007-10-24 21:24:00.000000000 +0900 *************** *** 317,331 **** * Do not need to save the temporary register. * The compiler saves the permanent register. * ! * High Address +---------------+ ! * | 5th arg | ! * | 4th arg | ! * | SPC(24bit) | saved by I/F call ! * | SCCR(8bit) | ! * | R0(16bit) | ! * | SPC(24bit) | saved by trapa ! * ISP/SSP => | SCCR(8bit) | ! * Low Address +---------------+ * * Function code is set in R0 */ --- 317,333 ---- * Do not need to save the temporary register. * The compiler saves the permanent register. * ! * High Address +-------------------+ ! * +14 | 5th arg(low) | ! * +12 | 5th arg(high) | ! * +10 | 4th arg(low) | ! * + 8 | 4th arg(high) | ! * + 6 | PC | saved by I/F call ! * + 4 | R0 | ! * + 2 | PC | saved by trapa ! * er7, er5 => + 0 | CCR:xxx | ! * Low Address +-------------------+ ! * <-- 16bit width --> * * Function code is set in R0 */ *************** *** 357,366 **** ble l_nocopy cmp.b #4, r4l ble l_copy4 ! mov.l @(3*4 + 10 + 1*4, er5), er4 // Copy fifth argument mov.l er4, @-er7 l_copy4: ! mov.l @(3*4 + 10, er5), er4 // Copy fourth argument mov.l er4, @-er7 l_nocopy: --- 359,368 ---- ble l_nocopy cmp.b #4, r4l ble l_copy4 ! mov.l @(3*4 + 12, er5), er4 // Copy fifth argument mov.l er4, @-er7 l_copy4: ! mov.l @(3*4 + 8, er5), er4 // Copy fourth argument mov.l er4, @-er7 l_nocopy: *************** *** 392,408 **** l_esvc_function: #if CFN_MAX_SSYID > 0 /* Extended SVC */ ! mov.l @(7*4, er7), er4 // save ret-address(I/F) to ER4 ! mov.l @(4*4, er7), er2 // arg2 ! mov.l er2, @(7*4, er7) ! mov.l er1, er2 // save ER1 (pk_para) to ER2 mov.w r0, r1 // R1 = Function code ! mov.l er2, er0 // restore pk_para to ER0 jsr Csym(knl_svc_ientry) // svc_ientry(pk_para, fncd) - mov.l er4, @(7*4, er7) // restore ret-address(I/F) - bra l_retsvc #else mov.l #E_SYS, er0 --- 394,430 ---- l_esvc_function: #if CFN_MAX_SSYID > 0 + /* + * High Address +-------------------+ + * +34 | 5th arg(low) | + * +32 | 5th arg(high) | + * +30 | 4th arg(low) | + * +28 | 4th arg(high) | + * +26 | 3rd arg(low) | + * +24 | 3rd arg(high) | + * +22 | 2nd arg(low) | + * +20 | 2nd arg(high) | + * +18 | 1st arg(low) | + * pk_para(r1)=> +16 | 1st arg(high) | + * +14 | PC | saved by trapa + * +12 | CCR:xxx | + * +10 | R4 | + * + 8 | E4 | + * + 6 | R5 | + * + 4 | E5 | + * + 2 | R6 | + * er7, er5=> + 0 | E6 | + * Low Address +-------------------+ + * <-- 16bit width --> + * + * Function code is set in R0 + */ /* Extended SVC */ ! mov.w r1, r2 // save R1 (pk_para) to R2 mov.w r0, r1 // R1 = Function code ! mov.w r2, r0 // restore pk_para to R0 jsr Csym(knl_svc_ientry) // svc_ientry(pk_para, fncd) bra l_retsvc #else mov.l #E_SYS, er0