Thanks everyone for your comments.
Jim, I’ll go through exactly the steps I went through and give you exact file names and line numbers.
From the HiFive Unleashed page on the sifive site: “https://www.sifive.com/boards/hifive-unleashed”
I chose the “Freedom U SDK” link, which took me to: “https://github.com/sifive/freedom-u-sdk”
Then I downloaded and unzipped the .zip file: freedom-u-sdk-master.zip
Then I ran “git submodule update --recursive --init” from the command line.
Afaik, this downloaded all the Linux source which is used to build the Linux which is supplied with the HiFive Unleashed. That’s why I thought it was ok to call the bsp code within it, the “Linux bsp”.
I then searched within the Linux project for “hifive” which led me to the file: “HiFive_U-Boot\arch\riscv\cpu\HiFive\cpu.c”
In this file at L 16 I found the struct “hifive_prci_regs”
I then compared it’s contents with the PRCI register map on page 40, section 7.3 of the .pdf FU540-C000-v1.0 and found some differences.
One differences is:
At line 20 of cpu.c there is a register COREPLLOUT. This is at offset 0x8 within the struct. In the register map there is nothing at offset 0x8.
When I looked in cpu.c at the code setting up the core PLL I found this register was set to 0x80000000 at line 56 in the function “arch_cpu_init()”, so clearly it’s important.
Hence I realised there was code being used in the default Linux image which was not described in the Unleashed manual U540-C000-v1.0.pdf
This led me to conclude I didn’t have the latest version of the manual.
So, however many incorrect conclusions I may have made, that’s how I got to where I am now.
Thanks everyone for your help
Andy