This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Are capability registers used when compiling for normal Morello (without pure-capability) with LLVM?

When compiling code using LLVM in normal mode without pure-capability, I was curious as to why the printf function used capability registers? I found this out when I was trying to use the printf function in EL2 which didn't work and fell over on an instruction using capability registers. I then realised I needed to switch on the 'enable morello instructions' bit for EL2 which is turned off by default in the _start code.

So I have a general question as to why capability registers are used when compiling for normal mode without pure-capability switched on? I'm using Development Studio, with target set to Morello. Under what condition by the compiler does it decide to use these registers?