diff options
Diffstat (limited to 'c/src/lib/libcpu/sh/sh7045/score')
-rw-r--r-- | c/src/lib/libcpu/sh/sh7045/score/cpu_asm.c | 5 | ||||
-rw-r--r-- | c/src/lib/libcpu/sh/sh7045/score/ispsh7045.c | 7 |
2 files changed, 9 insertions, 3 deletions
diff --git a/c/src/lib/libcpu/sh/sh7045/score/cpu_asm.c b/c/src/lib/libcpu/sh/sh7045/score/cpu_asm.c index 6453105bdb..2b5fc6d71d 100644 --- a/c/src/lib/libcpu/sh/sh7045/score/cpu_asm.c +++ b/c/src/lib/libcpu/sh/sh7045/score/cpu_asm.c @@ -81,7 +81,7 @@ unsigned int sh_set_irq_priority( /* * first check for valid interrupt */ - if(( irq > 113) || (_Hardware_isr_Table[irq] == _dummy_isp)) + if(( irq > 156) || (irq < 64) || (_Hardware_isr_Table[irq] == _dummy_isp)) return -1; /* * check for valid irq priority @@ -102,6 +102,9 @@ unsigned int sh_set_irq_priority( case 0: { prioreg = INTC_IPRC; break;} case 1: { prioreg = INTC_IPRD; break;} case 2: { prioreg = INTC_IPRE; break;} + case 3: { prioreg = INTC_IPRF; break;} + case 4: { prioreg = INTC_IPRG; break;} + case 5: { prioreg = INTC_IPRH; break;} default: return -1; } } diff --git a/c/src/lib/libcpu/sh/sh7045/score/ispsh7045.c b/c/src/lib/libcpu/sh/sh7045/score/ispsh7045.c index 44aeaff8f1..85aa9d20e6 100644 --- a/c/src/lib/libcpu/sh/sh7045/score/ispsh7045.c +++ b/c/src/lib/libcpu/sh/sh7045/score/ispsh7045.c @@ -123,9 +123,10 @@ asm (".global _"Str(name)"\n\t" \ " sts.l mach,@-r15 \n\t" \ " sts.l macl,@-r15 \n\t" \ " mov r15,r14 \n\t" \ + " mov.l "Str(name)"_v, r2 \n\t" \ " mov.l "Str(name)"_k, r1\n\t" \ " jsr @r1 \n\t" \ - " mov #"Str(number)", r4\n\t" \ + " mov r2,r4 \n\t" \ " mov r14,r15 \n\t" \ " lds.l @r15+,macl \n\t" \ " lds.l @r15+,mach \n\t" \ @@ -143,7 +144,9 @@ asm (".global _"Str(name)"\n\t" \ " nop \n\t" \ " .align 2 \n\t" \ #name"_k: \n\t" \ - ".long "Str(func)); + ".long "Str(func)"\n\t" \ + #name"_v: \n\t" \ + ".long "Str(number)); /************************************************ * Dummy interrupt service procedure for |