(EN) A data processing apparatus and a method for processing data are disclosed. The data processing apparatus comprises: processing circuitry to process instructions; and trace circuitry comprising: a trace buffer; write pointer storage to store a write pointer to indicate a current location in the trace buffer; and a call depth counter to indicate a number of events, wherein the trace circuitry is configured to generate trace data indicative of processing activities of the processing circuitry, and in response to a first event to: modify the call depth counter in a first direction, store first trace data indicative of the first event in the trace buffer at the current location, and modify the write pointer to point to a next location in the trace buffer; in response to a second event, when the call depth counter is not equal to a threshold call depth, to: modify the call depth counter in a second direction and modify the write pointer to point to a previous location in the trace buffer; and in response to the second event, when the call depth counter is equal to the threshold call depth, to store second trace data indicative of the second event in the trace buffer at the current location.
(FR) La présente invention concerne un appareil de traitement de données et un procédé pour traiter des données. L'appareil de traitement de données comprend : une circuiterie de traitement pour traiter des instructions ; et une circuiterie de trace comprenant : une mémoire tampon de trace ; un dispositif de stockage de pointeur d'écriture pour stocker un pointeur d'écriture afin d'indiquer un emplacement actuel dans la mémoire tampon de trace ; et un compteur de profondeur d'appel pour indiquer un nombre d'événements, la circuiterie de trace étant configurée pour générer des données de trace indicatives d'activités de traitement de la circuiterie de traitement, et, en réponse à un premier événement, pour : modifier le compteur de profondeur d'appel dans une première direction, stocker des premières données de trace indicatives du premier événement dans la mémoire tampon de trace à l'emplacement actuel, et modifier le pointeur d'écriture pour indiquer un emplacement suivant dans la mémoire tampon de trace ; en réponse à un second événement, lorsque le compteur de profondeur d'appel n'est pas égal à une profondeur d'appel de seuil, pour : modifier le compteur de profondeur d'appel dans une seconde direction et modifier le pointeur d'écriture pour pointer vers un emplacement précédent dans la mémoire tampon de trace ; et, en réponse au second événement, lorsque le compteur de profondeur d'appel est égal à la profondeur d'appel de seuil, pour stocker des secondes données de trace indicatives du second événement dans la mémoire tampon de trace à l'emplacement actuel.