2009-08-24 3 views
3

J'écris une routine pour vider le cache de données du PowerPC750 avant de l'éteindre lorsque j'utilise le mode réécriture.Essayer de vider le cache de données PowerPC 750

J'ai trouvé le IBM application note sur la programmation des caches qui comprend une routine de vidage, mais je suis confus par l'exemple de code. Je pense que ce pourrait être une erreur dans l'exemple mais j'ai pensé vérifier. Dans la liste 2, il y a deux boucles qui incluent et l'instruction de "passer au bloc suivant". Le passage au bloc suivant est obtenu en ajoutant 0x10 à l'adresse actuelle. Je m'attendais à ce que ce soit un ajout de 0x20 (32) puisque je pense que les lignes de cache ont une largeur de 32 octets. Quelqu'un peut-il confirmer ou rejeter ma pensée?!

+1

Je m'attendais à ce que ce soit 0x20 aussi bien ... vous pourriez envoyer un courriel à IBM et demander si c'est une erreur? – Goz

+2

Linkrot 20120826: https://www-01.ibm.com/chips/techlib/techlib.nsf/techdocs/0DD2C54EDDF7EB9287256F3F00592C64/$file/PPC750GXFX_cache.pdf –

Répondre

4

Suite à la confirmation d'autres utilisateurs SO, j'ai envoyé un courrier électronique à l'auteur de la note d'application. Il a convenu que 0x10 devrait être 0x20 et pourrait mettre à jour la note à l'avenir.

4

Vous semblez avoir raison. Avec leurs calculs indiqué en haut de la liste:

! CTR - the number of data blocks needed to fill the cache - save it in r3 
!  32K (size of cache)/32 (bytes per block) = 0x400 

Ils ont toujours mis le registre de comptage à 0x400 et il indique qu'il ya 32bytes par bloc à quelques endroits dans ce document. Donc, après ce calcul, vous devrez incrémenter 0x20 et non 0x10. Comme avec n'importe quel assemblage, vous devriez certainement le tester dans les deux cas au cas où il y aurait des errata étranges de silicium.

Questions connexes