clear_page.S 957 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. /*
  2. * Copyright (C) 2012 ARM Ltd.
  3. *
  4. * This program is free software; you can redistribute it and/or modify
  5. * it under the terms of the GNU General Public License version 2 as
  6. * published by the Free Software Foundation.
  7. *
  8. * This program is distributed in the hope that it will be useful,
  9. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  11. * GNU General Public License for more details.
  12. *
  13. * You should have received a copy of the GNU General Public License
  14. * along with this program. If not, see <http://www.gnu.org/licenses/>.
  15. */
  16. #include <linux/linkage.h>
  17. #include <linux/const.h>
  18. #include <asm/assembler.h>
  19. #include <asm/page.h>
  20. /*
  21. * Clear page @dest
  22. *
  23. * Parameters:
  24. * x0 - dest
  25. */
  26. ENTRY(clear_page)
  27. mrs x1, dczid_el0
  28. and w1, w1, #0xf
  29. mov x2, #4
  30. lsl x1, x2, x1
  31. 1: dc zva, x0
  32. add x0, x0, x1
  33. tst x0, #(PAGE_SIZE - 1)
  34. b.ne 1b
  35. ret
  36. ENDPROC(clear_page)