RISC OS Open
Safeguarding the past, present and future of RISC OS for everyone
ROOL
Home | News | Downloads | Bugs | Bounties | Forum | Documents | Photos | Contact us
Account

Previous|Next

  • Tickets
  • » Ticket #460

Ticket #460 (Open)Thu Nov 15 07:30:07 UTC 2018

HAL_IICTransfer and HAL_IICMonitorTransfer; IICStatus_Busy test is not safe

Reported by: Simon Willcocks (1499) Severity: Minor
Part: RISC OS: General Release:
Milestone: RISC OS ROM build complete Status Open

Details by Simon Willcocks (1499):

Very low priority, but for future developments, the entry to the two routines need to use ldrex/strex or swap instructions.

HAL_IICTransfer
; Check for bus 0 – any other is an error
CMP a1, #0
MOVNE a1, #IICStatus_Error ; Return this code if not bus 0
MOVNE pc, lr
; It’s bus 0. Look if we’re busy.
LDR a1, IIC_Status ; 0 > not busy, !0 -> busy
CMP a1, #0
MOVNE a1, #IICStatus_Busy
MOVNE pc,lr
[…] -
interrupt or alternate core access here may allow two threads access to the rest of the routine.
MVN a1, #0 ; Flag us as busy before we go further
STR a1, IIC_Status

  • Comment on, or change status of, this ticket

Previous|Next

Search tickets

Social

Follow us on and

ROOL Store

Buy RISC OS Open merchandise here, including SD cards for Raspberry Pi and more.

Donate! Why?

Help ROOL make things happen – please consider donating!

RISC OS IPR

RISC OS is an Open Source operating system owned by RISC OS Developments Ltd and licensed primarily under the Apache 2.0 license.

Options

  • Tickets
  • New ticket
  • Milestones
  • Subversion: Changesets
  • Subversion: Browse
  • CVS: Revisions
  • CVS: Browse
  • Search

RSS feeds Rss

  • Tickets
  • Everything!
  • More feeds...
Site design © RISC OS Open Limited 2018 except where indicated
The RISC OS Open Collaboa theme is distantly based on the Collaboa default layout

Valid XHTML 1.0  |  Valid CSS

Powered by Collaboa
This site runs on Rails

Hosted by Arachsys