ROOL Forum: Recent Posts

Tabs gadget now open source

Mon, 24 Jan 2022 12:21:47 -0000

There is still a Rikslib: include in cmhg.Header

Apart from that it does build with the DDE.

Many thanks.

ArmBook won't shut down

Mon, 24 Jan 2022 11:44:40 -0000

Hi Gavin,

Latest Manjaro kernal updates , dated 18th Jan 2022, seem to have cured the kernal panic reports on my Pinebook and it successfully starts up and shuts down correctly now.

There is a slight odd effect on start up where the screen gives a nice green hue before the main desktop comes on but I can live with that now it switches off correctly :-)

Creating a blog - WordPress

Mon, 24 Jan 2022 11:30:12 -0000

Not bad for some rubbish I threw together over the course of a few weekends. ;-)

Is this rubbish available please – I think I would like to have a go for my French language site. My classmates seem unenthusiastic about my postings to the WhatsApp group, but I’d like somewhere to record my occasional observations.

My free hosting does have PHP, and I have dabbled myself, as you will be aware.

Can't get ethernet connected on rpi400.

Mon, 24 Jan 2022 11:06:29 -0000

@Rob: I’m trying Sprow’s test versions of the module.

Still no luck though, it’s still reporting that the ethernet cable isn’t connected. :-/

Tabs gadget now open source

Mon, 24 Jan 2022 10:17:49 -0000

I’ve just updated the code on github, hopefully the new version will build without needing external stuff.

The dependencies on “glib” have been removed – I’ve included the files from the RISC OS source in Tabs – they are Apache licensed so I think this is OK. This means you don’t have to have the RISC OS sources installed to be able to build Tabs.

Ideally someone will do a proper job on this but this quick fix should allow the module to be built.

Can't get ethernet connected on rpi400.

Sun, 23 Jan 2022 20:48:30 -0000

@Rob: It’s a different PHY chip on this revision of the board so there are issues with the module in the ROM

Can't get ethernet connected on rpi400.

Sun, 23 Jan 2022 20:29:20 -0000

Why are you reloading etherGENETD it in the rom so should be loaded already.
Boot into RISC OS the press F12 and type unpluged , what does it say?
If it is unplugged
Type rmreinit etherGENETD
You will then need to save your CMOS file to make it permanent
Let us know how you go

Getting the address of an assembly veneer

Sun, 23 Jan 2022 20:23:40 -0000

Thank you, Jeffrey. It was the second point. (The code was already code and readonly, though also rel and with a different name but I don’t think those made a difference.)

Declaring it as a function should be obvious, I suppose, and it is now!

Still doesn’t work overall, but at least I get the right address now, so that’s one layer of the onion removed.

Getting the address of an assembly veneer

Sun, 23 Jan 2022 19:15:19 -0000

Norcroft (and I assume GCC, when producing modules) relocates symbols using different methods depending on the type of symbol – i.e. writeable data, read-only data, code, etc.

Code is generally referenced directly from the module body, while writeable data will generate references to the module workspace. I’m not sure offhand how read-only data & writeable code are handled (I think Norcroft has a habit of putting const C variables in the module workspace, even though they don’t really need to be there, and writeable code probably isn’t understood at all since it’s a very unusual thing to begin with)

Things to check:

  1. The assembler veneer is in a read-only code section: AREA |C$$code|, CODE, READONLY
  2. The C code declares it as a function, rather than a variable: extern void driver_handler(void);

Getting the address of an assembly veneer

Sun, 23 Jan 2022 19:02:45 -0000

In ObjAsm you have to explicitly EXPORT each function.

Getting the address of an assembly veneer

Sun, 23 Jan 2022 17:22:23 -0000

I need to put an assembly veneer round a C function because the function needs the value of R11, and the function prologue overwrites R11.

I’ve got an assembly language file that exports the label representing the start of the veneer. I can reference this from the C, but the value I get does not represent the address of the veneer – of course that address is not known until the moment the module is initialised.

I see that David Pilling’s PDumperSP simply references his label and presumably gets the right answer. I don’t understand the discrepancy between his code and mine, and how they work.

Currently I’m using GCC and asasm (I changed over from the DDE because, IIRC, the C couldn’t reference the veneer’s label despite it being GLOBAL).

Any help would be welcome.