ScreenBlanker module calls OS_Word without X bit on ticker
Charles Ferguson (8243) 427 posts |
Hiya, Simple one; on the ScreenBlanker Ticker handler, it calls OS_Word without the X bit set. For RISC OS 5.27, the trace looks like this: Interrupt triggered (preceding instruction not executed) Entering: Ticker event &fc284db8/&07007c70 {DA 'Extension ROM', module 'ScreenBlanker'} fc284db8: {DA 'Extension ROM', module 'ScreenBlanker'} ==== Begin SWI misuse ==== SWI called without X-bit from non-USR mode: &7 (OS_Word) Registers: r0 = &00000015, r1 = &07007cb3, r2 = &0700df7c, r3 = &000008b4 r4 = &20000093, r5 = &00000000, r6 = &00000000, r7 = &00000000 r8 = &00000000, r9 = &00000000, r10 = &0700df6c, r11 = &04107f2c r12 = &07007c70, sp = &04107ed4, lr = &00000000, pc = &fc284de8 CPSR= &20000013 : SVC-32 ARM fi ae qvCzn SPSR= &60000092 : IRQ-32 ARM fI ae qvCZn Locations: r2 -> [&00000000, &00000000, &00000000, &00000000] r10 -> [&00000000, &00000000, &00000000, &000008b8] r11 -> [&04107f50, &07007ddc, &00000000, &0700d6c8] pc is DA 'Extension ROM', module 'ScreenBlanker' lr is DA 'Zero Page' Recently executed code: ---- Block &fc284db8, 4 instructions ---- fc284db8: {DA 'Extension ROM', module 'ScreenBlanker'} fc284db8: PUSH {r0, r1, r2, r3, r4, r5, lr} fc284dbc: LDR lr, [r12, #&14] fc284dc0: TEQ lr, #2 fc284dc4: POPEQ {r0, r1, r2, r3, r4, r5, pc} ---- Block &fc284dc8, 2 instructions ---- fc284dc8: MRS r4, apsr fc284dcc: MSR cpsr_c, #&13 ; #SVC-32 ARM fi ae qvczn ---- Block &fc284dd0, 6 instructions ---- fc284dd0: STR lr, [sp, #-4]! fc284dd4: MOV r0, #4 fc284dd8: ADD r1, r12, #&43 fc284ddc: STRB r0, [r1] fc284de0: MOV r0, #&15 ; #21 fc284de4: SWI OS_Word ==== End SWI misuse ==== *ROMModules line: Extension ROM 1 : 57 : fc2846bc : Active : 2.34 : ScreenBlanker |
Charles Ferguson (8243) 427 posts |
Testing with RISC OS 5.31 RC3 this bug still remains: ==== Begin SWI misuse ==== SWI called without X-bit from non-USR mode: &7 (OS_Word) Registers: r0 = &00000015, r1 = &0700b167, r2 = &07012a44, r3 = &00000240 r4 = &20000093, r5 = &fc13b308, r6 = &0701302c, r7 = &fc13b308 r8 = &0aea6e60, r9 = &0700b2cc, r10 = &04100230, r11 = &04107ed8 r12 = &0700b124, sp = &04107e6c, lr = &00000000, pc = &fc286b08 CPSR= &20000013 : SVC-32 ARM fi ae qvCzn SPSR= &20000092 : IRQ-32 ARM fI ae qvCzn Locations: r2 -> [&000002b0, &0000008e, &fc0ec4b4, &0000008f] in DA 'Module area' r5 -> [&0074743a, &e1a0c00d, &e92ddbf3, &e24cb004] in DA 'Extension ROM', module 'SharedCLibrary' r6 -> [&00000000, &00000000, &00000000, &00000000] in DA 'Module area', module 'ShellCLI%Base' workspace r7 -> [&0074743a, &e1a0c00d, &e92ddbf3, &e24cb004] in DA 'Extension ROM', module 'SharedCLibrary' r9 -> [&07012cf4, &00000000, &00000000, &00000010] in DA 'Module area', module 'ShellCLI%Base' private word pointer r10 -> [&00000000, &00000000, &00000000, &00000000] in DA 'SVC Stack' r11 -> [&fc139ad4, &07003978, &07003978, &fc08452e] in DA 'SVC Stack' r12 -> [&00000000, &00000000, &00000000, &00000000] in DA 'Module area', module 'ScreenBlanker%Base' workspace pc is DA 'Extension ROM', module 'ScreenBlanker' lr is DA 'Zero Page' Recently executed code: ---- Block &fc286ad8, 4 instructions ---- fc286ad8: {DA 'Extension ROM', module 'ScreenBlanker'} fc286ad8: PUSH {r0, r1, r2, r3, r4, r5, lr} fc286adc: LDR lr, [r12, #&14] fc286ae0: TEQ lr, #2 fc286ae4: POPEQ {r0, r1, r2, r3, r4, r5, pc} ---- Block &fc286ae8, 2 instructions ---- fc286ae8: MRS r4, apsr fc286aec: MSR cpsr_c, #&13 ; #SVC-32 ARM fi -- ----- ---- Block &fc286af0, 6 instructions ---- fc286af0: STR lr, [sp, #-4]! fc286af4: MOV r0, #4 fc286af8: ADD r1, r12, #&43 fc286afc: STRB r0, [r1] fc286b00: MOV r0, #&15 ; #21 fc286b04: SWI OS_Word ==== End SWI misuse ==== |