Article View: comp.sys.acorn.tech
Article #213ARM3 instructions.
From: Brian May#2
Date: Thu, 03 Sep 1992 14:36
Date: Thu, 03 Sep 1992 14:36
53 lines
3117 bytes
3117 bytes
I don't have an Archie myself but have used them quite a lot in the past. I was recently mucking about with a friend's A5000, trying to find the new instructions that turned the cache on and off. I found them, they were co-processor instructions with the processor itself as (I think) number 0. Anyway, as I was disassembling away I found a new instruction (well, I had never come across it before). It was 'SWP' and I imagine it swaps registers with registers, maybe with memory as well? I can't remember. If it does reg<->mem as well, and is uninterruptable, perhaps it is for use as a semaphore in multi-processor systems? I worked out how it fitted into the instruction set, it is where an illegal instruction was previously. I think it might have been due to only four bits for a register shift, five bits for an immediate - hence an extra bit which would have to be 0 for a normal instruction. I can't really explain this very coherently but someone will know what I mean! I then wrote a program to generate all possible versions of this instruction, but I didn't print them out... Anyway, it didn't help me work out what they actually did (if I had my own A5000 I would spend some more time on it, but I haven't and I'm just interested) Of course I won't be the first person to notice this so I wondered, could someone post some info on this, and also on the co-processor instructions relevant to the CPU itself? Another thing - RiscOs (being quite well designed as it is) has certain ways of doing things which leads me to ask the question: When I do ... *memoryi 03800000 (Is it *memoryi? Is 03800000 ROM? Do I need my own Archie?) ... and a coprocessor instruction is found, which module decodes it? Now if I wrote Risc-Os, I would get the ARM3 support module to decode the instructions, and I would get a floating point emulator to decode the FPU instructions. That way, it's nicely modular and extensible. Now, I didn't write Risc-Os, and as I remember, the FPU decoding is done in the debugger. I looked through the ARM3 support module and found some text relating to the cache instructions, but not all of them. I couldn't find any in the debugger. If I sound a little vague, please understand that I didn't have all day to sort this out, and it was two months ago! Andrew. ps. Nothing to do with my post, but just to pour petrol on the flames, I'm gonna buy a 486 PC cos I can get more power for less money, and the screen doesn't blank when I access the disk drive :-) So if Acorn are listening (and I think they are!) I think you have a well-defined problem on your hands. I wonder if someone could write RiscOs for a PC? Or an Archimedes emulator, now that would be amusing...
Technical Details
Message-ID:
<4422@gos.ukc.ac.uk>Path:
arc1-ca.pugleaf.net!sparky!uunet!mcsun!uknet!harrier.ukc.ac.uk!gos.ukc.ac.uk!amsh1Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!sparky!uunet!mcsun!uknet!harrier.ukc.ac.uk!gos.ukc.ac.uk!amsh1 From: amsh1@ukc.ac.uk (Brian May#2) Newsgroups: comp.sys.acorn.tech Subject: ARM3 instructions. Message-ID: <4422@gos.ukc.ac.uk> Date: 3 Sep 92 14:36:21 GMT Sender: amsh1@ukc.ac.uk Organization: Computing Lab, University of Kent at Canterbury, UK. Lines: 53