Opened 9 years ago

Closed 9 years ago

#634 closed defect (fixed)

Do not attempt to flush prefetch buffer on ARM920T

Reported by: Jakub Jermář Owned by: Jiri Svoboda
Priority: major Milestone: 0.7.0
Component: helenos/boot/arm32 Version: mainline
Keywords: ARM920T, ARMv4, gta02 Cc:
Blocker for: Depends on:
See also:

Description

ARMv4 optionally supports a prefetch buffer, but ARM920T does not implement it. Yet, the initialization boot code in boot/arch/arm32/src/asm.S:

        # cp15 isb
        mcr p15, 0, r4, c7, c5, 4
        nop

and the inst_barrier() macro in kernel/arch/arm32/include/arch/barrier.h:

#if defined PROCESSOR_ARCH_armv7_a
...
#elif defined PROCESSOR_ARCH_armv6 | defined KERNEL
...
#define inst_barrier()    CP15ISB_write(0)
#else
...
#define inst_barrier()    asm volatile ("" ::: "memory")
#endif

attempt to flush it.

Note how CP15ISB_write() is used for KERNEL for <ARMv6 (and also how the barriers have possibly wrongly empty bodies in the else branch).

Change History (1)

comment:1 by Jakub Jermář, 9 years ago

Resolution: fixed
Status: newclosed

Fix merged in mainline,2399.

Note: See TracTickets for help on using tickets.