A data processing apparatus, said data processing apparatus comprising: data processing circuitry for performing data processing operations in response to program code; a plurality of registers; and a data store for storing data, said data store comprising a plurality of regions each region having a secure level, and comprising at least one secure region for storing sensitive data accessible by said data processing circuitry operating in said secure domain and not accessible by said data processing circuitry operating in a less secure domain and a less secure region for storing less secure data; the apparatus being characterised by said data store comprising at least two stacks a secure stack in said secure region and a less secure stack in said less secure region; said data processing circuitry operating in said secure domain when processing program code stored in said secure region and operating in said less secure domain when processing program code stored in said less secure region; wherein said data processing circuitry is configured to determine which stack to store data to, or load data from, in response to said storage location of said program code being executed; and in response to program code stored in a first region calling a function to be executed, said function code being stored in a second region, said second region having a different secure level to said first region, said data processing circuitry is configured to determine which of said first and second region have a lower secure level and when executing said program code and said function code, to access said stack of said region with said lower secure level for function arguments and return data values. data processing circuitry for performing data processing operations in response to program code; a plurality of registers; and a data store for storing data, said data store comprising a plurality of regions each region having a secure level, and comprising at least one secure region for storing sensitive data accessible by said data processing circuitry operating in said secure domain and not accessible by said data processing circuitry operating in a less secure domain and a less secure region for storing less secure data; the apparatus being characterised by said data store comprising at least two stacks a secure stack in said secure region and a less secure stack in said less secure region; said data processing circuitry operating in said secure domain when processing program code stored in said secure region and operating in said less secure domain when processing program code stored in said less secure region; wherein said data processing circuitry is configured to determine which stack to store data to, or load data from, in response to said storage location of said program code being executed; and in response to program code stored in a first region calling a function to be executed, said function code being stored in a second region, said second region having a different secure level to said first region, said data processing circuitry is configured to determine which of said first and second region have a lower secure level and when executing said program code and said function code, to access said stack of said region with said lower secure level for function arguments and return data values.